OutlineThe contextIndustrializing an open source softwareSelling a productConclusion(s)
The context
MehCEO@SysFeraPreviously research engineer @INRIA in the GRAAL AVALONresearch team (LIP/ENS Lyon)
SysFeraWe provide software for the usage and management of HPC ITinfrastructure in a hybrid Cloud mode12 people located close to the INSA campus (the weirdos doingpixel art on the windows? That's us.)
References
Where it all beganDIET (Distributed Interactive Engineering Toolbox) created in 2001Middleware for HPC : How to access an application on a distantserver in a ASPSaaS fashionLeading implementation of the OGF’s GridRPC standard
The Décrypthon projectEarly adopters, guiding us on the path of industrializing researchsoftwareThe computing platform of the Téléthon : provide a simple to usegrid platform for biologistsSponsors: AFM, IBM, CNRS2007: DIET replaces proprietary middleware (\o/)Has been up and running 24/7/365 between 2007 and 2011
Wait... what if we create a company to do that for others?
Industrializing anopen source
software
The pathMay 2008 : Let's create a company !March 2010 : birth of SysFeraOriginal idea :
We must secure the IP and structure the development process
Building up a commercial offer around DIET while
staying true to DIET's OSS roots
Code is IP
Code is IPBefore creating a company you need to secure the IP
from the insidefrom the outsidewith the authors
Manage your code's IParchitecture
Code snippets from the Internet?Third-party libraries?License?Any global coherence in the IP’s perspective?
Manage your code's IParchitecture
Possible solutions:
Antepedia Suite : They’re coming from INRIA and it’s OSS!{eyes, hands, head, jurist}
Software patent?Patents?Publications?Clone of your technology in the real world?Define your innovation/processStudy patent claims... VERY accurately.
Software patent?Possible solutions:
{A consulting firm in IP}{eyes, hands, head, jurist}
Manage the past ...It WILL be the most time-consuming part.
Check developers’: contract type, lab, institute, faculty, etc.What part of the IP do they produce?Who owns the code?What business model for what business plan?Most of the time authors don’t know anything about that
Above all: be patient!
Manage the past ...Only solution:
Patience, Time and Tenacity
... and the futureWho will contribute?What about the community?Will you be able to use that code in any situation?Who will lead the project? What’s the road map?How will you manage the code? (Client/Research)-driven commits?
... and the futureOnly solution:
Clarity, Perpetuity, Serenity
But code is alsocode
But code is also codeDIET comes from a research labSYSFERA comes from a research labAll of use were coming from research labsWe needed tools and methodology to get the job done, clean andfastSo we didn’t follow the (easy) (evil) path of proprietary software!
Version your stuffTrack every change and revert themForget CVS and fully embrace GitPrefer atomic changes over monster patches!
Build your stuffTracking bugs takes up half of your time (conservative estimate)The sooner, the betterYou know where this is going, right?
Continuous Integration1. compile manually2. automate compilation from repository with cron3. add up unit tests and crappy mails when compilation fails4. add quality checks5. now install a CI server with shiny graphics6. make developers who break builds bring pastries the next
morning!
Your build system is yourfriend
Automates tasksGood support of parallel jobs (scons out)ExtendableEasy to learn and use (autotools out)Multi-platform
We are using CMake + make/ninja
Unit TestingTesting is boringHumans don’t like boring stuffHowever,
it saves time by quickly detecting regressionit helps detecting dead code
We are using Boost Unit Tests Framework
Document your codeDIET has nice user and developer guidesThe API documentation, however, not so muchDevelopers hate writing anything else than code(to the coders here: you know it’s true)
We are using Doxygen
Continuous IntegrationAutomates !Don't do the annoying stuffLots of OSS solutions
We are using Jenkins
Plan thingsPlan your development sticking to defined release cyclesDefine prioritiesStructure your developments through projectsChoose your preferred development method (something agile!)Involve your community in the debugging!
Be Agile like a monkey!
Be Agile like a monkey!Prefer small iterative cyclesPlan, test, document...... The sooner, the betterGet your toolbox ready
CommunicateWith your managementWith your sales and marketing departmentWith your clientsWith your community... And others, through projects or events
Get a real marketing guy orgirl (or a hippie)
Or you may end up with such a logo
no comment
Selling a product
Selling a productTo create a company (and sell a product) is an adventure itself.
Nerd -> CEO
GoalProducts must be meant to solve customer pain ...
... but in labs you don't meet a lot of customers...
... and a feature for a user is not what we may think it is.
Business & MarketingWhen should we say no (or not now) to a user/customer?How to build a road-map?Nice to have != Nice to buyInnovation can lead to new markets ...... And unknown application fields!How to know the customer needs when there is no existingmarket?Being too innovative can be a hard problem -> evangelism/"toomuch"
TechnologyFramework or not?How to choose between complete modification and slightchanges?Be Agile in every way!
Techno push vsMarket pull
Conclusion(s)
Sad conclusionSoftware does not matter
UX and User satisfaction matters
But beinginnovative is the
key to oursuccess
It's hard, but that's the good way
And research labs are the best place to find innovation
To be here tomorrow: don't fight the change, accompagny it
Happy ConclusionReally cool adventureDevelopers are artistsInnovation, agility and user satisfaction are the keys to successIt's a pleasure to see customers happy with your codeI'm proud to say that 13 people are now working thanks to codedeveloped by researchers from INRIA, CNRS, etc.
Thanks
Mail : Twitter :
DIET website : SysFera website : SysFera@github :
[email protected]@DavidLoureiroFr
http://graal.ens-lyon.fr/DIEThttp://www.sysfera.comhttp://sysfera.github.com