Cathedrals, Bazaars, and Fusion Reactors
With corporations like Microsoft, Oracle, and Google truly reinventing themselves to adapt to an open source world, and typical open source projects moving towards—oftentimes centralized—governance models, the Cathedral–Bazaar dichotomy feels increasingly less relevant.
While being an entertaining piece of history with useful takeaways, its most important achievement was arguably helping create a sense of identity for hacker culture via the revolutionary Open Source movement, and promoting the value of the Internet for software development.
In the Cathedral-Bazaar continuum, contemporary projects like Kubernetes, Chromium, and VSCode are fusion reactors.
They have the backing of heavily invested companies with virtually infinite capital, who are able to staff highly competent teams that not only work full-time on these projects, but also have enough personpower to maximally leverage the benefits brought by a gigantic user base.
Like with fusion power, they seem to be able to leverage a high amount of energy to generate even more.
In contrast, the vast majority of open source projects depend almost exclusively on decentralized volunteer efforts from people sacrificing time out of their busy schedules and lives to move things forward.
And yet, projects following this style of development can end up becoming backbones of modern computing:
The OpenSSL project has been around since 1998. Since the project is open source, it is an informal group comprised primarily of about a dozen members throughout the world, most of whom have day jobs, and some of whom work on a volunteer basis. Being open source, the OpenSSL project’s code has always been public facing. Any person could download it and modify it or implement it in their own software.
The fascinating, mind-boggling fact here is that you have this critical piece of network infrastructure that really runs a large part of the internet, and there’s basically one guy working on it full time.
— Steve Marquess in “It’s Not A Fun Week To Work at OpenSSL, The Mostly Volunteer Project Responsible for the Heartbleed Bug”, (2014)
Heartbleed is a symptom of an ever-existing problem: corporations profit massively by leveraging typically under-resourced open source projects while not giving back proportionally, or (most commonly) at all; either with money or people.
Less critical software like Emacs also follows this decentralized development style, and similarly, lacks resources.
So if Emacs wants to compete with these tools then it has to have seamless, context aware code completion and refactoring support, and GNU tools has to provide Emacs the necessary information to implement these features.
I agree. But to have that, the only way is to have motivated volunteers step forward and work on these features. Otherwise we will never have them.
Right now, no one is working on that, though everyone is talking. [T]he same as with weather.
One way to incentivize contributions is by funding developers. Some (most?) open source contributors would gladly take income to fund their work.
Long-term my big dream has always been to accumulate enough backing to be able to work full-time on open-source projects, but whether I’ll achieve this dream or not is entirely up to you.
While others feel that accepting funding would degrade their intrinsic motivation to contribute.
I can’t speak for all FLOSS developers, but I can speak for myself: I don’t want monetary rewarding from users. Mainly for the reason, that I don’t want to change the relationship with my users. Currently it is mostly a team attitude, we’re working together to solve the problem. And there is also no legal obligation for me to work on something I don’t like.
If I accepted contributions I think many users would get a “but I paid for that, so do what I want” attitude. I definitely don’t want that. I do FLOSS in my free time to do something that matters, and for my personal fulfillment, not for money.
It will also get harder to do the right thing (in contrary to doing what the users want) since the users can stop the payments.
So, no payments for me, thanks.
— cjk101010 in “Sustainable Emacs development - some thoughts and analysis” (2017)
Which is fair: with compensation comes responsibility, timelines, expectations, and things can get complicated. From the point of view of the project, there doesn’t seem to be a conflict: capture funding to enable those who need (or want) it, while still empowering those who don’t, to contribute on their own terms.
Not everyone is in a position to spend unpaid time on open source, especially consistently. “Free” time isn’t free—it costs life. By funding work, a project might get to see contributions from talented folks passionate about it who wouldn’t be able to volunteer their time.
For Emacs specifically, one problem is that there’s no clear way of funding “Emacs”. Sending money to the FSF doesn’t guarantee that it will fund Emacs development. Even if there was a way of “funding Emacs”, the Emacs community—like many things in life—seems to be roughly divided in two sides: those who prioritize freedom, and those who prioritize progress. So one would potentially want to fund one side or the other, depending on their values.
In the excellent “Working in Public: The Making and Maintenance of Open Source Software”, Nadia Eghbal calls attention to a shift in how individuals support open source. Similarly to platforms like Twitch, more and more people are funding creators directly instead of projects, as a way of “incentivizing the ongoing creation of creative work” from developers who produce things that are in their interests.
Maintainers of popular Emacs packages, for example, have their own separate streams of patronage, which receive varying levels of support depending on their popularity and the value added by what they create.
For efforts that involve multiple people, like maintaining and evolving Emacs itself, services like Open Collective could be of great assistance by helping on three fronts:
- providing a legal banking entity
- recurrently collecting funds from individuals and companies
- distributing funds to contributors
Funds can be transparently collected, and dispersed for specific contract work, infrastructure costs, and even developer salaries. Take for example the Babel project, which draws in enough recurrent income to finance multiple contractors and a full-time developer earning a San Francisco salary. An Emacs Open Collective could not only be an answer to “how can I fund Emacs development?” but also a way to financially support developers working on it.
GitHub Sponsors is another great example of developer empowerment. With it, not only does GitHub equip people to:
- be more productive by providing great code hosting, bug tracking, wiki, code reviewing and merging, project management, continuous integration, documentation, artifact hosting, etc.
- have a broader impact by giving projects more visibility and standardized workflows that are familiar to others already on the platform
It also makes it possible for its 40 million users to frictionlessly fund work on open source, and for a large number of maintainers to be conveniently compensated for their labor. I just started sponsoring someone with literally two clicks!
The power of platforms can’t be understated.
Whether you like GitHub or not, it’s undeniable that it has, and continues to revolutionize Open Source, simply by providing a significantly better and unified experience for all aspects of building software.
When there are people making over 100k/year on GitHub Sponsors, you better have a great reason to not try to take advantage of it.
In the case of Emacs, the reason is freedom.
I wouldn’t mind if Emacs development moved to GitHub, but I don’t think it’s ever going to happen. Maybe for good reason: GitHub is backed by a for-profit corporation and is far from perfect, both in moral and technical terms. It might be a great tool today, but being a proprietary platform, its users are at their complete mercy.
I should point out that from my perspective GitHub has been for the most part a force for good.
It would be great if main development at least moved from a mailing-list-driven process to a modern forge style of contribution. It seems that it might, but whether or not it will is still unclear.
In the same way that corporations extract value out of open source, open source projects should as much as possible leverage “energy” generated by corporations. In this new open source world, companies have their workforce contributing millions of person-hours to projects that benefit everyone. LLVM equips people to build programming languages. LSP gives people potent software development capabilities. Rails empowers people to build powerful web applications.
More than 3,000 people have committed man-decades, maybe even man-centuries, of work for free. Buying all that effort at market rates would have been hundreds of millions of dollars. Who would have been able to afford funding that?
That’s a monumental achievement of humanity! Thousands, collaborating for a decade, to produce an astoundingly accomplished framework and ecosystem available to anyone at the cost of zero. Take a second to ponder the magnitude of that success. Not just for Rails, of course, but for many other, and larger, open source projects out there with an even longer lineage and success.
— David Heinemeier Hansson in “The perils of mixing open source and money” (2013)
In many cases, the ideology ingrained in Emacs prevents it from leveraging value generated by efforts not totally compatible with the goals of the Free Software movement. Still, there are many non-conflicting opportunities for improvement.
Maybe Emacs doesn’t need to be a fusion reactor. I only hope it continues to generate energy for many years to come.
It just needs volunteers to keep the fire going.