SlideShare a Scribd company logo
1 of 36
Going Open Source
with Small Teams
Jamie Thomas
Director of Software Development – VC3
Co-Founder - Cognito Forms
Agenda
Using Open Source
 When and why
 Licensing considerations
Creating Open Source
 When and why
 Contribution, not disruption
 Evangelism and community
building
Case Study 1
 Afterthought – a post
compilation code
weaver
Case Study 2
 Exo – a comprehensive
platform for model-
centric rules-based web
development
Deep Dive Demo
Using Open Source
Use it intentionally, not on accident
When
Always an option
Always consider open source solutions
when tackling both new and existing
technology problems.
Remember that open source ?= good
source, and in many cases commercial
closed source or custom development is
still the better option.
Why
Time is money
Open source software that sufficiently
addresses a core need can save
significant time both during initial
development and ongoing maintenance.
Good open source technologies are written
by subject matter experts.
Licensing
One important detail
Make sure the open source software is
licensed in a way that makes sense for
your business.
GPL = Open with Strings
LGPL, MIT, etc. = Open without Strings
Maintain copyright and license notices and
keep a list of what you use.
Stuff We Use
Just a taste of the dozens of open source projects and code snippets we leverage daily.
Electronic Signature
TinyMCE HTML Editor
DOM Manipulator
Spectrum Color Picker
Web
Framework
Why We Don’t Use More
We have travelled a long way through uncharted seas.
For those that come behind us the way will always be easier.
Creating Open Source
Create what does not exist, and dare to share
When
Rarely an option
Unlike the use of open source software,
there is rarely a compelling reason for a
small team with deadlines to create open
source software.
However, when your team has something
special to share, seize the moment!
Why
Something unique and
yet not central to the
core business
Creating open source software changes
mindsets, because you are sharing with the
world, not just your cubemates.
Every team occasionally solves a new
problem or an old problem in a unique way—
give this as a gift back to the open source
community.
Why Not
Some things must be
protected at all cost
Do not accidentally give away key
business secrets.
Do not share junk. It should be your best
work, not the stuff that did not make the
cut.
Contribute, not Disrupt
Figure out how to share your work without disrupting the team and core objectives.
How we
prevented
distruption
When we decided to start contributing our
work as open source, we selected GitHub as
the public repository.
However, our entire team heavily uses
Microsoft TFS, so we developed a tool that
automatically promotes check-ins to TFS up
to GitHub, including all details.
Automation is key
Building a Community is Hard Work!
Failure is hard, but success is harder!
Case Study 1
Afterthought
Afterthought
An open source .NET compile-time code amender
What is it?
A big time-saver
Afterthought allows .NET developers to
declaratively describe how to mutate
compiled code to add additional behavior
through IL injection and weaving.
How does it work?
Fluent API for describing how to amend compiled .NET assemblies
Who uses it
and why?
Afterthought leverages Microsoft’s open source
CCI libraries (now part of the Roslyn compiler)
to perform similar tasks as PostSharp.
VC3 uses Afterthought for almost all projects to
support code-first pattern-based development.
Thousands of community users use
Afterthought as a free alternative to PostSharp,
which costs $500 per developer.
Evangelism
Almost none
We decided to create Afterthought as an
open source alternative to PostSharp to
avoid recurring upgrade expenses for
essential technology.
We announced Afterthought and posted
it to GitHub and Nuget and had almost
an immediate following.
Community Engagement
After months of actively supporting our community, we finally decided that we had to focus on
our core products over developing features we did not actually need to support the open
source community.
Future
Plans
We know Afterthought meets a need.
We plan to release support for Visual
Studio 2015 soon, including an updated
Nuget package.
Long term, we plan to convert
Afterthought into a Roslyn extension.
Case Study 2
Exo
What is it?
Exo is a server-side model-abstraction layer, a server-side rules engine,
and a client-side model-centric rules-based web framework.
How does it
work?
Simply too much to
describe in a single
slide.
ExoModel provides an abstract, meta-
data aware, wrapper of a concrete
instance model. It could wrap EF
objects, POCO’s or even dynamic types.
ExoRule is an powerful event-driven
model-based rules engine.
ExoWeb brings all of this awesomeness
to the browser.
Who uses it
and why?
We use Exo extensively in all of our
products and many of our consulting
engagements.
Outside of VC3, no other organization
currently uses Exo (that we know of).
Evangelism
Significant effort, but to
no avail…
Unlike Afterthought, which solves a small
problem and took off like wildfire, Exo is a
sophisticated framework.
We created a dedicated website for Exo,
and even created a demonstration app with
step-by-step instructions.
Our conclusion is that successful open
source projects solve small defined
problems and are easy to search for.
Future
Plans
One day…
The technologies in Exo are downright
amazing, both for .NET and JavaScript
developers (but especially for both
together).
We want to eventually break our
dependency on ASP.NET AJAX and
move to something like Angular for
templating, thus providing a clearer path
for user adoption.
Deep Dive Demo
Cognito Forms Calculations
Christmas Tree Order Form
Model-based calculations and rules highlight the power of our Exo framework.
Under the
Hood
Sometimes it is hard to
believe it is even
possible that it works!
Calculations entered in Cognito Forms are sent to
the server.
The server builds the dynamic model (ExoModel)
from the form definition.
The expression parser builds an expression tree
while supporting both intellisense and expression
validation.
The expressions dynamically compile and execute
natively on the server as rules (ExoRule) and
ExoWeb translates them to JavaScript to run on the
client.
JSON
Meta Data
"BulkDiscount": {
"type": "Number",
"isPersisted": false,
"isCalculated": true,
"index": 11,
"format": "C",
"label": "Bulk Discount",
"rules": {
"calculated": {
"onChangeOf": ["ChristmasTrees{Height_Amount,Lights_Amount}"],
"calculate": "function(){var result = (((this ? this.get('ChristmasTrees') : null).map(function(p0) {return
(((p0 ? p0.get('Height_Amount') : null) || 0) + ((p0 ? p0.get('Lights_Amount') : null) || 0)); }, this).reduce(function
(p,c) { return p + c; }, 0) > 200) ? ((this ? this.get('ChristmasTrees') : null).map(function(p1) {return (((p1 ?
p1.get('Height_Amount') : null) || 0) + ((p1 ? p1.get('Lights_Amount') : null) || 0)); }, this).reduce(function (p,c) {
return p + c; }, 0) * -0.2) : 0);return isFinite(result) ? result : null; }.call(this)"
}
}
}
A simple property
definition for ExoModel
Calculation Conversion
This
=ChristmasTrees.Sum(Height_Amount + Lights_Amount) > 200 ?
ChristmasTrees.Sum(Height_Amount + Lights_Amount) * -0.2 : 0
Becomes
(((this ? this.get('ChristmasTrees') : null).map(function(p0) {return (((p0 ?
p0.get('Height_Amount') : null) || 0) + ((p0 ? p0.get('Lights_Amount') : null) || 0)); },
this).reduce(function (p,c) { return p + c; }, 0) > 200) ? ((this ?
this.get('ChristmasTrees') : null).map(function(p1) {return (((p1 ?
p1.get('Height_Amount') : null) || 0) + ((p1 ? p1.get('Lights_Amount') : null) || 0)); },
this).reduce(function (p,c) { return p + c; }, 0) * -0.2) : 0)
Millions use
Exo
We just had to be
sneaky about it!
Earlier I stated that only VC3 used Exo—that was a
half truth.
As you can see, millions use Cognito Forms either to
build or fill out custom online forms that leverage
almost every feature of Exo, including dynamic
modelling, advanced rules, expression processing,
client templating, and rich validation.
Even if you efforts to share your projects go
unnoticed, do not loose faith in the benefits of
trying—it is definitely worth the investment!
Conclusion
Any questions?
As in the case of Cognito Forms, enabling
technologies can be open sourced without
jeopardizing the success of an
organization’s core business.
Find champions within your team with a
passion to contribute and empower them to
evangelize within your team and engage
with the world.

