Adonis Diaries

Posts Tagged ‘open source projects

What Programming Language do you use? Would you switch based on Average Income?

 posted this August 21, 2013 “Average Income per Programming Language” (selected as one of top posts)

Update 8/21:  I’ve gotten a lot of feedback about issues with these rankings from comments, and have tried to address some of them here The data there has been updated to include confidence intervals.

A few weeks ago I described how I used Git commit metadata plus the Rapleaf API to build aggregate demographic profiles for popular GitHub organizations (blog post here, per-organization data available here).

I was also interested in slicing the data somewhat differently, breaking down demographics per programming language instead of per organization.

Stereotypes about developers of various languages abound, but I was curious how these lined up with reality.

The easiest place to start was age, income, and gender breakdowns per language. Given the data I’d already collected, this wasn’t too challenging:

  • For each repository I used GitHub’s estimate of a repostory’s language composition.  For example, GitHub estimates this project at 75% Java.
  • For each language, I aggregated incomes for all developers who have contributed to a project which is at least 50% that language (by the above measure).
  • I filtered for languages with > 100 available income data points.

Here are the results for income, sorted from lowest average household income to highest:

Language Average Household Income ($) Data Points
Puppet 87,589.29 112
Haskell 89,973.82 191
PHP 94,031.19 978
CoffeeScript 94,890.80 435
VimL 94,967.11 532
Shell 96,930.54 979
Lua 96,930.69 101
Erlang 97,306.55 168
Clojure 97,500.00 269
Python 97,578.87 2314
JavaScript 97,598.75 3443
Emacs Lisp 97,774.65 355
C# 97,823.31 665
Ruby 98,238.74 3242
C++ 99,147.93 845
CSS 99,881.40 527
Perl 100,295.45 990
C 100,766.51 2120
Go 101,158.01 231
Scala 101,460.91 243
ColdFusion 101,536.70 109
Objective-C 101,801.60 562
Groovy 102,650.86 116
Java 103,179.39 1402
XSLT 106,199.19 123
ActionScript 108,119.47 113

Here’s the same data in chart form:

Language vs Income

Most of the language rankings were roughly in line with my expectations, to the extent I had any:

  • Haskell is a very academic language, and academia is not known for generous salaries
  • PHP is a very accessible language, and it makes sense that casual / younger / lower paid programmers can easily contribute
  • On the high end of the spectrum, Java and ActionScript are used heavily in enterprise software, and enterprise software is certainly known to pay well

On the other hand, I’m unfamiliar with some of the other languages on the high/low ends like XSLT, Puppet, and CoffeeScript.  Any ideas on why these languages ranked higher or lower than average?

Caveats before making too many conclusions from the data here:

  • These are all open-source projects, which may not accurately represent compensation among closed-source developers
  • Rapleaf data does not have total income coverage, and the sample may be biased
  • I have not corrected for any other skew (age, gender, etc)
  • I haven’t crawled all repositories on GitHub, so the users for whom I have data may not be a representative sample

That said, even though the absolute numbers may be biased, I think this is a good starting point when comparing relative compensation between languages.

Let me know any thoughts or suggestions about the methodology or the results.  I’ll follow up soon

Talking to an open source software?

Alan posted this MAY 5, 2014 (selected as one of the top posts)

How to talk to an open source software project as a large scale or otherwise interesting user

The very short version: if you contact an open source project anonymously, you may Not get the best help.

Feel free to also reach out privately and share that your post from is actually (say) from a very interesting deployment. Now read on for the long version!

Some months ago, the fine people from CloudFlare blogged about their new DNS implementation, and in that post they noted:

“While PowerDNS got us a long way, it started to run into issues as we scaled and dealt with an increasing number of large denial of service attacks … To their credit, the PowerDNS community responded to the first two problems with some efforts at rate limiting and other abuse detection”.

For us, this represented a sadly familiar pattern. We had lost CloudFlare as a user, and we had not been able to work with them sufficiently well to address their needs.

How did it happen, and why does it matter?

For an open source project, it is important to have happy ‘lighthouse’ users.

For years, we’ve proudly served the geodirection needs of Wikipedia for example. We’ve done a lot of work to keep various big users happy with their PowerDNS deployment.

If people know or find out your product is being used by ‘name brand’, large scale, deployments, this helps tremendously with adoption and acceptability.

In fact, next to development resources, a great community and funding, having impressive deployments is one of the most important things for an open source project.

So when we lost CloudFlare, other users contacted us to ask what had gone wrong, and if PowerDNS was still suitable for their needs.

We quickly reached out to CloudFlare, and Matthew Prince and co-workers sent us an impressive post-mortem on what had happened. They also graciously gave us permission to share the story, which is much appreciated.

It turns out they actually had shared their issues with the PowerDNS community, and they had gotten some help from us.. but not enough (by our own estimation). Importantly, they had not declared themselves as being a large or impressive deployment.

Now, we try to help everybody of course. We strive to be the friendliest name server community out there, and I think we are succeeding. But we can’t devote infinite resources to everyone.

Major users, major customers, interesting deployments need and get more attention. (It should be noted that we are also spoilers for users politely asking for help and willing to run test versions of our software, by the way. Nearly infinite help awaits you in that case!)

But, back to the subject of this post, here’s the problem.

Large or interesting deployments generally contact open source projects anonymously, mostly from gmail accounts, often even using fake names. And this is to be understood – in most large places (enterprise, public companies, government), sending out email to a world readable mailing list from a work email account is a sure way to get unwanted attention within your organisation (and get laughed at for your ridiculous multipage disclaimer).

Legal departments are likely to get their panties in a bunch – did you just share proprietary information? Security departments might ask if it was wise to publicly post company implementation details. Even the communication & marketing people might get in on the act. So email from is what we get.

But this effectively means you might have a 500 server PowerDNS deployment doing really interesting things, things we’d love to help you with.. but we don’t know.

Not only is this a matter of scale, we may also not realise the nature of your challenge. If we know what you are doing, our thinking about your problem may run among different lines.

Another reason why employees at big corporations are loath to contact open source projects is that they assume they won’t get help, and need to pay for support. And, while it is true that someone needs to pay the bills here, we realise that for many users, a support agreement is just not going to happen.

Corporate IT might not even know the whole company is relying on an open source project. Questions might be asked. For such organisations, we are fine with providing free help on the public mailing lists. But to give proper weight and context to your issue, it helps if we know who you are.

So what about PowerDNS and CloudFlare?

From our conversation, we now fully understand why they wrote their own server.

But if at the time we had known the scale of their challenge, we would have loved to have tried to meet their needs. We do very much appreciate their help in the ‘post mortem’ of our silent breakup.

As Matthew said “[PowerDNS] is a great piece of software that met our needs well for almost 4 years. Today our needs are extremely unique and it wouldn’t make a lot of sense for you to try and design for them.”

Concluding, on behalf of PowerDNS, and I expect a lot of open source projects: If you are a large or interesting deployment, please do post to the mailing lists.

We do understand you will not be doing so from your corporate email account. But please do feel free to in parallel contact the project privately (IRC channels are typically a great way), where you can share more details of who you are and what you are doing.

Both you and the open source project will probably end up better that way.




March 2023

Blog Stats

  • 1,518,865 hits

Enter your email address to subscribe to this blog and receive notifications of new posts by

Join 764 other subscribers
%d bloggers like this: