Sustainable Open Source: Current Efforts

The recent appearance of Clojurists Together, friends working on OpenBounty, as well as recently finding a lot of energy to work on a documentation platform for the Clojure ecosystem stirred some thoughts about sustainable OpenSource.

Let's say one thing right out of the gate: sustainable OpenSource isn't really a goal on it's own. What the community (users as well as maintainers) strives for is reliability and well-maintained ecosystem components. Businesses and individuals alike depend on those properties — not the fact that work done to achieve them is sustainable. That said I don't see any ways to achieve those without sustainability.

Current Efforts

There are various platforms trying to improve sustainability of open source efforts that have continued momentum. Many of them with their own ideas how the situation can be improved.

  • OpenCollective collects payments from individuals and companies and stores funds for organizations. People may then "invoice" the organization. This can be for stickers and labor time alike.

  • OpenBounty is a bounty platform used with cryptocurrencies. Contributors may work on specific issues and get paid a bounty which has been defined in advance.

  • Clojurists Together collects money from companies and community members to fund open source projects benefitting the overall Clojure ecosystem. People may apply with a project they want to work on and get funding (depending on overall availability) for a duration of three months.

All platforms take care of collecting money and have mechanisms for redistributing it. With OpenCollective a community will need to agree on processes to request and distribute funds. Clojurists Together collects money in similar ways to OpenCollective but has a predefined process for how funds are allocated.

Projects like webpack have embraced OpenCollective with people getting reimbursed for expenses but also regular labor invoices for time worked on the project.

OpenBounty also provides some of these processes by assigning bounties to specific tasks. OpenBounty is used in's development process and while I don't believe bounties are the answer to everything I'm excited to watch this space in the future.

Sustainable Incentives

Contributing to OpenSource is about incentives. As far as I can judge these often are

  • fun & community,
  • fixing a problem one encountered,
  • recognition & better job opportunities.

Nothing is wrong with this list but they are not sustainable on their own. Just working for the fuzzy feeling of giving back to a community doesn't pay your bills. As soon as you can no longer afford to work for the fun of it the stability and momentum of projects you contributed to will suffer.

I believe there are two kinds of participants required to achieve reliability, stability and so on:

  • There need to be some people contributing on a regular basis. They provide overall direction, deal with reported issues and incoming contributions. Often projects refer to this as "core". In my experience stability of an open source project suffers with fluctuations in the set of "core" people working on it.
  • There need to be occasional/new contributors. Life will happen (kids, work, etc.) to regular contributors causing a natural decline. New contributors discovering they enjoy working on the project can fill up those gaps.

In my opinion the incentives listed above are not sufficient — especially for long-term regular contributors. If work is unpaid it will eventually become stressful to juggle with other responsibilities and people will be forced to step back. New contributors are just as important and I believe there are improvements to be done there as well but ultimately nothing works without a "core" set of people.

I have some further thoughts on how such incentives could be structured which I will explore in a later blog post.

Other Posts

  1. Maven SnapshotsJune 2017
  2. Requiring Closure NamespacesMay 2017
  3. Simple Debouncing in ClojureScriptApril 2017
  4. Making Remote WorkMarch 2017
  5. Just-in-Time Script Loading With React And ClojureScriptNovember 2016
  6. Props, Children & Component Lifecycle in ReagentMay 2016
  7. Om/Next Reading ListNovember 2015
  8. Parameterizing ClojureScript BuildsAugust 2015
  9. ClojureBridge BerlinJuly 2015
  10. Managing Local and Project-wide Development Parameters in LeiningenJune 2015
  11. Formal Methods at AmazonApril 2015
  12. (lisp keymap)February 2015
  13. CLJSJS - Use Javascript Libraries in Clojurescript With EaseJanuary 2015
  14. Why Boot is Relevant For The Clojure EcosystemNovember 2014
  15. S3-Beam — Direct Upload to S3 with Clojure & ClojurescriptOctober 2014
  16. Patalyze — An Experiment Exploring Publicly Available Patent DataOctober 2014
  17. Running a Clojure Uberjar inside DockerSeptember 2014
  18. Using core.async and Transducers to upload files from the browser to S3September 2014
  19. Emacs & VimJuly 2014
  20. Heroku-like Deployment With Dokku And DigitalOceanMarch 2014
  21. Woodworking MasterclassesFebruary 2014
  22. Early Adopters And Inverted Social ProofFebruary 2014
  23. Living SmallFebruary 2014
  24. Sending You a TelegramJanuary 2014
  25. Running a Marathon, Or NotJanuary 2014
  26. Code SimplicityJanuary 2014
  27. What do we need to know?December 2013
  28. Sculley's DiseaseDecember 2013
  29. A Resurrection PostDecember 2013
  30. A Trip To The USSeptember 2013
  31. Analytics DataApril 2013
  32. Asynchronous CommunicationApril 2013
  33. From Zero to Marathon in Six MonthtsMarch 2013
  34. Git Information in Fish Shell’s PromptDecember 2012
  35. When We Build StuffAugust 2012
  36. Models, Operations, Views and EventsJuly 2012
  37. The Twelve Factor AppJune 2012
  38. Paris And BackMay 2012
  39. A Friend Is Looking For A Summer InternshipMay 2012
  40. Kandan Team ChatMay 2012
  41. Startups, This Is How Design WorksMarch 2012
  42. Entypo Icon SetMarch 2012
  43. Hosting A Static Site On Amazon S3February 2012
  44. Exim4 Fix Wrongly Decoded Mail SubjectJanuary 2012