FOSS is not a flavor
A long time ago now, I was working on a product which was aggregating data from various APIs, to provide a comprehensive dashboard.
One of the key factor of the potential success of our product was the number of APIs we could integrate.
My CEO gave me a quick call:
- I have just realized that the company is in "build mode", we have to build as much integrations as possible
- Sure, I guess you want to know how we can speed them up
- No, actually, I have a solution for that: we'll go Open-Source, so all geeks will build integrations for free
- It's not that simple, actually, there are a number of steps before going Open-Source
- You over-complicate things, let me show you
He turned his screen-sharing on, go on GitHub, on our main repository, switch the visibility to Public, and proudly stated: "you see, done, you just have to post it on Reddit/Discourse/etc.".
I have quickly switched it back to "Private", as many parameters were hard-coded, not our secrets, hopefully.
Contributing to a FOSS project is simple, yet not easy:
- Find a project you care about
- Find an issue or a feature to work on (by using it and having an idea, or crawling the bugs tracker)
- Open the code, and the documentation if any, try to understand how it works
- Add the code, including tests, and docs
Then the tricky part:
- Push the pull-request
- Try to comply with
CONTRIBUTING.md
- Find a maintainer to look at it
- Start-over because the issue description was out-of-date
- Harass maintainers to get merged
- Wait for the release
Easy, right?
On another hand, in order to build a successful FOSS project, it takes:
- A clean enough code (i.e. it should build, run, and not containing hard-coded information related to the infra)
- A documentation on the coding (best) practices and conventions
- A documentation on the build process
- A documentation on the deployment process (and configuration)
- A documentation on the architecture (beyond ADR)
- A
CONTRIBUTING.md
- A documentation on documentations (I'm mostly kidding)
- A continuous integration
- A brand
- A lot of time to:
- Review PRs
- Mentor contributors
- Coordinate discussions (reminder: all decisions are community-led)
They, there is the business "strategy":
- Open-core: provide a more limited version of a product
- Consulting based: being paid to set up a local instance or for bug-fixes/features
- Licensing: being paid to be able to host the product
- SaaS-based: hosting and being paid
Open-Source is not an option, a flavor, a switch we can flip, it is engineered, it takes effort over a long period, just to hope having some ROI.