Getting paid to work on open-source?

84 points by danaw ↗ HN
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 ] thread
I work at a major media company, and while my job description doesn't include open source contribution, I contribute almost every day through normal work. Granted, we use open source software for what I work on. All of our bug fixes and new features are submitted upstream as patches. It's much easier to get management to commit to allowing time for this because it reduces our long-term maintenance burden.

Personally, 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.)

I'm trying to get this kind of thing going at the company I work for. Was this system already in place before you joined? I'm hoping you can speak more to some ways that will persuade management to support this effort. Thanks!
Yes, it was already in place when I was hired. I'm a Drupal developer, and pretty much every site that I work on uses 10s or 100s of contributed modules from Drupal.org. When a bug is reported to us, the first thing we do is narrow down what module is causing it and then go look through the issue queue for that module to see if it's already been reported. If so, then we can just apply the patch from that issue. If not, then we fix it and upload the patch to Drupal.org. We're already doing 99% of the work involved in open source contribution. Why not do the remaining 1% and get the benefits from it?

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.

Thanks for your thoughtful reply!
Plenty of companies hire people full time to work on open source projects - look at all the companies involved in things like the Linux kernel or OpenStack, they hire messes of developers who work on F/OSS projects.

I work at Red Hat. I've never written a single line of proprietary code in my entire career. And hope never to.

