Getting paid to work on open-source?
I'm a freelance software developer and I've just had my first real experience getting paid by a client to work on an open-source project (some library we use heavily in our app that is lacking a few feature we need).
I know there are companies out there that pay employee to do a % of their time or sometimes even work exclusively on open-source projects.
I'm wondering how I could go about doing more of that type of work as a freelancer and if others have done the same.
I contribute as much as I can to open-source off-the-clock but I'm curious if there are people out there getting paid regularly to what I'm only just having an experience of.
Thanks for any thoughts, suggestions or leads!
52 comments
[ 6.9 ms ] story [ 106 ms ] threadPersonally, I don't think it makes much sense for a position to be 100% open source contribution. It's difficult to make the business case for it, and eventually, you'll tire of it (maintainers that don't respond quickly, feature requests that don't match with their vision for the project, etc.)
There's a clear benefit to doing this. If we have a module that we have to apply 100 patches to in a specific order every time we upgrade the module, that's a lot of maintenance burden. If we submit those patches upstream and let the module maintainer roll them into the module, then maybe we only have 4-5 patches to apply. That makes upgrades significantly easier. In fact, our developers are the maintainers of some of the modules that we use, so they have incentive to be responsive maintainers. When a patch is posted, it's in their best interest to commit it ASAP so that we don't have to include that patch in our patch list.
Getting to that point is step 1, and it's relatively easy if you work in an environment where you depend on a lot of external open source software.
The next step is slowly pushing a cultural shift in your company to develop things in a generic way that would be useful to people outside of your organization. Unfortunately, there's no clear cut way to do this, as it depends on too many factors. Again, though, the justification really comes down to maintenance burden. If it's open source and people use it, then it's likely that other people will help you maintain it (fixing bugs, adding features, etc). The more you involve the community, the more likely it is that you will be able to share the maintenance burden. An example of this is that a few of our developers co-maintain this module: https://www.drupal.org/project/media_theplatform_mpx
We needed to integrate with a video service, and since it's a third party commercial service, it's likely that somebody else needs to integrate with it as well, so we did all of the generic integration in the module I linked to before, and then the very few things specific to my team's product go into a module that we don't open source.
One thing that I've noticed is that it really comes down to your supervisor being open to looking at things a little differently, but I think the long term benefits are clear and definitely worthwhile.
I work at Red Hat. I've never written a single line of proprietary code in my entire career. And hope never to.
But in the past I've done contract work on OSS when a company had the desire to build a reputation in a specific field, or was using a project that needed extra help.
All of those projects have a different type of work style. I'd say the former (OSS as a product) is more like working on product at a startup, so is more intense. Finding the former is easier as well, just look at all the OSS startups today: Docker, RethinkDB, etc.
I love the product strategy of releasing OSS and then building a business around it. I hope to do the same some day.
Do you see any unique challenges with launching an OSS product?
In some cases these freelancers have shopped-around work to previous clients like us -- eg. "if I can get $X from you and $Y & $Z from these other clients, I can work to make this large/necessary change to the project happen" -- which maybe we don't need enough to pay for ourselves but we'd like to see.
Otherwise we expect team members or contractors working on projects involving OSS to contribute any fixes & improvements upstream where practical, and we book this into project timelines & budgets.
We do this for a strategic reason, which I outlined here: https://www.fluentd.org/blog/unified-logging-layer
https://www.bountysource.com/
I think the bounty model could work well, but on all the projects I've seen it implemented on, it acted more like a tip mechanism for the core team than a way to attract professional freelancers to contribute, because of the low value of the bounties.
Take a good look at the ecosystem of your open source project. Does it have a large user community? Are there companies involved in funding some of its developers? Will the project still be alive in a couple of years?
If you contribute to widely used open source projects you should be able to find paid jobs doing consulting (troubleshooting bugs and other problems, helping companies who are transitioning to using the software), training users who rely on your project to do their job (this might involve a good amount of travelling), and coding (but to a lesser degree). Coding activities are often taken for granted even by commercial users since "it's free software" as in "saving costs". I am rarely being paid for coding directly, and mostly work on code during off peak periods where not much consulting/support/training is going on.
Unless you start a project of your own, there's a non-trivial amount of time to invest before you become enough of an expert in a project to be taken seriously by potential clients. I was lucky enough to be on paid student job to do just that for several years and now I'm freelancing too (URL to my offering can be found on my HN user page).
Showing a strong and productive presence in user support forums will also help raising your profile, but again is a lot of time invested up front.
If you end up persuing paid open source work in earnest I'd be interested to hear how you're getting on. Feel free to contact me any time.
Good luck!
I work on the F# language, which has been on Codeplex since 2010, and 1 year ago moved to a fully-open-engineering model (and moved to GitHub about a month ago).
The broader team I'm part of, which includes the C#/VB compilers, Typescript, Python tools for VS, and the .NET framework/JIT/CLR, is also now pretty much 100% open source (or is rapidly and publicly moving that direction). That's maybe ~100 Evil Empire FTEs doing OSS every day as their 9-5, just in my building. Not bad!
This action doesn't make them any less Evil. If they didn't neglected the server back end and just concentrated on user desktop they would never be doing open source. The fact was they lost when they didn't bet on the internet and several sector.
Now that they are losing ground on several sectors and that they are doing open source stuff doesn't mean that they're not evil anymore. Their open source stuff is to help them stay relevant in these sectors. This isn't purely out of altruism. If they were to cross over to the good side they wouldn't be making money off of Android by threatening these companies with patents lawsuit.
Windows desktop/mobile (and big apps like xbox music) gave birth to TypeScript (which is obviously OSS).
Here are some jobs I found that are 100% open source:
http://careers.stackoverflow.com/jobs/80088/javascript-engin...
http://careers.stackoverflow.com/jobs/80212/senior-software-...
http://jobs.netflix.com/jobs.php?id=NFX01939
https://lever.co/jobs.html
But to answer your question, just request time with your manager and explain the situation pretty much exactly as you have done here. If they say that you can't distribute the code, I would abide by the decision. Make sure to explain how important it is to you, but be civil and don't make any ultimatums. This is much better than having them take legal action on you after the fact (which has happened to many unsuspecting developers).
If they can't accommodate you, consider what I said at the beginning. It took me years to transition to a type of work that made me happy, but it was worth it. You don't have to do anything drastic, but it never hurts to think about your options and work towards your dreams.
Generally, employees of Mozilla Corp. are paid (and managed) to contribute to specific aspects of the Mozilla project. Sounds confusing, but essentially, imagine there is a new feature for Firefox browser's rendering code that needs implemented -- it's open source so technically anyone can submit a patch, but Mozilla-the-legal-entity may opt to hire and pay you to fix it (and many more after that).
You are then a professional software engineer working for someone who would like to reach a certain goal (such as: A new release of Firefox!) and gives you money to help them achieve it.
Edit: For disclosure, I should have mentioned that I work at Mozilla.
Advice: develop your github account, find a project that's hiring and make a contribution to get their attention.
I guess, what I'm trying to say is that if you become an expert at an open source stack that is useful, you should be able to land consulting jobs to improve that stack. But it's not because companies particularly care about open source.
So while testing things out I tried some Microsoft Access 2010 files with "Attachment" data types. Crash! Jackcess couldn't handle tables with that data type. It wouldn't just kill that data type but the whole table. So I looked at the source code, wrote a kludge that got around the problem, and sent the patch in ( http://sourceforge.net/p/jackcess/patches/15 ). The maintainer looked at the patch, and then rewrote the code so that it could handle not just attachments but other data types.
So I make money from the app I build with their code. The upstream gets patches for problems I find.
I've been Android focused lately and have sent a lot of Android port patches out (or just general fixes for bugs I found while doing a port). The latest version of Xscreensaver has some of my alpha Android port code in there.
It's a good dynamic for cooperation - the upstream cares about their code, which is usually cross-platform. I care about Android and using their code on Android. The Google Play users just want to use the app generally. Everyone winds up happy.
I think the most important thing is to choose to do open source code because it gives you the ability to work on code you believe in, even without 'market fit' or 'commercial viability'.
If you're a programmer (and can make an interesting open source project) you will always have enough money to live on. Programming wages for those who are reading YC probably range (I'm guessing) from 60-200k+.
Try to make double the salary you need for a year, then take a year off. Or try finding a way of living off half of your normal salary. Consider in many fields (my girlfriend is a librarian) it takes 6+ years of schooling to reach even the possibility of applying for a position with a 50k/year salary.
If you think programming can be art, open source code is your chance to create art without concession. Cherish this opportunity, and try not to worry about whether or not others want to pay you to do it. Ideas have their own merit, chase them wherever they lead.
I've read and followed most of your work during the development of Semantic UI and when i start developing my own stuff on top of Semantic UI i will be sure to contribute all of it towards your repo. I will also setup a concurrent donation!
Thanks for being such an inspiration and above all, for making it open source!
EDIT: That came out a bit too fanboy than it did in my head, well, i guess I'm a proud fanboy then!
Honestly, it's a pretty good feeling, it's fun, let's you interact with a larger community from which you can learn from and it might pave the way to gigs.
http://sneer.me/project.html https://github.com/sneerteam/sneer
In my freetime I try to publish as much code as possible although it doesn't get much attention but without this I would not have gotten the job. For me open-source is not about getting famous or working on the next big thing but giving the community something back and not just consuming the work of others.