But the question is how do you sustain yourself while working fulltime on building/maintaining open source software
What are some tips to get into open source and turn it into fulltime career
For a long time, I had other jobs, working at startups around video, and doing VLC at nights and weekends and holidays.
And now, I built a couple of companies around Open Source multimedia, where we do consulting, integration, custom development around software, applications development, licensing, support and so on.
Those companies are now paying around 25 FTE. It's not too bad, but not impressive either...
The employees are working most of their time on improvements of the open source software, working for clients is a minority of their time.
But I've worked a lot, and by a lot, I really mean a fuckton... And the rewards are not big.
Overall I invested a lot more time in it than the monetary reward I received. I don't complain since I enjoy working on audio/video fingerprinting and databases. On top of it, the pay at this stage is on par with a regular SE job with the bonus of working on things that I enjoy. I can call it a bootstrapped business now.
In some sense, I think about opensource similar to the work of art. You do it because you genuinely like to create/build things and showcase them to the general public. You don't do it because of the monetary reward. A good writer is one that has to say something, not one who writes for the sole purpose of getting on the NT bestselling list. Opensource is similar.
[1] - https://github.com/AddictedCS/soundfingerprinting
[2] - RAM-based storage, bounded by memory limits
[3] - https://emysound.com
Eric S. Raymond answer was: Be independently wealthy.
I have tried to reach billionaire philanthropists (Bill Gates, Steve Wozniak, Dean Kamen, Warren Buffet, and others) with the idea that there are very talented people around who have brilliant ideas (say for instance another Newton or Mozart) but are not financially independent to afford to work on those. Among good places to look for such talent is to identify and support important or promising open source projects and people behind them. But none of them bothered to respond.
Conflict with my day job is also one of the reasons why I don't take donations. There is some benefit to that though because it allows me to take a day/week/month off if I need it without feeling guilty. Once there is money involved, there are a lot more expectations and I think I would have a harder time putting it down.
If you’re looking to make money, I don’t recommend you get into open source. I wish this weren’t the case, but this is the current situation.
Unfortunately, it seems the best path if you want to do open source as a career is to do enough open source to get your name out there and then leverage that into a job offer at some megacorp. Maybe you’ll be able to get a role doing open source, but that’s rare. Hopefully you can continue to do open source in your free time at least.
That said, if you insist your goal is to get paid doing open source full-time, here are my tips:
1. Create a project that is end-user facing. No one is aware of which transitive dependencies they are using, so no matter how useful your software, you’ll struggle to get donations, sponsors, or consulting work unless the end user knows your name. Reliable, error-free transitive dependencies are invisible. Therefore, the maintainers are invisible, too. And, the better these maintainers do their job, the more invisible they are. No one ever visits a GitHub repository for a transitive dependency that works perfectly – there’s no reason to do so. But a developer investigating an error stack trace might visit the repository if for no other reason than to file an issue. At least then there’s a small chance they’ll see the maintainer’s plea in the README. (I wrote more about this here: https://feross.org/funding-experiment-recap/)
2. Make sure it’s something that the enterprise cares about. If you build a cool P2P project or a new programming language you’re gonna have a tough time. No matter how useful or innovative the project is. On the other hand, if you’re making a front end framework or a UI library for React or something like that, you’ll have a much better shot at getting companies to sponsor your project.
3. Don’t be afraid to ask for money. Contact companies that are using your library and tell them you want them to sponsor your package. One great hack for finding out who is using your package is to open an issue called “Who is using this?” and ask for testimonials or offer to put users’ logos or links in the README under a “Who uses this” section. Lots of developers will out their companies as users of your package if you do this. This gives you a good list of companies to initially reach out to. Without tricks like this it’s impossible to know who’s even using your package. That’s the first to step to finding sponsors.
The code is all MIT license and we're working to make it easier to self-host. I make money through providing a hosted version of the product.
It's a similar model to Sentry or Gitlab. Open-source does not have to be libraries and frameworks, there are good opportunities to build more traditional SaaS products that can be self-hosted and you can make money by selling a hosted version.
I understand that not all open-source projects can be funded this way. Once I can pay my own salary, I'm planning to set aside a percentage of revenue to fund open-source projects that Plausible itself relies on.
I spend about 1/2 of the time doing services and 1/2 hacking on the software. Quite often, customers are paying for new features in the software so it is paid hacking. Great!
But there's also some good monetisation strategies:
- Consulting, at the bottom of your project "Hire the creator"
- Donations, at the bottom of your project "Donate here"
- Open-core, have an open-source core and a premium version with more features (these suck)
- Sponsorware, Open-source the library after enough people have paid you for it [1]
The easiest is to create open-source projects in your day job (where needed). It makes for a better architecture of modular components and plugins and helps you learn open-source development without the pressure of making money from it.
[1] https://twitter.com/calebporzio/status/1221437814748909571
I'd estimate that at least 99.9% of open source software is written by people without direct payment eg for every 1 paid contributor there are 999 who do it either as part of their role in a job or for free. Even the paid contributors mostly have other income from consulting, social media, speaking, etc.
That's not to say you can't make a job out of it, but actually planning to do that would be incredibly hard. You'd need to recognise something that's missing from the software ecosystem, implement it, release it, and find enough people willing to pay you to develop it to make it a full time job. Alternatively, find a role at a company that pays people to work on open source, eg Google, Facebook, Canonical, etc. Arguably that's going to end up feeling like a normal developer job though.
1. Evan you (creator of vuejs) makes kind of a salary via patreon [1].
2. Taylor otwell (creator of laravel) has created many useful projects like spark and forge that generate amazing revenue.
3. Creator of sidekiq (mike) has created a million dollar business by creating premium upsells [2]
4. And finally of course there are free and hosted versions of the software like WordPress that are in a league of their own (also recently noticed a site called Browserless which has done quite well with this model)
[1] https://blog.patreon.com/vue-js-creator-evan-you
[2] https://www.indiehackers.com/podcast/016-mike-perham-of-side...
https://www.mikeperham.com/2012/08/26/the-sidekiq-experiment...
I sell closed source Pro and Enterprise focused feature packs for my OSS projects. This is known as "open core".
My first full year in 2013 I sold $85k.
I'm in the millions ARR now.
What strikes me as odd is that it is usually been brought up as some sort of additional qualification (as in „open source projects promote good code“), but in reality what this boils down for you is just more potential work (your normal work + open source work), and also implies lowered expectations for salary please („you are doing coding in your free time anyways!“).
Seriously, I admire and respect open source developers, but fuck companies that make it mandatory to have worked on an open source project for hiring you.
That is seriously fucked up - companies that rake in tons of money, build on top of free software products, make it mandatory for their developers to provide proof that they can be further eploited (as that is what it comes down to - forget that „better code quality“ or „we are part of the community“ thing they usually use as the rationale).
Sorry, had to vent that.
And to OP: I was asking myself the same question (how to sustain oneself in a first world country by doing unpaid coding). I came to the conclusion that this is not possible for me, as I strive for a higher standard of living as well as some spare time.
To put it more bluntly: open source developers seem to be the monks or junkies of coding to me in that they are just fueling their desire to code but do not insist on getting renumerated for it. I am not saying you shouldn‘t be doing any pro bono work, but a high quality product like VLC for instance should be able to sustain properly paid developers.
One way to start an open source business is to use a public/private licensing model, a.k.a. dual licensing with an 'open' license and a commercial license. The key is that you can have readable, modifiable, redistributable source code, without universally giving your work away for free. Instead, charge a fee for the right to use your software to create proprietary software, or for the right to use your software in a commercial context.
License Zero is designed to support developers pursuing this kind of business model. There are two public licenses, Parity and Prosperity, and there's a payment platform to charge for private licenses. https://licensezero.com/
Parity is a copy-left license, and is best suited to developer tools and software libraries. https://paritylicense.com/
Prosperity is a non-commercial license, and is best suited to end-user applications. https://prosperitylicense.com/
The Sustain podcast has an interview with the creator of License Zero, Kyle Mitchell. https://sustain.codefund.fm/29
A lot of the sponsors that do well are ones that offer things that the sponsor wants. Trading a couple hours a month consulting for $1k/mo in sponsorship helps make it worth doing to the donors. They want to support you, but they also probably could use your help.
Effectively you're productizing consulting and that flips it from a donation to a purchase. They get a tangible thing for their money this way. I think that helps a lot for making sponsorships more successful.
My solution is that as much as I love open source and the community I’m in, I do not let it get in the way of work and family.
I’ll only contribute when I have spare time. Unless I were to be paid for it.
Is it because you don't like your present job and want to work at a better one, and it seems like open source work would be more pleasant?
People who can make a living doing open source are rare, you have better chances of winning the lottery than making a non poverty living writing open source code unless you can make yourself a super star.
The only solid way to do it is code, code code. Write software people will use, that not only works well but which has quality source code. Share it, support it, work with others to make the software even better.
Write something people need that is otherwise very expensive, like a CAD package for a specific need, or something that is a niche no one has addressed yet with really high quality software.
Note that the above relate to software you create.
If you just want to work maintaining open source software, you can get a job working with it somewhere that uses it extensively... not too hard these days, lots of places that make set top boxes or embedded devices use Linux, Android is still partly Linux.
If you're thinking of making a living by writing open source software but you haven't already written a well liked open source package.... I suggest you adjust your expectations.
Getting paid for open source software is like becoming a successful musician, from the outside it's easy to only see the few "superstars" who make bank but for every one of them you have thousands of people for whom it'll never be their main source of income.
Most of the open-source code that I use are small, limited-scope libraries. These appear to come from someone who wrote the library as part of a larger project; and usually from someone experienced enough to make the library "good."
Usually the limited-scope libraries solve a well-defined common problem that many applications need; instead of a unique tool that someone just wants to give away for free.
Alternatively, there's frameworks like Spring that come from consulting companies. These frameworks only become valuable with lots of external users, so it's in Pivitol's best interests to sponsor their framework, which they also happen to be very good at using to write custom applications for paying customers.
I don't know how to turn it into a fulltime career other than getting some kind of grant or working with a company to do it. Sponsorship sounds great, but probably requires some fame / traction, which is probably the hardest part, since you need the money to get the traction. Some open source projects also have foundations with employees or people doing contracts, like astropy (also driven with donations).
The "trick" in my case is that I am an independent consultant, and open-source is how I dedicate some days of my workload (and a bit of weekends too, but only when I want it).
I have published an open-source Ruby data processing framework in 2015 (https://www.kiba-etl.org).
I sustain myself by two ways: 1/ consulting on either Kiba ETL (which brings leads) or other data projects and 2/ "Kiba Pro" commercial extensions providing more features with vendor support (yes, proprietary code, not OSS, on that specific part).
I have explained in depth how and why I decided to go that route in a talk this year:
https://www.youtube.com/watch?v=yv1EnYTXIeA
About GitHub Sponsors: I'm giving it some thoughts, but some parts are blurry for me as a French company, lawyers have no answers yet, and GH support could not help me from a legal/fiscal standpoint here. I also do not expect much, but will likely try it out.
Hope this helps, although this road is not for everyone!
Read this amazing article on how much money Open Source makes: https://staltz.com/software-below-the-poverty-line.html
The best funded JS open source project, Vue.js, receives $16k/month[1]. That's a single-developer level of income in SV. The fact that TechCrunch, who regularly covers multi-million deals and CEOs making millions, says that "the revenues can be outsized" with these numbers is ingenuous at best: https://techcrunch.com/2018/06/23/open-source-sustainability...
So you have few realistic options:
- Save enough money to not need to work again (FIRE - Financial Independence, Retire Early, etc).
- Live very cheap, which could be a flip side of FIRE. Be ready to move to Thailand and other cheap countries.
- Work on open source on the weekends or after work. Alternate working N months/years and then doing OSS M years.
- Do consulting as a part time job and open source. If you play your cards right you might be able to join both consulting and OSS somehow.
- Find the companies that do open source and apply for jobs there. Not so many options, but it's realistic.
[1] https://www.joelonsoftware.com/2002/06/12/strategy-letter-v/
It has 2 steady income streams:
1. Monthly sponsorship donations.
2. Forging rewards from the Lisk blockchain. Those rewards are shared with the community.
SocketCluster powers Lisk's P2P network and protocol so on that basis I was voted into a forging position on the Lisk blockchain.
These two sources of income have been just enough to support myself and a couple of casual contributors. Took 7 years to get to this point.
Also, I occasionally did consulting in the past but that has not been reliable.
My experience makes me optimistic about blockchain tech's ability to help monetize open source projects. I'm particularly optimistic about the DPoS (Delegated Proof of Stake) mechanism because it allows big token holders to vote for open source project maintainers to be delegates on their blockchain and allows those open source maintainers to earn block rewards.
Forging on DPoS is like like Bitcoin mining, but a lot less hassle and requires no capital if you can get the votes. I'm working on the Lisk ecosystem now.
Helping others to monetize their open source projects in such a way that they can retain independence from corporate or government influence is my life's mission. My project is just a proof of concept.
BTW feel free to look for my email address on GitHub and get in touch with me if you want to participate somehow. I can't guarantee anything but I feel that the technology and incentives are improving - I'm working on a DEX ecosystem right now which should facilitate this.
There are numerous benefits to being open source. We built a community around the product, it played into marketing efforts, really helped attract developers at companies for bottom-up sales, and led to lots of improvements, many of them contributed by our paying users.
My point is that open source and "making money" don't need to be mutually exclusive. In fact, sometimes the open source side can really bolster the commercial side. This seems most effective at companies that offer a hosted version of their open source product. Very few large enterprises want to run things themselves if they can just pay a company to run it for them or provide support.
So writing and releasing OSS may not lead to direct monetization opportunities, but it can be a great way to get in touch with enterprises and to get demand readings quickly.
[1] https://segment.com/ [2] https://github.com/segmentio/analytics.js
Working to make money is a completely different story, and it's quite rare to be able to completely merge work and passions.
There are also plenty of reasons for a company to publish open source software (and that's a good thing!). But you have to remember that behind this choice, there will always be a strategic reason with a business plan.
I feel like you could replace "open source" with "programming" and it would be basically the same question.
There are two sides to working a successful business:
1) Having something of value people want
2) Figuring out how to 'capture' that value in a sustainable way
The vast majority of people either aren't very good at, or don't really enjoy, #2, and so they outsource the "how to make money off this" to a company (i.e., they work for a company). You write the software the company asks you to, and the company figures out how to make money from it.
The same thing goes for open source: Probably the dead easiest way to make money from open source is to apply for a job at RedHat. Or SUSE, or Ubuntu. Or one of the teams at Twitter or Facebook or Google that do open source. You get to work on open-source software, and the company gets to figure out how to capture value from the activity.
Alternately, you could work for yourself, but then you have to figure out how to capture that value yourself. There are lots of creative ways to do that, but you have to figure out your own market. And in the end, if you're successful, you'll probably have more demand than you can satisfy all by yourself, so you'll need to hire other people, in which case other developers will be outsourcing the "figure out how to capture value" thing to you.
Or, it can just be your hobby, and you can treat it as such: do it insofar as it's fun for you, and don't worry about anything else.
Me myself, I'm a developer paid full-time to work on open source software.
I also have a handful of hobby projects I've worked on in my spare time, which I've put up on github with an open license. Those are things I would be doing for my own purpose anyway; might as well let someone else use them if they want. But I'm never expecting them to become a big thing, and if they did I certainly wouldn't spend much time working on them unless I decided to try to take a jump and figure out how to make it pay.
Open source is very hard to monetize (yeah, RedHat, but that is not similar to most open source projects.
If your open source product can be run as a SaaS, you might be able to make money by providing no-hassle hosting (think Ghost or WordPress).
Another option might be providing a open source core and then selling additional closed-source features (e.g. GitLab)
But if you simply want to sell your open source product to customers so they can run it themselves, then it's impossible. It's a dream for many developers and there are some success stories, but they are always the exception not the norm.
Solutions like selling support, or even worse, charging for documention, are simply unappealing to both developers and users.
There is another option - one that some open source advocates dislike: source-only products i.e. you sell you software product to customers to run them themselves. You give them the source code of your product so they can customise it to meet their needs. But the software is not open source and cannot be shared the way open source can.
There are actually lots of successful source-only products that are sustaining their creators full-time. Two examples: Craft CMS and Kirby CMS - both publish their source code on GitHub and rely on the honesty of their customers to pay (which they do). They have a thriving community of developers making plugins and extensions - proving that you can create a community of developers around a 'source-only' product.
1. In most cases, the popular OOS project has a team in some large companies, for instance, React (Facebook), Angular (Google), VSCode (Microsoft), etc. and that's mean that code is open-sourced however a key decision made by an internal team.
2. A donation can help you to buy a cup of coffee (or tea), however, not replace your full-time job.
3. If we are talking about Github sponsors, the idea is really good, however, if you are located in one of the following countries https://github.com/sponsors#countries, which is not my case, and I think my country won't be supported in near future.
4. To be involved in OSS is not guarantee tons of interesting job offers. In most cases, a good LinkedIn profile can be much helpful than good Github profile, and yes - to have good Github profile need to make something important every day that others can see your involvement, which takes more your spare time instead of adding several motivation phrases to LinkedIn profile for HRs.
5. OSS is a community and that's mean an opportunity to meet some interesting people.
I have gathered links about it here: https://bzg.github.io/opensource-challenges
Oh, and you can support my FLOSS contributions through Github: https://github.com/sponsors/bzg
While my work is currently done outside my core working hours, I've been exploring if it is possible to make it self-sustainable and have been reading about a few other people who have been successful at this. I think the trick is to make it possible for people to pay you in one or more ways:
a) Don't ask for donations, but offer a support contract. It's easier for devs to get that approved.
b) Offer a hosted version at a reasonable price. Sell the convenience -- of course, this might not be feasible if your open source tool is not easy to offer as a hosted service.
c) Offer some premium features as a paid product. Companies are again happy to purchase a premium version if the pricing is not ridiculous (e.g. $500/year will be a no-brainer) and you can also throw in additional support.
d) Get a company to sponsor a feature if it is something that they badly want.
e) Charge for adding a company's logo in the Github repository as a less intrusive form of advertising.
f) Use your open source code and popularity to get a better paying job with work-life balance. Indirect monetization but hey, that's pretty legit.
g) Find a company that allows you to work on an open source project full time. Not too many companies do it but if your interests/strengths overlap with a project (e.g. Kubernetes) that you contribute to, this could be an option.
Most of the time the only viable option is to work for an organization (either as an employee or not).
Don't go for FAANGs. There are other orgs and companies out there.
Asking random users for donations works on very few cases.
It's a sad state of things. Most modern technologies have been researched with public funding (semiconductors, fiber optics, GSM, GPS, touchscreens) but now people don't even remember that.
In case it is helpful, here are the results of our study: https://blog.timescale.com/blog/how-open-source-software-mak...
It doesn't affect open source users; though Stallman doesn't like it. Projects using this kind of idea are berkleyDB and ghostscript.
During Perl's peak in the early 2000's, I'd guess there were easily dozens (hundreds? thousands?) of companies using code I'd created. Some of the bigger Perl companies these days include Craigslist, Booking.com, CPanel, Bluehost, and Grant Street Group. Many of these companies have been around for quite a long time.
Starting in 2008 I began adding a DONATIONS section to my package documentation, like https://metacpan.org/pod/DateTime#DONATIONS. Over time, I've added this to nearly everything I maintain.
Unfortunately PayPal doesn't provide stats going back to 2008, but at a best guess I'd say I've received about $2,000-5,000 dollars over 12 years or so. The largest donation I ever received was $500. Most donations are in the $1-50 range. None of the companies I mentioned above have ever donated anything, though they have all contributed to The Perl Foundation in the form of conference sponsorship.
So that's a long-winded way of saying that I don't sustain myself on open source. This is a pretty common story. Companies rarely make an effort to support individual developers. They will support language/project foundations, but that money isn't going to be directly divvied up among library developers for the language.
It feels wrong to charge for end product. It means using DRM to block people who wouldn't pay anyway, from accessing a copy of software that costs me nothing. I want to be payed for the development effort, not for copy of product.
There should be a agreement of platform over which developers want to receive money (for example, Microsoft's GitHub Sponsor might not be the best choice), followed by strong media push to change the mindset that open source is free for taking. Most companies can spare the money and in the long run everybody benefits.
Over the past few years I've mostly been working in leadership (but still with a bit of hands-on), so I mostly work on things that interest me. For example, for a while I was obsessed with building a web scraper, and some machine learning stuff, so I built:
https://github.com/fredwu/crawler and https://github.com/fredwu/simple_bayes
Working in bursts works well for me, as I can dial the effort up and down depending on my availability and mental space.
At the moment I'm supporting myself and my family with a regular 9-5 programming job, but I'm also accepting donations through Patreon, GitHub Sponsors and PayPal. There's been a huge amount of support coming in, especially given the ambitious nature of my project, and I'm quite hopeful that I'll be able to turn this into a full-time gig not too far into the future.
My tip would be to find ways to share the development process, not just the software itself. You don't have to make videos like I do, but write about it, share screenshots, post about it on social media etc. :)
I was getting maybe $10-20/month from Patreon and GitHub Sponsors, but in the past two months I started asking people directly to support my work if they could, and to my surprise, a number of people have! I don't know if I'll reach a 'sustainable' level anytime soon, but if I can, I'll be able to spend more than a few hours a week on pure OSS work.
I sometimes feel opensource collaborative projects only exists thanks to alcohol, but single-person projects thanks to boredom or scratching itch.
I estimate that I've earned around 3 - 4 k€ in 6 years because of this project mostly from: - Freelancing in projects related. - Paid version of an Android app that uses the library - Free version of the same app with ads - Donations
Obviously I have a proper job but I've been able to learn a lot because of this side project. I would do it again
I've been looking into the very same question, IMO:
1. Build a software that you can use as a magnet lead for your services
2. Build PRO/Enterprise version that you will charge for.
3. Become a very know individual in your field and get donations (very hard)
4. Provide services related to the project.
5. Offer paid version of the project, like Ghost I guess.
6. Get hired by a company to continue your work.
Personally, I don't think donations work that well. If you are gonna put a price tag on something, people are gonna pay for it if they need it. Also worth remembering that most of the projects aren't gonna earn you anything. No one is gonna donate to you for the nth existing JS lib you crafted.
I also found the PolyForm Noncommercial license which, I think is pretty great for hobbyist use and learning, so I'm trying to sell that license for lunch money to hobbyists and educators / charities.
Just getting started, will report back on how it goes.
Repo is here https://github.com/sudhirj/redimo.go
I have a paid plan with additional features which allows me to sustain my cost, and pay myself :)
Being open-source doesn't mean that you can't monetize your work. People are happy to pay when you develop something great :)
Our website: https://gladysassistant.com Our GitHub: https://github.com/GladysAssistant/Gladys/
It was pretty awesome. For most of the time I was able to live somewhere fairly affordable and earn a comfortable income (though a long way from SV money.) I still miss that community and meeting up with them at sprints and conferences around the world.
I know the guy who wrote Jepsen makes enough from consulting to live off of the consulting.
The guy who wrote haproxy started a company that sells basically haproxy consulting and custom services.
The guy who wrote Sendmail did the same, and then Sendmail was acquired. The core maintainers have always done Sendmail as part of their job.
Netflix had a lot of core maintainers of key software on staff who got paid to work on OSS alongside internal projects.
We're still hiring, by the way.
Also, what if people donate and there are various contributors to the project beside the main author(s)? Should they get a piece too?
Another way is providing an SaaS version, but having an open core product is better for this. If memory serves right, wallabag does something like this.
Enterprise support etc: There are quite a few companies that provide support for software. Red Hat for example.
Bounties: see bountysource
The software is free to use and the source is available however not with permissive license. The money I've made when divided by hours of work approaches $0 per hour rate. But hey, I wrote it for myself mostly.
Anyway.. the answer.. a full time job on the side. :|
I've never viewed it as a potential full time job. However, I recently got GitHub sponsors and make about 5$ a month!
To be clear, I'm not complaining, I think it's worth it.
Like https://www.group-office.com/
or https://www.proxmox.com/en/
That way maintainers give and receive, not only give.
https://www.fossjobs.net/ https://github.com/fossjobs/fossjobs/wiki/resources
My current employer pays me for any OSS I do in my free time which is pretty cool. We collaboratively maintain OSS projects and are able to actively work on them when between client contracts.
The best would be to combine paid hardward + subscription for software. Does anyone know any fully open source example of this? I don't.
https://webcache.googleusercontent.com/patio11/status/936629...
One cool thing about doing this is that due to the nature of maintaining a project like this, I end up being the most competent at building products with it. This in turn leads to my discord community asking me to build ideas and I've selected one to build and monetize (still WIP). So it might end up being quite lucrative.
Don't.
If you want money get a job.
If you can't help but write software, if coding is what you do, all day, every day, because everything else is fucking dull, if you, like Asimov, take your typewriter on vacation, then, one day, your skill and art will be superlative. On that day, give the world your software.
I roll out of bed and within twenty minutes I'm on the machine. I won't stop until my eyes cross (my body's way of telling me we're done for the day) at around midnight to 2AM. I burned up my stomach eating nothing but coffee and blueberry muffins from dawn to afternoon, I blew out my back from not sitting on good chairs (Aeron chair FTW three years and my back works again!) I've been doing this for over a quarter of century and I'm still not good enough to publish my software.
(I do anyway but not because it's good enough yet. It's not.)
Computers aren't about making a buck (increasing a mere scalar value) they are an investigation into the nature and meaning of truth. A tool for thought.
Bucky Fuller pointed out that, when you have computers, you can just program them with the available data and they can tell you exactly how to build a working civilization. ("World Game" is the search term there IIRC.) We could solve most of our problems on a spreadsheet if we could just get out act together. We've got all the technology we need already.
(The trick is that we have to optimize globally, e.g. things like connecting all the world's electric grids into one so that we can shift power around as the planet rotates. A global grid has greater opportunities for efficiency.)
So, from that POV, trying to make a living from somehow selling software is counter-productive. Very good programmers have already created all the FOSS we need. Work to alter the nature of the economic system itself.
- - - -
To answer your question, I was homeless when I learned most of my knowledge, I wrote a cool demo and presented it at CodeCon and was offered a job on the spot. Since then I've worked for many startups and once as a TVC at Google, but I have never made a penny from open source. No, wait, that's wrong: I once made $50 selling copies of an RSVP (Rapid Serial Visual Presentation) app I wrote (in Delphi!) at a college (I sold it at a college, I wasn't attending.) I hope the two people that bought it got some use out of it. But that's it I think.
1. University, some time after it. No much obligations. Take low-effort job to sustain yourself (maybe freelance), spend the rest of the time contributing to open source. Treat it as a time to learn. The main goal is to become good. You can learn very different things by contributing to OSS packages, as compared to working for some outdated local company. Try to internalize how popular software is organized, how people review code, etc. Find people you respect, work with them. You don't need to have a shiny CV and pass technical interviews to work with great people you can learn from, developing great real-world technology, solving hard problems.
2. You need a real job. Try to find one which allows you to spend some time doing Open Source; have it as an important criteria for choosing a job, among salary, work environment, etc.
For me two types of companies worked as a "real job" which allows OSS contributions.
First, some small startups / companies. They often don't mind if you open source a few libraries from the codebase you've created, because usually it is not the code itself which is important for startups; they're trying to find product-market fit. For them a benefit is that code become organized better (after an idea fails, code can be reused for the next idea), and developers are happier, so it can be win-win. You won't be working on open source full time, but you'll be able to create something useful, and spend significant amount of time on it.
Second, there are companies which are built around open source, or contributing a lot to open source. Often there is a company behind a popular OSS software (e.g. Elasticsearch for Elasticsearch, or Scrapinghub for Scrapy). Sometimes company's github has many actively developing OSS projects, which is a good sign. Look for such companies, apply. There is a higher chance to be able to work on open source if you join such company. It is not given you'll be allocated to work on OSS, but a previous experience maintaining Open Source and contributing to it helps. That's good to be proactive here - use your experience gained from unpaid OSS work or small startup OSS work, start contributing without being asked.
According to my experience, working full time, having family and having significant Open Source contributions is very hard, unless an employer supports it, or unless the job is not really a full time job.
There are "rockstars" which are able to sustain themselves just by working on their own OSS projects, but I think currently they are outliers, not a norm. It may be possible to do this, but I've personally seen way more opportunities to do sustainable OSS work as a part of day job, as compared to donations or a new business.
I've been earning money writing open source software since about 2005. It's not always easy and sometimes I've questioned my sanity, but it's been incredibly rewarding.
Here's my (extremely shortened) history with FOSS:
Between 2005 and 2015 I worked at various small dev shops that built websites based on the open source Python-based Plone CMS (see https://plone.org). We would modify Plone via plugins that we would (usually) open source and as I got better I also started working on the core Plone code as well. I also started contributing to various other FOSS Python libraries. Most of this was paid work as part of my day job.
In 2013 I started a side-project writing a web-based FOSS XMPP chat client called Converse.js (see https://conversejs.org). This was purely for fun and I had no monetisation strategy. Over time people started contacting me with requests for paid work and I started to realise I could potentially work on Converse.js full-time. In 2015 I quit my job as Plone dev and started freelancing, trying to work only on Converse.js-related work.
Working on Converse.js has been extremely rewarding with diverse challenges. Here are some examples:
* Asynchronous frontend JS development that's not HTTP-based, but XMPP-based
* Designing and creating UI/UX for a product that many people use personally and professionally
* Developing a plugin system
* Developing an extensible API
* End-to-end encryption of messages via libsignal
* Standardized protocol development of XMPP via the XMPP Standards Foundation
* Managing an open source project with multiple technical contributors and many users
For a while I took on other jobs to pay the bills, but over time the Converse.js related work became the bulk, and in 2018 I worked the entire year only on projects related to my FOSS chat client.
In 2019 I accepted a full-time position at a company that is building out a chat solution based on Converse.js. I made it clear that I want to continue maintaining and running the project and that I want to upstream work into the open source project whenever possible. So far this has worked out very well and I continue writing a lot of FOSS code.
Concerning tips on how to start working on FOSS code:
* Look for a company that advertises the fact that they write open source code. Lots of smaller dev shops that use FOSS themselves also contribute back. Alternatively, ask the company where you're at whether you can open source some of the code you're working on.
* (Much, much harder, but very rewarding) Start a FOSS side-project and hopefully grow it into a size and scale where other people start to notice and use it. Once enough people use it, you'll start getting paid work from the people depending on it.
If you want to work on Open Source as a full-time career, the best option is to find a company that is working on or invested in an OSS project and join that team.
Examples: VMware contribute heavily to Kubernetes. As do Azure, and a myriad of other companies from large to small. I tried this option, it has pros and cons, if you go for this one, let's hope you like politics and corporate jargon.
The question is - what does "full time open source" mean to you? To me, it means work on independent projects. Unfortunately that alone is not financially sustainable in the long term. You may be able to drain down your savings for a few months, but then you're going to be left feeling a little down and out.
Options for independent OSS work are a little rough, read this from 2019 if you're a project lead and think that somehow the community or users will pay your way just because they use the software in critical systems, spoiler - they won't - the reason they are using your software is because it's free: https://blog.alexellis.io/the-5-pressures-of-leadership/
If you have your own projects that you want to work on, you'll need to find a revenue stream.
This is what I wrote up for those considering going independent: "What you need to know before you go freelance" - https://levelup.gitconnected.com/what-you-need-to-know-befor...
Options which clearly do not work: sponsorship, donations, asking users to support you, offering commercial support as a single-person company
Options that do work: Job at big-co (you won't work on your own projects, but theirs, or their interests). Working for yourself as an independent consultant, and taking a "pay cut" to contribute to OSS as and when you feel like it. You could also create a paid product and use this to find some "time off paid work", which is essentially what OSS is. That product could be based-upon the OSS you want to build, or not.
I do have a GitHub Sponsors account, but I run it as a value-add subscription, not as a donation platform. https://github.com/sponsors/alexellis - starting a consulting business from scratch is not easy, especially in global lock-down and a spending freeze. This, eventually may provide a buffer to pay the monthly accountancy and company costs.
Longer term plan for my business is to capitalise on product and consulting practice. Open Source will be "in the car", but not in the driving seat.
The question for you is - what do you think it means to "work on open source full-time", why do you want that and what are the alternatives?
One thing I would suggest, is thinking about what's acceptable to you ?
At the risk of summarizing what's been said already :
1) Get donations
2) Build some form of open source business (consulting, or open-core)
3) Find a business that will pay you to work some part of your time on open source
4) Find another work and do open source on the side
I think that it's very easy to fall into the 1) trap. In many ways, it probably aligns the most with the values of open source which you seem to care about, but except for a handful of people, this is clearly unsustainable and a road to sadness. And all the various efforts that I've seen over the last 20 years to "improve" this situation have failed.
Solution 2) is pretty popular around here, for obvious reasons. Especially on the "open core" side, it tries to find an equilibrium point between open source and making money. While I'm sure there are many successful examples, there's also a pretty big tension between the two sides on terms of ideals, and they may not define what's success the same way. You may not enjoy a successful exit.
Which brings the last 2 solutions which are pretty similar. One thing I'd say is that in general, there's a lot of demand for software engineers. Many fields have needs for them (a lot of them outside the software industry) and, to keep this short, you probably have options to find something that you can accept (you may not want to work at Oracle !).
In my case, I've been taking care of a macOS screensaver[1] for a couple of years now. Since I didn't start the project, I've always felt bad about asking for donations, but a few users insisted, so I've added a small donate button. Despite the stars and downloads, the donations are far from even covering my expresso addiction ;)
But I never expected otherwise. And sure, I could make the donation thing more prominent, some may even say put a button in the preference panel of the screensaver. I'm not sure it would move the needle by that much, and it's probably not worth the extra guilt I'd feel about asking for those.
So in my case, I do freelance engineering jobs, surprisingly completely unrelated to the insanely niche field of macOS screensavers ! I also try to work on (unrelated) iOS apps for myself, although my expectations on that are mild, it's not an easy path.
But I do have control of my time, and I enjoy being able to keep adding new features to Aerial (there's weather in the latest betas !), although that effort tends to come in bursts depending on my free time. And although it's a burden, I've even taken to "enjoy" doing support, which I certainly wouldn't have expected !
For example, Everybody on the Open-JDK program is on the Oracle payroll.
Yes, that's right. Large Corporations are the biggest contributors to open-source software. I know that might burst a bubble of people thinking we all sit in mommies basement coding the best software around for free, the reality is different. Microsoft, for example, is one of the biggest contributors to the Open Source community on the planet.