More Related Content

Viewers also liked

waterverlies in Malawi v2
waterverlies in Malawi v2waterverlies in Malawi v2
waterverlies in Malawi v2Robin Michiels
 
St58 q specification-www.ttbvs.com
St58 q specification-www.ttbvs.comSt58 q specification-www.ttbvs.com
St58 q specification-www.ttbvs.comTTBVS
 
Imagination Lab Norwood
Imagination Lab NorwoodImagination Lab Norwood
Imagination Lab NorwoodAmy Cattrell
 
Hum2230 slide show
Hum2230 slide showHum2230 slide show
Hum2230 slide showAjm213
 
98 c+ specification- www.ttbvs.com
98 c+ specification- www.ttbvs.com98 c+ specification- www.ttbvs.com
98 c+ specification- www.ttbvs.comTTBVS
 
Pce01 specification- www.ttbvs.com
Pce01 specification- www.ttbvs.comPce01 specification- www.ttbvs.com
Pce01 specification- www.ttbvs.comTTBVS
 

Viewers also liked (6)

waterverlies in Malawi v2
waterverlies in Malawi v2waterverlies in Malawi v2
waterverlies in Malawi v2
 
St58 q specification-www.ttbvs.com
St58 q specification-www.ttbvs.comSt58 q specification-www.ttbvs.com
St58 q specification-www.ttbvs.com
 
