We recently covered a post on Tidelift's blog1, where Havoc Pennington makes the argument that open source has a working-for-free problem.
The narrative around open source is that it's completely OK—even an expectation—that we're all doing this for fun and exposure; and that giant companies should get huge publicity credit for throwing peanuts-to-them donations at a small subset of open source projects.
He also likens the plight of the open sourcerer to that of the reluctant designer who submits hermself to spec work in the hopes of future compensation. I don't think that analogy is usefully transferrable.
Why the spec work analogy falls flat
When a designer creates spec work, they are speculating about the future value of that work. Hence the name. Most often this work is prompted by a 3rd-party who hangs that future value from a stick and dangles it a few inches from the designer's nose. This is problematic, because:
The designers work for free and with an often falsely advertised, overinflated promise for future employment; or are given other insufficient forms of compensation.
Open source software, on the other hand, is rarely (ever?) conceived under these circumstances. We've talked with many open source developers over the years and I've never heard a Genesis story that sounded like spec work. The reasons we hear why people create open source usually sound like:
"I was scratching my own itch"
"None of the existing solutions fit my needs"
"I thought others might find it useful"
"It's my little gift to the world"
Designers begrudgingly submit spec work. Developers joyfully open source their work.
We still have a problem
I think it's worth drawing the distinction above, but do not misread my overall sentiment: I do believe there's a money problem in open source. If you listen to our shows you know I believe that. It's just that in open source that problem doesn't manifest until much later in the process.
It waits until the software has matured, the value has been proven, the community has been built. Then, it sucks the joy out of the developer(s) who gave a gift to the world and turns it in to the worst kind of job. An unpaid job!
Focusing on the 'why'
So, going back to the beginning. If you open source your work to (speculatively) make lots of money... you're doing it wrong. There are much easier means to that end. But there are plenty of good reasons to do open source for free. Here's three of them:
1. Free is accessible
If you want your software to improve the lives of as many people in the world as possible, do it for free2. The fact is that many people can't afford to buy your software and many of those who can afford to buy it won't anyways. This 'why' was described wonderfully by Jérémy Lal with this comment (emphasis added):
I’ve been contributing to open-source for more than ten years. Why ? because open-source made software accessible to people without funds to try new and crazy ideas. Not for exposure, not for publicity, and certainly not for big companies. Open-source, and free licenses, are the nicest thing that ever happened to humanity. Also i did not make a single dollar out of it.
2. Free is payment
That may sound like a contradiction, but hear me out. The reason that I began producing open source software was because I had benefited from so much of it. I cut my developer teeth on Vim and the Linux command-line. I started my career writing Perl scripts and later Ruby and Rails-based web applications. The saying, "we stand on the shoulders of giants" may be cliché now, but clichés become clichés because of their wide application!
When I came to a point with my developer skills where I was confident enough to contribute back, I felt obliged to do so. It's a small way of paying it forward, or in other words: payment for all of the freeloading I'd been doing3. I don't think I'm alone in this.
3. Free is fun
Open source has grown and matured over the years, but let's not forget that much of open source software exists because the creators were just having fun.
There's nothing fun about enforcing the commercial side of a license. There's nothing fun about picking which features go in the 'open core' and which features require payment. There's nothing fun about selling support or hosting.
What is fun is creating something new, giving it a name, and just putting it out there to freely be used and enjoyed by others.
What about you?
I'd love to hear the 'why' behind your open source work. Are you hoping to get a job from your efforts? Is fame the driving factor? Are you paying it forward or just having fun? Sound off in the comments and feel free to link up your project(s) so others might join you in your work. ✊
Top comments (16)
I would love to contribute to open source, but after I read all the policies and procedures to contribute to a project, I'm generally just like...meh. I get that a lot of projects are so successful and lively precisely because of the structure they have adopted, but I just want to write code and not worry about it being rejected for some random technicality. Maybe I just need to search for some different projects to contribute to.
I feel ya. I've had way more success contributing to small/indie projects that aren't backed by corporations or have large communities. It also feels more personal; like one person doing another person a solid vs submitting your code to a massive, moving entity. Have you tried that?
It's a good idea, I think I will keep that in mind. I don't really care if people use what I build (it would be cool for sure), I just want to create things and learn from others.
I was a maintainer and the lead contributor of an open source GitHub project that became large, and got crowdfunded via Patreon to write open source code for about two years.
A. Comparison to spec: Your argument falls flat when you start asking more questions to open sourcers.
E.g. "If you would have been paid to do this same thing, with the same freedom, would you have been happier / in a better position / able to reach more people / ..." = Yes.
B. Free is not accessible.
This is a reality charities have had to deal with for years: If you do free work, it's less sustainable, growth is held back, and you will have the hardest time reaching all the people that are in most urgent need.
An economically sustainable model scales better, helps more people, and can still be free for the end user.
C. Free is not payment.
You can do work that is simultaneously social, fulfilling, and paid.
The creators that originally had fun making it, can eventually find themselves in a position where hundreds of thousands of people are using their software, but the creators' lives are in the deepest pit they'll ever be in, with their "fun" project not contributing to the immediate improvement of their lives (e.g. bills that need to get paid).
D. The best part of open source is:
It is what it is, and there's nothing quite like it.
It's free, it's open, it can bring people together or strongly divide them, it can teach/inspire or smash people's hopes. It can be fulfilling when your contributions are intentional, well thought out, and come without sacrifice in your own life.
But open source should not be your default choice unless you want to be an activist.
I'm sorry you had such a bad experience. Please allow me to address a few of your points, but I'll preface it by saying whether or not to work on open source is a personal choice and it's definitely not for everyone.
Software that doesn't exist won't reach as many people as software that is developed for free. Sustainability only becomes a problem after software has proven its value. This is a choice one has to make, because the number of people who can convince others to pay them to produce things that haven't proven their value is very small.
There are huge swaths of software projects that will never find an economically sustainable model. Would the world be better off if these didn't exist?
Of course you can, but that wasn't my point when I said free is payment. My point was that as a developer I've benefited from free software, so I feel socially obliged to also produce free software as a form of payment back to the community.
This sadly happens all the time, which is why we talk about sustainability all the time on our shows! But if I'm being honest, a lot of the problem here is improper expectation setting and an improper outlook by the open source maintainers themselves. Mike McQuaid embodies the healthiest worldview on this topic. His post Open Source Maintainers Owe You Nothing is a must-read for all maintainers.
I never said I had a bad experience. I had a pretty great experience, and it was an awesome project. But I worked hard to come up with a way to make it sustainable.
And you're assuming software you get paid for doesn't get made?
That's exactly one of the problems with this mindset.
Don't get people to do open source by convincing them of stuff that just isn't true.
In short, sustainability is your responsibility from before you start. Open source is a decision with consequences you need to think through beforehand, and with its own serious cons.
You can get paid for exactly the same work you'd otherwise do open source, including if you're still a new coder gaining experience. They're called paid traineeships, with experienced teams that will pay you to learn from them.
Open source should only be promoted for what open source is. If you misunderstand open source, people will sacrifice the money they could've earned by being convinced that open source is always a smart choice.
People who get paid well also have more room to work a few less paid hours to contribute to open source or charity. "Help yourself before you help others" is great advice, and more open sourcers should listen to it.
More open source projects are also moving to dual licensing: open core code, but some features come at a premium. And I think that's a healthy example of sustainability, while giving back to open source without sacrificing yourself for it.
I mean, if you're writing articles titled "good reasons to do open source for free" without including the obvious cons and a statistical overview of dying versus growing projects (sustainability), what expectations do you think you're setting?
I feel like we’re talking past each other, so I won’t continue here. I’d love to have you on The Changelog to dive deeper into this conversation in a more profitable format. PM/email me if you’re interested.
I have an open source code library, and I made it open source because I love teaching people how to code. So many people write their own mathematics, data structures, and other stuff that there are a ton of bad examples out there. I want to help show people how to fix those examples and design code properly. :)
So for me... It was 100% a moral choice. To help people.
We are building right now a website for pupil with a friend met on dev.to We are currently considering to make it open source, but afraid it will impact on the future exit if possible. Any comments on that?
Happy to comment (and hopefully help)!
I'd need to hear more about the website and what it offers as well as what you mean by 'future exit'. Do you mean financial exit? Is the goal to monetize the site somehow?
Not sure how far to explain, so first of all thanks for your comment!
Exit, yes financial. No revenue expected except for sponsors.
As what it'll do? Umm, I think it's an early stage to discuss it, but verypupil.com will be a home for students and their homework. This is with the help to technologies the future classes and make the students comfort to share their answers with other students all over the globe from one simple place, which in turn will help them - the smart students to raise their rating and make new friends, with students - smart like them.
Open sourcing a website doesn't always have the same effect/impact as open sourcing a library or platform. That being said, if your goal is to build a community around it and attract meaningful contributions, then open source is the way to go. If not, I'd advise at least waiting until you have something tangible and production before making the decision.
Maybe take a cue from the dev.to team, who waited awhile before open sourcing it.
Totally understand the "do it because you can and want" idea. I wish I could dedicate full time to my open source projects and see how much impact those projects could have on people lives. But if the open source project does not generate a decent amount of income to support your living expenses then the only time dedicated to them is your leisure time.
For toy projects only leisure time is ok. For more serious projects that require huge amount of effort then you have two options. The first option is only leisure time and the project would be super slow to grow and maybe die by stagnation and be forgotten. The second option is to dedicate full time and see if you can make an impact, but that needs funding.
Without proper funds most open source projects not backed up by a non profit organization, or a company will die because lack of incentives and resources to continue development and marketing.
My opinion is:
1) Do free/open source software if you can and want.
2) If you want to create a project that will require huge amount of effort look for a way to fund or it will slowly die because lack of time and funds.
Good points. I agree there is a time and a place for open source. My key takeaway from what you're saying here is "have a game plan" depending on what you're trying to accomplish. That's always great advice. 👌
I have doubts about open sourcing a project that I'm doing, is a java app that aims to help little restaurant business doing their diary accounting.
My idea is to eventually sell it to local business but at the same time I don't know any open source solution for this. I would love to hear what other people thinks about this. Should it be open source and sell the support or I just go closed source and forget about it
It depends on what you mean by:
If by this you mean sell the software as a service that local businesses can pay for on a recurring basis, then I don't think open sourcing it will hinder you much there. Restaurants aren't well equipped to self-hosting open source applications, so you won't lose too much business in that regard.
If instead you mean sell the software as in the intellectual property to a local business... in this case I'd keep it proprietary because if it's open source they have no incentive to purchase it from you.