Ohloh and the popularity of programming languages in free and open source software

22 September 2008

I came across my name in a site called Ohloh. I remember it coming out a few years ago. Now it has had time to really get going, I thought it was about time that I review the site here.

Ohloh tracks the free/open source software it knows about, they only track code held in CVS, Subversion or Git (i.e. not in bazaar, which I tend to use, or mercurial), in repositories that they can easily find. Despite the limitations, this is a very large amount of code.

Ohloh tries to figure out from the commits who the developers are, and thus my name came up (because of a very minor contribution to Gentoo once upon a time).

Ohloh also tries to figure out the usage of programming languages in free/open source software. It allows you to produce various graphs; those below are based on the total number of active free/open source projects for each language.

Some important caveats to bear in bind:

  • Ohloh only tracks how the language is being used in free/open source software, the majority of code written in the world runs on in-house systems; this code is often never shared externally.
  • The percentage figures may be somewhat lower than one would expect because their definition of a language is rather weaker than I would personally use, so many markup formats such as HTML or XML and specialised syntaxes are all counted as programming languages even though they are not Turing-complete.
  • These are relative percentages, we are comparing languages against each other. All languages featured here are growing steadily in terms of the absolute number of free/open source programmers using them. So essentially what we doing here is comparing the speed at which languages are growing.

Regular readers will know that I like high level, general purpose, dynamic languages; so lets start with them:

http://media.commandline.org.uk/images/posts/languages/comparison.png

Go Python! Of course these figures might be completely meaningless as Perl is often used by sys-admins who rarely share their code using public revision control repositories.

Now lets look at the big beasts, the major compiled languages. These bread and butter languages seem to be stabilising around equal percentages:

http://media.commandline.org.uk/images/posts/languages/comparison2.png

Platform-oriented proprietary languages are not heavily used in free/open source software, as you might expect, however lets compare two against each other, Microsoft's C# versus Apple's Objective C:

http://media.commandline.org.uk/images/posts/languages/comparison3.png

C# is stronger, not surprising considering the vast difference in users between Windows and OS X.

A more interesting question is whether the rising use of C# in free/open source software is evidence of a developing accommodation between the Microsoft world and the Free World?

At least that is until Microsoft next calls us all cancer and threatens to sue the whole free/open source world again.

Interesting stuff, let me know if you come up with any interesting comparisons.

1 David Jones says...

Mmm porridge.

What do you prepare your graphs in? I'm becoming a fan of Google Charts API.

Posted at 2:09 a.m. on September 22, 2008


2 Ciaran McCreesh says...

The C and C++ stats from Ohloh are highly suspect. Originally Ohloh treated C/C++ as one language. I gave them a patch that would let ohcount detect the difference between C and C++ in most cases, although it will still sometimes treat C++ headers as C. But even with that, they haven't rerun ohcount on the full history for every project yet.

Posted at 9:50 a.m. on September 22, 2008


3 Giacomo says...

You say "Microsoft C++" and then show values for "Microsoft C#", which is a very different beast. If you want to go for C#, you shouldn't mention C++ :)

Posted at 12:58 p.m. on September 22, 2008


4 Zeth says...

Thanks guys for your comments.

@David, I will have to look at the Google charts API, I have not used that yet.

@Ciaran, Thanks for that info, the whole thing is probably quite suspect to be honest. After all as Disraeli said, 'there are three types of lies: Lies, Damn Lies and Statistics'.

@Giacomo, that was just an error, fixed above.

Posted at 2:06 p.m. on September 22, 2008


5 Roy Schestowitz says...

Careful there.Ohloh is former Microsoft employees

Posted at 11:03 p.m. on September 22, 2008


What do you have to say?

Show Editing Help

Europython

About

Hello, my name is Zeth, I'll be your host here.

Command Line Warriors is about taking control of your own technology, it looks at our experiences of computing; especially using GNU/Linux, the Python programming language, the command-line and issues such as techno-ethics, best practices and whatever is cool now. If you take control of your technology then you are a Warrior too!