Imagination Lab Norwood
Imagination Lab NorwoodImagination Lab Norwood
Imagination Lab Norwood
 
Hum2230 slide show
Hum2230 slide showHum2230 slide show
Hum2230 slide show
 
98 c+ specification- www.ttbvs.com
98 c+ specification- www.ttbvs.com98 c+ specification- www.ttbvs.com
98 c+ specification- www.ttbvs.com
 
Pce01 specification- www.ttbvs.com
Pce01 specification- www.ttbvs.comPce01 specification- www.ttbvs.com
Pce01 specification- www.ttbvs.com
 

Similar to Going open source with small teams

Open frameworks 101_fitc
Open frameworks 101_fitcOpen frameworks 101_fitc
Open frameworks 101_fitcbenDesigning
 
Introduction to Google App Engine with Python
Introduction to Google App Engine with PythonIntroduction to Google App Engine with Python
Introduction to Google App Engine with PythonBrian Lyttle
 
How Azure helps to build better business processes and customer experiences w...
How Azure helps to build better business processes and customer experiences w...How Azure helps to build better business processes and customer experiences w...
How Azure helps to build better business processes and customer experiences w...Maxim Salnikov
 
Hacking the Kinect with GAFFTA Day 1
Hacking the Kinect with GAFFTA Day 1Hacking the Kinect with GAFFTA Day 1
Hacking the Kinect with GAFFTA Day 1benDesigning
 
Lotusphere 2007 AD507 Leveraging the Power of Object Oriented Programming in ...
Lotusphere 2007 AD507 Leveraging the Power of Object Oriented Programming in ...Lotusphere 2007 AD507 Leveraging the Power of Object Oriented Programming in ...
Lotusphere 2007 AD507 Leveraging the Power of Object Oriented Programming in ...Bill Buchan
 
Building an Open Source iOS app: lessons learned
Building an Open Source iOS app: lessons learnedBuilding an Open Source iOS app: lessons learned
Building an Open Source iOS app: lessons learnedWojciech Koszek
 
When e-commerce meets Symfony
When e-commerce meets SymfonyWhen e-commerce meets Symfony
When e-commerce meets SymfonyMarc Morera
 
EclipseCon 2016 - OCCIware : one Cloud API to rule them all
EclipseCon 2016 - OCCIware : one Cloud API to rule them allEclipseCon 2016 - OCCIware : one Cloud API to rule them all
EclipseCon 2016 - OCCIware : one Cloud API to rule them allMarc Dutoo
 
OCCIware Project at EclipseCon France 2016, by Marc Dutoo, Open Wide
OCCIware Project at EclipseCon France 2016, by Marc Dutoo, Open WideOCCIware Project at EclipseCon France 2016, by Marc Dutoo, Open Wide
OCCIware Project at EclipseCon France 2016, by Marc Dutoo, Open WideOCCIware
 
German introduction to sp framework
German   introduction to sp frameworkGerman   introduction to sp framework
German introduction to sp frameworkBob German
 
Bluemix Paris Meetup - Optimization on Cloud (DOcloud) - 14 octobre 2015
Bluemix Paris Meetup -  Optimization on Cloud (DOcloud) - 14 octobre 2015Bluemix Paris Meetup -  Optimization on Cloud (DOcloud) - 14 octobre 2015
Bluemix Paris Meetup - Optimization on Cloud (DOcloud) - 14 octobre 2015IBM France Lab
 
OpenWhisk by Example - Auto Retweeting Example in Python
OpenWhisk by Example - Auto Retweeting Example in PythonOpenWhisk by Example - Auto Retweeting Example in Python
OpenWhisk by Example - Auto Retweeting Example in PythonCodeOps Technologies LLP
 
Intro To Spring Python
Intro To Spring PythonIntro To Spring Python
Intro To Spring Pythongturnquist
 
Plug yourself in and your app will never be the same (1 hr edition)
Plug yourself in and your app will never be the same (1 hr edition)Plug yourself in and your app will never be the same (1 hr edition)
Plug yourself in and your app will never be the same (1 hr edition)Mikkel Flindt Heisterberg
 
Enterprise PHP (PHP London Conference 2008)
Enterprise PHP (PHP London Conference 2008)Enterprise PHP (PHP London Conference 2008)
Enterprise PHP (PHP London Conference 2008)Ivo Jansch
 
Advanced Virtual Assistant Based on Speech Processing Oriented Technology on ...
Advanced Virtual Assistant Based on Speech Processing Oriented Technology on ...Advanced Virtual Assistant Based on Speech Processing Oriented Technology on ...
Advanced Virtual Assistant Based on Speech Processing Oriented Technology on ...ijtsrd
 

Similar to Going open source with small teams (20)