Great to hear. Do you have any suggestions on how a freelancer could do more of this work?
There are all kinds of OSS projects out there. Some companies build OSS as part of their product strategy (I run one of those companies: http://ionicframework.com/). Technically, we have several people on the team getting paid full time to work on OSS.

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.

Ionic is great, thanks for your work on it!

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?

We hire freelancers who are experts in particular projects to fix bugs, add features we need, etc. Some of those are on a "retainer" basis (eg. $8000 for 80 hours work on an OSS project for us during a year where we can "consume" that time on bugs/features we need), others are on a fixed-price per-project basis, others are hourly. Generally in these cases the freelancer will be a core contributor to the OSS project in question, and come through our contacts in the project community. Posting to the -dev mailing list as either a client needing something done or a freelancer available for work is probably a good way to start.

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.

Have you seen Bountysource?

https://www.bountysource.com/

The problem with bountysource is that the bounties are quite low for the amount of work involved. Working a week consulting on the customization of open source software for a business will usually net far more than the largest bounty on there. (And those large bounties are significant, highly-specialized tasks.)

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.

Your clients will need to grok the ideas behind open source. Try asking potential clients what they believe the open source community will get out of it if you take on the job. Their answer will probably tell you if they understand what they're getting into.

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!

My company is an open source company and we just got funded. Needless to say, I'll pay for work on the project, http://github.com/amark/gun - it is an in memory database with push notifications and graph storage. If you're interested send me an email: mark@gunDB.io
I'm a regular salaryman at Microsoft, and everything I've done for the past 2+ years has been open source. It's pretty cool, after having worked on traditional closed-source msft teams for my first ~5 years.

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!

> That's maybe ~100 Evil Empire FTEs doing OSS every day as their 9-5

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.

Name one company do in open source purely out of altruism.
Mine does, although it's a non-profit funded heavily by philanthropy and government grant money
A non-profit is not really a company in the traditional sense of the word.
There's a lot of hyperbole there. Evil empire is sort a joke, you know that right? Most people don't actually think they are "evil" in the Pol Pot sense. Also, .... yeah this is a lot if hyperbole.
> If they didn't neglected the server back end and just concentrated on user desktop they would never be doing open source.

Windows desktop/mobile (and big apps like xbox music) gave birth to TypeScript (which is obviously OSS).

Work for MongoDB. You can get paid to work on open source software 100% of the time.
There are plenty of jobs that are 100% open source. Based on my experience working on open source software is both interesting and challenging. Biggest challenge for me is that people are expecting you to provide 24/7 support.

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

At Lever, we've got roles that are 100% focused on very cool open source technology, such as helping to scale and improve our unique web framework DerbyJS. We are working on cutting edge JavaScript rendering strategies as well as distributed data syncing via Operational Transformation, which is how Google Docs and Google Wave work. We are also excited for our product engineers to get involved in helping to improve our frameworks.

https://lever.co/jobs.html

Some contract-funded R&D projects are required to be open source. Check out the Darpa open catalog, for example.
I've actually got a slight variation of this question. There is an open source project that I created, and it is starting to get some traction. I also have a need at work that I can fill using this project (not customer facing, just internal IT related). And there's a number of additional open source projects that I'd like to extend, and use for work too (such as adding a better database backend to Nagios for example). The problem I have, is if I bring this up to management, I take the chance that they will think I worked on it during business hours (I actually coded it up during a 2-week holiday break), or that they otherwise own the IP for the code. Not that I think I'll have a major problem with it, but it could be a bit awkward. Is there any guides out there of how to approach this subject with management?
Everywhere I have worked, you would have to completely separate your employee time from the project (not even talk about it) and leave it to other employees to decide if appropriate to contribute.
Most salaried software engineers have contracts that any software IP they create belongs to their employer, whether they do it on company time/computers or not. You are correct that this is especially hairy if you wrote a project that could be applied to your employer. Check your contract and tread carefully.
I'm a systems admin/engineer, not hired specifically for software. However, I actually had that type of contract when I worked at Motorola ("Anything you conceive solely by you or jointly with others, at any time of the term of your employment..."). The company I work for now did not have that in any of their paperwork, at least not that I've signed directly. Unless it is hidden in the employee handbook, then I only signed a paper that says I've received the handbook. But still...
I used to have serious problems with working on free and open source projects due to my contract at work. Even though my employers said that they would evaluate things on a "case by case" basis, it was often "Write it first and we'll tell you if you can distribute it". Then if I wrote it they would always say "no". Eventually I learned that working in an environment I like is more important to me than the size of my paycheck. Every job I've worked at has always given me more than enough to live comfortably, even if it wasn't always at market rate. Like other people on this thread, I give steep discounts for compatibility with free and open source development. I am much happier as a result.

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.

Mozilla is a great company to work for. You only do open source, we care a lot about the open web, and you can work from anywhere in the world. http://careers.mozilla.org/
I have to honestly say that mozilla's recruitment process is among the worst that I have come across, which was really surprising to me, the recruiters do not seem to care about past open source contributions and radio silence is common, I wish it were easier to apply.
+1. I am an active contributor to Mozilla. I contributed to its localization works (ff & ffos) out of freewill. And they later contacted me to focus on some other works. By the way, they pushed a lot of work to me this time around (new lang. translations & projects). And when I asked that they make it a contract OR that I should be compensated, they change the tune of the correspondence. Now, they are giving the work to an agency, which will heavily charge them. They no doubt wanted to start/keep exploiting our team. I know how terrible financial matters could be in Mozilla. Nevertheless, I like their products & some of its employees/teams.
How closely are developers managed? Is it like a traditional company or is it more like contributing to any other open source project?
Hard to answer that as I lack your exact frame of reference.

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.

Also check this out, https://assembly.com/ I recently discovered it. You can be paid for working on open source code. In fact you are paid in % of the product not directly in money. When the product makes money you gain that much % of the product you own. Read terms carefully though, maybe you disagree with them.
The open source Beaker Notebook is hiring full-time front-end and full-stack engineers: http://beakernotebook.com/careers

Advice: develop your github account, find a project that's hiring and make a contribution to get their attention.

As a freelancer myself, I've found working on open projects to be a pretty rewarding way to spend my time. I typically discount my rate by 50 - 75% for all MIT or GNU licensed projects, to encourage potential-clients to make their otherwise closed-sourced project at least partially open. Does the trick much of the time.
50%-75%? That's quite a haircut. How can you afford it?
Half of a typical programmer's salary is still more than most people make on average, at least in the USA.
It's just a matter of price-anchoring. I used to charge the same rate for all clients regardless of whether the projects were closed-source or open-source. When I decided to switch to a dual-track pricing structure I pushed one option much higher (closed source) and one option much lower (open source). On average I still end up making the same (since I get a mix of both kinds of clients).
I've started giving a 15% discount for work that will end up under a free software/open source license, and it seems pretty effective. 50% sounds extreme, but maybe that's what it takes with some clients.
The way it usually works is that you become an expert at a certain stack. Companies will pay an expert when they need something to be done around that certain stack. Whether that particular stack is open source or not is not especially relevant.

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.

A small example for myself, when I started programming for Android I looked for popular open source Java libraries I could use in an Android app. One was Jackcess - an LGPL licensed library which handles Microsoft Access files. So I ported it to Android, put a small UI on it and released it ( https://play.google.com/store/apps/details?id=com.panaceasup... ). People responded, so I updated the UI and logic, mostly due to suggestions. Right now it makes about $70 a month from ad clicks for me.

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'm the author of Semantic UI <http://www.semantic-ui.com> an open source UI framework.

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'm actually basing my entirely new design toolkit on Semantic UI and will be using it for every future project in my company.

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!

I used to work for Datacratic <http://datacratic.com> for a year and a half and I'd say a good 35 to 50% of the time was spent working on RTBkit <http://rtbkit.org>, an open source real time bidding framework on which part of our products were built on.

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.

I have been hired by a software company to develop one of their SDKs which has been open-sourced later. After this job ended I kept working with them and a some of my contributions were and are still towards open-source projects which are mostly promoted by the company themselves. I, personally, don't have experience with working fulltime on OSS but I read some stories about it where companies hire people to maintain a project they use internally similar to a SLA.

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.

(comment deleted)