This site is your site too which means that you can contribute and get involved. You can leave comments using the facility provided. For me, the comments and discussions are by far the best part of the site. So please do have your say!

Latest Discussions

picsus

January 5, 2009
Monique, a Leaf fan, originate this plumb persistent to believe. Now, let me regarding out that this was in no way an try to articulate one cooperate is more wisely ...
This week in the world of the Command Line; The Friday Round up!

QuickSilver

January 5, 2009
Nice! Is there anyway to implement a ServerAliveInterval for long processes? This is because my our firewall keeps closing the connection based on inactive connections. Thanks,
SFTP in Python: Really Simple SSH

Tun

January 5, 2009
Hi, Do You know, haw can i get start date for tasks evolution? If exists the similar way to your example: i.get_due() ? I would like to have sth like ...
Three Useful Python Bindings - ClamAV, Apt and Evolution

MurreiM

January 5, 2009
This is great! http://www.youtube.com/MurreiM Buy Alli Orlistat online cheap
Filing cabinets 101 - An introduction to disk partitions

sarah

January 5, 2009
I recently came across your blog and have been reading along. I thought I would leave my first comment. I don't know what to say except that I have enjoyed ...
This Week: Freedom not Time-Bombs

jnfrlast

January 4, 2009
Hi! http://www.youtube.com/jnfrlast buy cheap viagra online
Filing cabinets 101 - An introduction to disk partitions

Samuel Huckins

January 4, 2009
Great tips! I have had occasion to do a lot of MySQL instance migrations lately, so here is an improvement for Trick 1: mysqldump <DATABASE_NAME> [mysqldump_options] | gzip -c | ...
Five useful command one liners

George Glass

December 31, 2008
I don't really see the point in trying to make linux user-friendly or take over the desktop. We rule the servers the most important element of the entire game. Let ...
Give Linux a chance

bug

December 31, 2008
@Zeth: The hidden field does block some. Not perfect, but it does release some weight from the filtering system, as those are 100% false comments. Acctually, if you would have ...
On Comment Spam

Zeth

December 31, 2008
Hi Eion, Yes that is an interesting approach also. It is the only approach given by default in the stock Django comments module, though it does not stop all comment ...
On Comment Spam

Bug

December 30, 2008
Well... Sadly, and I guess you hate me for it, I use captcha. But at least it's not an image, so even if you visit using w3m [yey!] you can ...
On Comment Spam

Eion

December 30, 2008
Other than server-side processing of comments, I like to add additional <input>'s and hide them in external css. Most of the time the fields are populated by spam-bots, and if ...
On Comment Spam

Nostoc

December 27, 2008
... Mate possible because of the dull Kg8
Ruy Lopez, Berlin defence, open variation

Nostoc

December 27, 2008
My bad, I meant the picture beneath 15, after close inspection my suggestion would be on 18. Instead of 18 : Qe2, I would have taken that knight with my ...
Ruy Lopez, Berlin defence, open variation

Zeth

December 27, 2008
Nostoc, white takes the rook on 15, the rook is a better kill than a knight.
Ruy Lopez, Berlin defence, open variation

Nostoc

December 26, 2008
I'm not that good at chess, but I have a question. At 15, why doesn't white simply take black's knight in C6 with the bishop? It's an easy kill, since ...
Ruy Lopez, Berlin defence, open variation

Zeth

December 26, 2008
CorkyAgain, good question, I don't have a FreeBSD box available at the moment so I can't comment. On Linux at least watch does as I have described.
Five useful command one liners

CorkyAgain

December 25, 2008
Is the watch command you're describing a Linuxism? On my FreeBSD box, "man watch" seems to be describing something completely different.
Five useful command one liners

Binny V A

December 25, 2008
I have actually setup a site to store just short commands... http://txt.binnyva.com/
Five useful command one liners

Bassam essa

December 25, 2008
i try this line command elinks -source "http://www.e51g.com/" > resulthtml.txt its work done :) thx
Command the Web - an ELinks tutorial