Open frameworks 101_fitc
Open frameworks 101_fitcOpen frameworks 101_fitc
Open frameworks 101_fitc
 
Introduction to Google App Engine with Python
Introduction to Google App Engine with PythonIntroduction to Google App Engine with Python
Introduction to Google App Engine with Python
 
How Azure helps to build better business processes and customer experiences w...
How Azure helps to build better business processes and customer experiences w...How Azure helps to build better business processes and customer experiences w...
How Azure helps to build better business processes and customer experiences w...
 
Hacking the Kinect with GAFFTA Day 1
Hacking the Kinect with GAFFTA Day 1Hacking the Kinect with GAFFTA Day 1
Hacking the Kinect with GAFFTA Day 1
 
Lotusphere 2007 AD507 Leveraging the Power of Object Oriented Programming in ...
Lotusphere 2007 AD507 Leveraging the Power of Object Oriented Programming in ...Lotusphere 2007 AD507 Leveraging the Power of Object Oriented Programming in ...
Lotusphere 2007 AD507 Leveraging the Power of Object Oriented Programming in ...
 
Fewd week4 slides
Fewd week4 slidesFewd week4 slides
Fewd week4 slides
 
Building an Open Source iOS app: lessons learned
Building an Open Source iOS app: lessons learnedBuilding an Open Source iOS app: lessons learned
Building an Open Source iOS app: lessons learned
 
When e-commerce meets Symfony
When e-commerce meets SymfonyWhen e-commerce meets Symfony
When e-commerce meets Symfony
 
EclipseCon 2016 - OCCIware : one Cloud API to rule them all
EclipseCon 2016 - OCCIware : one Cloud API to rule them allEclipseCon 2016 - OCCIware : one Cloud API to rule them all
EclipseCon 2016 - OCCIware : one Cloud API to rule them all
 
OCCIware Project at EclipseCon France 2016, by Marc Dutoo, Open Wide
OCCIware Project at EclipseCon France 2016, by Marc Dutoo, Open WideOCCIware Project at EclipseCon France 2016, by Marc Dutoo, Open Wide
OCCIware Project at EclipseCon France 2016, by Marc Dutoo, Open Wide
 
German introduction to sp framework
German   introduction to sp frameworkGerman   introduction to sp framework
German introduction to sp framework
 
Bluemix Paris Meetup - Optimization on Cloud (DOcloud) - 14 octobre 2015
Bluemix Paris Meetup -  Optimization on Cloud (DOcloud) - 14 octobre 2015Bluemix Paris Meetup -  Optimization on Cloud (DOcloud) - 14 octobre 2015
Bluemix Paris Meetup - Optimization on Cloud (DOcloud) - 14 octobre 2015
 
OpenWhisk by Example - Auto Retweeting Example in Python
OpenWhisk by Example - Auto Retweeting Example in PythonOpenWhisk by Example - Auto Retweeting Example in Python
OpenWhisk by Example - Auto Retweeting Example in Python
 
From open source labs to ceo methods and advice by sysfera
From open source labs to ceo methods and advice by sysferaFrom open source labs to ceo methods and advice by sysfera
From open source labs to ceo methods and advice by sysfera
 
Raising the Bar
Raising the BarRaising the Bar
Raising the Bar
 
Intro To Spring Python
Intro To Spring PythonIntro To Spring Python
Intro To Spring Python
 
Plug yourself in and your app will never be the same (1 hr edition)
Plug yourself in and your app will never be the same (1 hr edition)Plug yourself in and your app will never be the same (1 hr edition)
Plug yourself in and your app will never be the same (1 hr edition)
 
Enterprise PHP (PHP London Conference 2008)
Enterprise PHP (PHP London Conference 2008)Enterprise PHP (PHP London Conference 2008)
Enterprise PHP (PHP London Conference 2008)
 
Tdd is not about testing
Tdd is not about testingTdd is not about testing
Tdd is not about testing
 
Advanced Virtual Assistant Based on Speech Processing Oriented Technology on ...
Advanced Virtual Assistant Based on Speech Processing Oriented Technology on ...Advanced Virtual Assistant Based on Speech Processing Oriented Technology on ...
Advanced Virtual Assistant Based on Speech Processing Oriented Technology on ...
 

Recently uploaded

WSO2Con204 - Hard Rock Presentation - Keynote
WSO2Con204 - Hard Rock Presentation - KeynoteWSO2Con204 - Hard Rock Presentation - Keynote
WSO2Con204 - Hard Rock Presentation - KeynoteWSO2
 
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...Health
 
%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein
%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein
%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfonteinmasabamasaba
 
%+27788225528 love spells in Knoxville Psychic Readings, Attraction spells,Br...
%+27788225528 love spells in Knoxville Psychic Readings, Attraction spells,Br...%+27788225528 love spells in Knoxville Psychic Readings, Attraction spells,Br...
%+27788225528 love spells in Knoxville Psychic Readings, Attraction spells,Br...masabamasaba
 
WSO2CON 2024 - Building the API First Enterprise – Running an API Program, fr...
WSO2CON 2024 - Building the API First Enterprise – Running an API Program, fr...WSO2CON 2024 - Building the API First Enterprise – Running an API Program, fr...
WSO2CON 2024 - Building the API First Enterprise – Running an API Program, fr...WSO2
 
%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...
%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...
%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...masabamasaba
 
WSO2CON 2024 - How to Run a Security Program
WSO2CON 2024 - How to Run a Security ProgramWSO2CON 2024 - How to Run a Security Program
WSO2CON 2024 - How to Run a Security ProgramWSO2
 
Crypto Cloud Review - How To Earn Up To $500 Per DAY Of Bitcoin 100% On AutoP...
Crypto Cloud Review - How To Earn Up To $500 Per DAY Of Bitcoin 100% On AutoP...Crypto Cloud Review - How To Earn Up To $500 Per DAY Of Bitcoin 100% On AutoP...
Crypto Cloud Review - How To Earn Up To $500 Per DAY Of Bitcoin 100% On AutoP...SelfMade bd
 
Announcing Codolex 2.0 from GDK Software
Announcing Codolex 2.0 from GDK SoftwareAnnouncing Codolex 2.0 from GDK Software
Announcing Codolex 2.0 from GDK SoftwareJim McKeeth
 
WSO2Con2024 - From Code To Cloud: Fast Track Your Cloud Native Journey with C...
WSO2Con2024 - From Code To Cloud: Fast Track Your Cloud Native Journey with C...WSO2Con2024 - From Code To Cloud: Fast Track Your Cloud Native Journey with C...
WSO2Con2024 - From Code To Cloud: Fast Track Your Cloud Native Journey with C...WSO2
 
%in tembisa+277-882-255-28 abortion pills for sale in tembisa
%in tembisa+277-882-255-28 abortion pills for sale in tembisa%in tembisa+277-882-255-28 abortion pills for sale in tembisa
%in tembisa+277-882-255-28 abortion pills for sale in tembisamasabamasaba
 
%+27788225528 love spells in Boston Psychic Readings, Attraction spells,Bring...
%+27788225528 love spells in Boston Psychic Readings, Attraction spells,Bring...%+27788225528 love spells in Boston Psychic Readings, Attraction spells,Bring...
%+27788225528 love spells in Boston Psychic Readings, Attraction spells,Bring...masabamasaba
 
Artyushina_Guest lecture_YorkU CS May 2024.pptx
Artyushina_Guest lecture_YorkU CS May 2024.pptxArtyushina_Guest lecture_YorkU CS May 2024.pptx
Artyushina_Guest lecture_YorkU CS May 2024.pptxAnnaArtyushina1
 
MarTech Trend 2024 Book : Marketing Technology Trends (2024 Edition) How Data...
MarTech Trend 2024 Book : Marketing Technology Trends (2024 Edition) How Data...MarTech Trend 2024 Book : Marketing Technology Trends (2024 Edition) How Data...
MarTech Trend 2024 Book : Marketing Technology Trends (2024 Edition) How Data...Jittipong Loespradit
 
What Goes Wrong with Language Definitions and How to Improve the Situation
What Goes Wrong with Language Definitions and How to Improve the SituationWhat Goes Wrong with Language Definitions and How to Improve the Situation
What Goes Wrong with Language Definitions and How to Improve the SituationJuha-Pekka Tolvanen
 
%in ivory park+277-882-255-28 abortion pills for sale in ivory park
%in ivory park+277-882-255-28 abortion pills for sale in ivory park %in ivory park+277-882-255-28 abortion pills for sale in ivory park
%in ivory park+277-882-255-28 abortion pills for sale in ivory park masabamasaba
 
VTU technical seminar 8Th Sem on Scikit-learn
VTU technical seminar 8Th Sem on Scikit-learnVTU technical seminar 8Th Sem on Scikit-learn
VTU technical seminar 8Th Sem on Scikit-learnAmarnathKambale
 
OpenChain - The Ramifications of ISO/IEC 5230 and ISO/IEC 18974 for Legal Pro...
OpenChain - The Ramifications of ISO/IEC 5230 and ISO/IEC 18974 for Legal Pro...OpenChain - The Ramifications of ISO/IEC 5230 and ISO/IEC 18974 for Legal Pro...
OpenChain - The Ramifications of ISO/IEC 5230 and ISO/IEC 18974 for Legal Pro...Shane Coughlan
 
%in Bahrain+277-882-255-28 abortion pills for sale in Bahrain
%in Bahrain+277-882-255-28 abortion pills for sale in Bahrain%in Bahrain+277-882-255-28 abortion pills for sale in Bahrain
%in Bahrain+277-882-255-28 abortion pills for sale in Bahrainmasabamasaba
 

Recently uploaded (20)

WSO2Con204 - Hard Rock Presentation - Keynote
WSO2Con204 - Hard Rock Presentation - KeynoteWSO2Con204 - Hard Rock Presentation - Keynote
WSO2Con204 - Hard Rock Presentation - Keynote
 
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
 
Abortion Pill Prices Tembisa [(+27832195400*)] 🏥 Women's Abortion Clinic in T...
Abortion Pill Prices Tembisa [(+27832195400*)] 🏥 Women's Abortion Clinic in T...Abortion Pill Prices Tembisa [(+27832195400*)] 🏥 Women's Abortion Clinic in T...
Abortion Pill Prices Tembisa [(+27832195400*)] 🏥 Women's Abortion Clinic in T...
 
%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein
%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein
%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein
 
%+27788225528 love spells in Knoxville Psychic Readings, Attraction spells,Br...
%+27788225528 love spells in Knoxville Psychic Readings, Attraction spells,Br...%+27788225528 love spells in Knoxville Psychic Readings, Attraction spells,Br...
%+27788225528 love spells in Knoxville Psychic Readings, Attraction spells,Br...
 
WSO2CON 2024 - Building the API First Enterprise – Running an API Program, fr...
WSO2CON 2024 - Building the API First Enterprise – Running an API Program, fr...WSO2CON 2024 - Building the API First Enterprise – Running an API Program, fr...
WSO2CON 2024 - Building the API First Enterprise – Running an API Program, fr...
 
%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...
%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...
%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...
 
WSO2CON 2024 - How to Run a Security Program
WSO2CON 2024 - How to Run a Security ProgramWSO2CON 2024 - How to Run a Security Program
WSO2CON 2024 - How to Run a Security Program
 
Crypto Cloud Review - How To Earn Up To $500 Per DAY Of Bitcoin 100% On AutoP...
Crypto Cloud Review - How To Earn Up To $500 Per DAY Of Bitcoin 100% On AutoP...Crypto Cloud Review - How To Earn Up To $500 Per DAY Of Bitcoin 100% On AutoP...
Crypto Cloud Review - How To Earn Up To $500 Per DAY Of Bitcoin 100% On AutoP...
 
Announcing Codolex 2.0 from GDK Software
Announcing Codolex 2.0 from GDK SoftwareAnnouncing Codolex 2.0 from GDK Software
Announcing Codolex 2.0 from GDK Software
 
WSO2Con2024 - From Code To Cloud: Fast Track Your Cloud Native Journey with C...
WSO2Con2024 - From Code To Cloud: Fast Track Your Cloud Native Journey with C...WSO2Con2024 - From Code To Cloud: Fast Track Your Cloud Native Journey with C...
WSO2Con2024 - From Code To Cloud: Fast Track Your Cloud Native Journey with C...
 
%in tembisa+277-882-255-28 abortion pills for sale in tembisa
%in tembisa+277-882-255-28 abortion pills for sale in tembisa%in tembisa+277-882-255-28 abortion pills for sale in tembisa
%in tembisa+277-882-255-28 abortion pills for sale in tembisa
 
%+27788225528 love spells in Boston Psychic Readings, Attraction spells,Bring...
%+27788225528 love spells in Boston Psychic Readings, Attraction spells,Bring...%+27788225528 love spells in Boston Psychic Readings, Attraction spells,Bring...
%+27788225528 love spells in Boston Psychic Readings, Attraction spells,Bring...
 
Artyushina_Guest lecture_YorkU CS May 2024.pptx
Artyushina_Guest lecture_YorkU CS May 2024.pptxArtyushina_Guest lecture_YorkU CS May 2024.pptx
Artyushina_Guest lecture_YorkU CS May 2024.pptx
 
MarTech Trend 2024 Book : Marketing Technology Trends (2024 Edition) How Data...
MarTech Trend 2024 Book : Marketing Technology Trends (2024 Edition) How Data...MarTech Trend 2024 Book : Marketing Technology Trends (2024 Edition) How Data...
MarTech Trend 2024 Book : Marketing Technology Trends (2024 Edition) How Data...
 
What Goes Wrong with Language Definitions and How to Improve the Situation
What Goes Wrong with Language Definitions and How to Improve the SituationWhat Goes Wrong with Language Definitions and How to Improve the Situation
What Goes Wrong with Language Definitions and How to Improve the Situation
 
%in ivory park+277-882-255-28 abortion pills for sale in ivory park
%in ivory park+277-882-255-28 abortion pills for sale in ivory park %in ivory park+277-882-255-28 abortion pills for sale in ivory park
%in ivory park+277-882-255-28 abortion pills for sale in ivory park
 
VTU technical seminar 8Th Sem on Scikit-learn
VTU technical seminar 8Th Sem on Scikit-learnVTU technical seminar 8Th Sem on Scikit-learn
VTU technical seminar 8Th Sem on Scikit-learn
 
OpenChain - The Ramifications of ISO/IEC 5230 and ISO/IEC 18974 for Legal Pro...
OpenChain - The Ramifications of ISO/IEC 5230 and ISO/IEC 18974 for Legal Pro...OpenChain - The Ramifications of ISO/IEC 5230 and ISO/IEC 18974 for Legal Pro...
OpenChain - The Ramifications of ISO/IEC 5230 and ISO/IEC 18974 for Legal Pro...
 
%in Bahrain+277-882-255-28 abortion pills for sale in Bahrain
%in Bahrain+277-882-255-28 abortion pills for sale in Bahrain%in Bahrain+277-882-255-28 abortion pills for sale in Bahrain
%in Bahrain+277-882-255-28 abortion pills for sale in Bahrain
 

Going open source with small teams

  • 1. Going Open Source with Small Teams Jamie Thomas Director of Software Development – VC3 Co-Founder - Cognito Forms
  • 2. Agenda Using Open Source  When and why  Licensing considerations Creating Open Source  When and why  Contribution, not disruption  Evangelism and community building Case Study 1  Afterthought – a post compilation code weaver Case Study 2  Exo – a comprehensive platform for model- centric rules-based web development Deep Dive Demo
  • 3. Using Open Source Use it intentionally, not on accident
  • 4. When Always an option Always consider open source solutions when tackling both new and existing technology problems. Remember that open source ?= good source, and in many cases commercial closed source or custom development is still the better option.
  • 5. Why Time is money Open source software that sufficiently addresses a core need can save significant time both during initial development and ongoing maintenance. Good open source technologies are written by subject matter experts.
  • 6. Licensing One important detail Make sure the open source software is licensed in a way that makes sense for your business. GPL = Open with Strings LGPL, MIT, etc. = Open without Strings Maintain copyright and license notices and keep a list of what you use.
  • 7. Stuff We Use Just a taste of the dozens of open source projects and code snippets we leverage daily. Electronic Signature TinyMCE HTML Editor DOM Manipulator Spectrum Color Picker Web Framework
  • 8. Why We Don’t Use More We have travelled a long way through uncharted seas. For those that come behind us the way will always be easier.
  • 9. Creating Open Source Create what does not exist, and dare to share
  • 10. When Rarely an option Unlike the use of open source software, there is rarely a compelling reason for a small team with deadlines to create open source software. However, when your team has something special to share, seize the moment!
  • 11. Why Something unique and yet not central to the core business Creating open source software changes mindsets, because you are sharing with the world, not just your cubemates. Every team occasionally solves a new problem or an old problem in a unique way— give this as a gift back to the open source community.
  • 12. Why Not Some things must be protected at all cost Do not accidentally give away key business secrets. Do not share junk. It should be your best work, not the stuff that did not make the cut.
  • 13. Contribute, not Disrupt Figure out how to share your work without disrupting the team and core objectives.
  • 14. How we prevented distruption When we decided to start contributing our work as open source, we selected GitHub as the public repository. However, our entire team heavily uses Microsoft TFS, so we developed a tool that automatically promotes check-ins to TFS up to GitHub, including all details. Automation is key
  • 15. Building a Community is Hard Work! Failure is hard, but success is harder!
  • 17. Afterthought An open source .NET compile-time code amender
  • 18. What is it? A big time-saver Afterthought allows .NET developers to declaratively describe how to mutate compiled code to add additional behavior through IL injection and weaving.
  • 19. How does it work? Fluent API for describing how to amend compiled .NET assemblies
  • 20. Who uses it and why? Afterthought leverages Microsoft’s open source CCI libraries (now part of the Roslyn compiler) to perform similar tasks as PostSharp. VC3 uses Afterthought for almost all projects to support code-first pattern-based development. Thousands of community users use Afterthought as a free alternative to PostSharp, which costs $500 per developer.
  • 21. Evangelism Almost none We decided to create Afterthought as an open source alternative to PostSharp to avoid recurring upgrade expenses for essential technology. We announced Afterthought and posted it to GitHub and Nuget and had almost an immediate following.
  • 22. Community Engagement After months of actively supporting our community, we finally decided that we had to focus on our core products over developing features we did not actually need to support the open source community.
  • 23. Future Plans We know Afterthought meets a need. We plan to release support for Visual Studio 2015 soon, including an updated Nuget package. Long term, we plan to convert Afterthought into a Roslyn extension.
  • 25. What is it? Exo is a server-side model-abstraction layer, a server-side rules engine, and a client-side model-centric rules-based web framework.
  • 26. How does it work? Simply too much to describe in a single slide. ExoModel provides an abstract, meta- data aware, wrapper of a concrete instance model. It could wrap EF objects, POCO’s or even dynamic types. ExoRule is an powerful event-driven model-based rules engine. ExoWeb brings all of this awesomeness to the browser.
  • 27. Who uses it and why? We use Exo extensively in all of our products and many of our consulting engagements. Outside of VC3, no other organization currently uses Exo (that we know of).
  • 28. Evangelism Significant effort, but to no avail… Unlike Afterthought, which solves a small problem and took off like wildfire, Exo is a sophisticated framework. We created a dedicated website for Exo, and even created a demonstration app with step-by-step instructions. Our conclusion is that successful open source projects solve small defined problems and are easy to search for.
  • 29. Future Plans One day… The technologies in Exo are downright amazing, both for .NET and JavaScript developers (but especially for both together). We want to eventually break our dependency on ASP.NET AJAX and move to something like Angular for templating, thus providing a clearer path for user adoption.
  • 30. Deep Dive Demo Cognito Forms Calculations
  • 31. Christmas Tree Order Form Model-based calculations and rules highlight the power of our Exo framework.
  • 32. Under the Hood Sometimes it is hard to believe it is even possible that it works! Calculations entered in Cognito Forms are sent to the server. The server builds the dynamic model (ExoModel) from the form definition. The expression parser builds an expression tree while supporting both intellisense and expression validation. The expressions dynamically compile and execute natively on the server as rules (ExoRule) and ExoWeb translates them to JavaScript to run on the client.
  • 33. JSON Meta Data "BulkDiscount": { "type": "Number", "isPersisted": false, "isCalculated": true, "index": 11, "format": "C", "label": "Bulk Discount", "rules": { "calculated": { "onChangeOf": ["ChristmasTrees{Height_Amount,Lights_Amount}"], "calculate": "function(){var result = (((this ? this.get('ChristmasTrees') : null).map(function(p0) {return (((p0 ? p0.get('Height_Amount') : null) || 0) + ((p0 ? p0.get('Lights_Amount') : null) || 0)); }, this).reduce(function (p,c) { return p + c; }, 0) > 200) ? ((this ? this.get('ChristmasTrees') : null).map(function(p1) {return (((p1 ? p1.get('Height_Amount') : null) || 0) + ((p1 ? p1.get('Lights_Amount') : null) || 0)); }, this).reduce(function (p,c) { return p + c; }, 0) * -0.2) : 0);return isFinite(result) ? result : null; }.call(this)" } } } A simple property definition for ExoModel
  • 34. Calculation Conversion This =ChristmasTrees.Sum(Height_Amount + Lights_Amount) > 200 ? ChristmasTrees.Sum(Height_Amount + Lights_Amount) * -0.2 : 0 Becomes (((this ? this.get('ChristmasTrees') : null).map(function(p0) {return (((p0 ? p0.get('Height_Amount') : null) || 0) + ((p0 ? p0.get('Lights_Amount') : null) || 0)); }, this).reduce(function (p,c) { return p + c; }, 0) > 200) ? ((this ? this.get('ChristmasTrees') : null).map(function(p1) {return (((p1 ? p1.get('Height_Amount') : null) || 0) + ((p1 ? p1.get('Lights_Amount') : null) || 0)); }, this).reduce(function (p,c) { return p + c; }, 0) * -0.2) : 0)
  • 35. Millions use Exo We just had to be sneaky about it! Earlier I stated that only VC3 used Exo—that was a half truth. As you can see, millions use Cognito Forms either to build or fill out custom online forms that leverage almost every feature of Exo, including dynamic modelling, advanced rules, expression processing, client templating, and rich validation. Even if you efforts to share your projects go unnoticed, do not loose faith in the benefits of trying—it is definitely worth the investment!
  • 36. Conclusion Any questions? As in the case of Cognito Forms, enabling technologies can be open sourced without jeopardizing the success of an organization’s core business. Find champions within your team with a passion to contribute and empower them to evangelize within your team and engage with the world.

Editor's Notes

  1. Good Afternoon I am Jamie Thomas and I am cofounder of Cognito Forms, a cloud startup based right here in Columbia SC that is rethinking how to allow anyone to easily create powerful responsive beautiful forms that can actually solve complex real-world problems without compromises. I am going to discuss with you today how we employ open source to drive our software and allow us to share our innovations with the world.