• Coding
  • Who funds open source projects

Today I'm going to take the time to answer one of the most common questions about Open Source. How do you make money? I'll try to be as factual as possible. Some infos I have, some other can be sought further on Google or other sources. Some numbers in particular am having troubles finding again, although I can assure they come from publicly available sources (if anyone could show me the financial results of IBM in 2008, that'd be cool :P). Before I start I'm going to make something clear from the beginning. This is not about Open Source being better than the proprietary model. This is not about Linux being better than Windows. This is not about How evil Microsoft is.. I don't want this turning into a trollfest so please help me out.

On another hand, what this actually is, is an exposé of the Open Source business model. This model is very real and, contrary to popular belief, very widespread. Today it generates billions of dollars a year, employs thousands of highly-trained workers and has even extended to official public sectors. Some people even firmly believe that the Open Source model is the only one who will survive in a few years because it's the only natural one for programmers. And now, for those of you who don't know, allow me to present to you:

What is Open Source?.
For a more detailed explanation, you could check this article. (spoiler alert: It's an article from my blog, I wrote it)

Traditional software industry is simple. The programmer writes a program. If the client wants it, he has to pay. In order to prohibit the copy and fraudulous distribution of the program, the programmer is protected by the law. He also cleverly hides his source code, the "recipe" of the program.

Open Source programmers behave differently. Once they have written the software, they give it away back to the world and provide along with it the source code. The idea being that if you give it to the world and allow them to make modifications, they will come up with new ideas and new features that will make the program better.

And now, the inevitable question: How do they get paid?

Explaining why Open Source can be profitable for some companies require high economics skills I do not possess. What I can do however is give examples of this: Who pays developers to work on Open Source projects? Now that's easy to answer. There are different reasons why you would pay a developer to work on an Open Source published software.

Sponsoring/Patronage
This is actually the most common form of payment in the Open Source world. In short, a company takes interest in what you are working on. It needs your software and it needs it to keep growing. So it will hire you as an employee to work full-time on your project. There are plenty of examples. I'm going to mention two relevant Google employees (there are worse job situation)
- Guido Von Rossum works for Google. He is paid to work full time on his project: The Python programming language, a 100% open source project.
-Andrew Morton is the #3 guy of the Linux kernel (after Alan Cox and Linus Torvalds of course). Actually over 80% of the linux project contributor are paid developers whose job is to work on this software.

Service provider
This one is pretty common too. You give away your product for free, without any licensing fee, but you take money on services like install, support, specific development, training, implementation, ... Here are two companies that do that:
- OpenERP. Their software is valued at 3 million dollars. They give it away for free. They make all their money on services.
- Canonical, the company that publishes Ubuntu. When the French gendarmerie decided to shift to Ubuntu, they bought a support contract from Canonical worth several millions of Euros.

Embedded hardware
Some products have all their value in the hardware sold. In order to augment the value of their hardware, they would equip it with a piece of software. Some of them decide to make the software open source. That's the case for example for Linutop.

Another example is IBM. IBM makes there money in so many different ways, one of which is by selling servers with Linux pre-equipped. They are principally selling the hardware, but to augment the value of their machines, they hire developers to work on the software on top of it.

Not your core of business

It is also very common to see company release under an open source license, products that do not make the core of there business. Some examples include Hip Hop, a project by Facebook to compile PHP language to binary, that was since released under the PHP license. Or you can chose from the plethora of Google Open Source products like Android, Chrome, Chrome OS or even EtherPad. But the most prominent example is a historic one.

A few years ago (actually less than a year ago), there was a very exciting IT company called Sun. Sun was famous for plenty of projects like MySQL, OpenOffice.org or VirtualBox. Some of you familiar with Unix might have heard of some of their greatest inventions like NFS, Csh or Vi. But without a doubt, Sun's greatest inventions were Java, Solaris and SPARC. Java is the cool programming language you all know. Solaris is a Unix based operating system, probably the most stable one today, and SPARC is a super powerful processor architecture. It was the combination of those three that made Sun's fortune. Sun would sell some of the most robust solutions (and expensive too, this is probably why they crashed at the end). The only reason why they maintained all the above mentioned Open Source software (OpenOffice.org, MySQL, ...) was to provide some extra value to their platform. When you're a system reseller, having a database or an office suite work flawlessly on your platform is a huge plus. And open sourcing it provided a way for Sun to maintain them to lesser costs.

Academia
It happens. Some open source projects are backed by academic funds. That means there are researchers working on them. For instance, the popular media player started as a research project in a French university. It still gets funding from the lab.

Donations
Not the most sustainable, but still worth mentioning, donations can sometimes make an open source project live. Just ask Jimmy Wales.

I don't know if I'm missing anything. If you have any more questions don't hesitate to ask. But please understand, Open Source is not just a bunch of freedom loving hippies who want to make the world a better place. They are top notch engineers wanting to do business faster, cheaper, steadier. Any person having participated in an open source project before will agree how empowering the freedom you have to do ANYTHING you want can be.
It's nice to see all these tidbits come together. It makes a bit more sense now.
To be a funded opensource developer, I guess, means that you're in the upper 1/1000 developers. And you're self employed. I cringe at the thought of developing a large solution, waiting for someone to adopt me. Doesn't it seem that Open source has elevated to a game of the titans, just like commercial software?
The sole developer is most suited to work closely with clients, customizing, installing, deploying, configuring, assembling, testing.. Otherwise, to imply that any person can become opensource and funded is a bit irresponsible on the side of the author and naive if taken by the reader. I hope no one thinks rahmu is suggesting that you should pick up an open source project and make your whole life depend on it. It's risky.
If you're that good, it could be rewarding on many levels (financially and gloriously)
Thanks for the info rahmu.
arithma wroteIf you're that good, it could be rewarding on many levels (financially and gloriously)
If you're that good, you'll be picked up instantly. Open source or not.
rahmu wroteif anyone could show me the financial results of IBM in 2008, that'd be cool :P
There you go
I have a soft spot for Redhat. I haven't used fedora in years but I love how Redhat continues to improve it's profits and how they contribute like crazy to gcc/glibc and gtk+/Gnome. Redhat is now even providing patches to port Firefox to the gnome3 stack (gio/gtk3). I've spoken to Redhat people before and they're extremely professional. Red Hat Says Profits Up 92 Percent.
Very interesting information, rahmu. I'd also like to point out that open source hardware companies are springing up. They're selling their hardware, and giving the designs away for free, and many of them are making a million dollars or more (Warning: 8MB PDF of Doom behind that link). That may be low, but these are new companies doing something no one's ever done before. The experience of these companies will tell us if Open Source as a model can be applied in non-software businesses.

This is a valid business model, and I really hope the future is open source.
@rahmu: open-source softwares are doing well in most fields except the gaming field, yes there are hundreds of open-source video games, but they are mainly rubbish when compared to the proprietary video games.... it seems that the funding sources that you have listed doesn't work in the gaming business...
Games aren't high always priority. Most open source software is targeted towards servers, business workstations and home desktops.
For instance, KDE/Gnome/libreoffice/firefox/pidgin/Gimp, etc.. are targeted towards the home desktop user who uses his/her desktop to watch videos/DVDs, listen to music, do some photo editing, browse the net, write some documents, send emails, chat on msn/gtalk, etc..
For such a user, an open source desktop is a better more reliable choice than windows. It's why many buy RHEL even for their home desktop.
Add to that the amount of business desktop sales and the offered services and you'll make some good profit.
So they still make nice money eventhough they don't sell games.
If Microsoft never made a single game, would they go poor?
Besides, the discussion isn't about whether opensource is better or not. It's about how companies make money out of opensource.
hussam wroteGames aren't high always priority. Most open source software is targeted towards servers, business workstations and home desktops.
For instance, KDE/Gnome/libreoffice/firefox/pidgin/Gimp, etc.. are targeted towards the home desktop user who uses his/her desktop to watch videos/DVDs, listen to music, do some photo editing, browse the net, write some documents, send emails, chat on msn/gtalk, etc..
For such a user, an open source desktop is a better more reliable choice than windows. It's why many buy RHEL even for their home desktop.
Add to that the amount of business desktop sales and the offered services and you'll make some good profit.
So they still make nice money eventhough they don't sell games.
If Microsoft never made a single game, would they go poor?
Video game industry is a high priority, at least from a business point of view... the video game industry value is in billions of dollars, and companies such as Ubisoft, Electronic Arts, Activision... are having huge profits every year from games development.

Even from a technological point of view, video games are a important, this is from the Wikipedia:
Modern personal computers owe many advancements and innovations to the game industry: sound cards, graphics cards and 3D graphic accelerators, CD ROM and DVD-ROM drives, Unix and CPUs are a few of the more notable improvements. Unix in particular was developed in part so that the programmers could play a space traveling game.
-------------------------------------------------------------------------------------------------------------------------------
hussam wroteBesides, the discussion isn't about whether opensource is better or not. It's about how companies make money out of opensource.
I am not comparing open-source to proprietary... I am just trying to say, that open-source projects are almost absent when it comes to games development... and that is due to the lack of funding, because the funding sources that @rahmu listed are not applicable to video games development:

-Sponsoring/Patronage: Video games are a purely entertainment softwares, so there are no companies that need them.

-Service provider: What services? Install, support, specific development, training, implementation are not applicable.

-Embedded hardware: Not applicable.

-Not your core of business: Not applicable.

-Academia: Not applicable.

-Donations: Nah.
Still however, you have a lot of libraries for game development that are opensource. To name a few off the top of my head: Ogre, Irrlicht. OpenGL is an open standard (many companies work to progress it) and it drives a whole lot of interfaces (your iPhone for one, using ES profile). SlimDX from gamedev.net is a wrapper around the Win32 API's for .Net
Seriously, the game programming world is gears forward from enterprise development. Sometimes I sob at the fact that I develop "forms" (Web, Windows, SOAP, HTTP, blah, it's all boring, dead period).

Look at my signature.
I can see samer99's point. But open source has always been about interest. If some day someone decides to make a game that has the same quality as EA Sports games, they will. Otherwise it won't happen. A lot of open source software was born because someone wanted an application that does a certain function.
If someone wanted it, it'll happen. OpenGL is cross platform was works very nicely under Windows/Linux/OSX.
Ahhh game development... The eternal Open Source problem! It is absolutely true that as of today there very little money invested in open source game development. Unfortunately.

From an economical stand point I won't argue that companies are wrong not to do it, only time will tell. However, I should note that it IS possible to make money from Open Source game development. Here are some ideas:

Console Makers
Some console makers could release open source products and make money selling the hardware. There are endless advantages to such a model, but they can be summarized in this: It's a great way to add value to your product at little cost.

Some manufacturers have shown interest in open source development on their platforms. For example I could mention the lesser known"ES" open source operating system developed by Nintendo for their platform. (Google has since joined in the project, another example of Sponsoring/Patronage).

Subscription based systems
This category seem a lot more down to earth, less far fetched. Actually I wouldn't be surprised if it started appearing very soon.
Online games make more money on the subscription to servers rather than the software itself. From then on many ideas could spring, here's one I always had, kinda like a feasable fanatasy. Disclaimer: Programmers you're going to like this ;-)

I always imagined an online where the server was closed source with paying subscription. However the client would be open source. Not only that, but the game makers would also provide a very detailed API for their servers. It would be kind of like "make your own client" type of game. That's ultimate customization for a game. Now that I mention it, I would love to create such a game. Who's in?

Advertisements
No I'm not talking about a stupid Flash banner in the middle of your game. What I say is that Games can have a great exposure. What if for example Coca Cola decides to launch as a huge viral marketing campaign a new 3D game? This happens all the time. The point is games can get funding from people interested in exposure more than sales. Open source increases exposure, that's for sure :-)

As you see, there are ways to finance game making. And these ideas are just from the top off my mind. I bet that experts will come up with better ideas. Now will it take over the proprietary model? I don't know. But I don't have the slightest doubt that a major open source game release will appear in the coming years. It's a bet a lot of companies are willing to take. After all Open Source is showing astonishing numbers in virtually every other field, isn't it?
Damn it rahmu, we never have an end to interesting ideas. I am "in", definitely and most certainly. Seriously though, how can we manage all these ideas and maintain a high level of progress. How can we herd all these ideas?
We're onto something. But first, we need more people. We need more visibility. We will opensource the bull shit out of our brains. And we'll do it for the hell of it and not for the greed. Because, let's face it, at this point in humanity, we have all what our bodies need (most of it at least), we better invest our time in something outside the timeline of a single life.
Are we all in?
arithma wroteBut first, we need more people.
[off-topic]You two need to choose a programming language other than C/C++ if you want to recruit other people. Let's face it, just like rahmu said, you're probably the only C/C++ expert on LebGeeks, and I doubt there are plenty of experts out there in the first place. Ditch C/C++ and choose something that is more common among developers. To be honest, whenever I see C code, I get the impression that the coder is just trying to show off. Why write something in a 50 lines of code when you could've written it in 10 lines using C# or any other language?[/off-topic]
First of all, I just searched for C and C++ and it seems there are no mentions previous to your own.
As for the fact that there are no C++ programmers out there, look here: http://langpop.com/
I never claimed to be a C++ expert, people have called me that.
Ditch C++ and choose something else. What the fuck is going with you? You're not in a place to advise me on what language to choose. I don't really care what is actually common among developers. C++ is my main language, now and for ever.
I do show off. But I don't do it without sharing. I don't show off that I actually use C++ (which you know best that it's not the only language I post about; Actionscript, C#, little PHP, and even SQL).
One of the more interesting code bodies I have posted here on the forum is in C# (the solution to the night bridge problem).
If you go however to my blog, you'll see that in 2006 I did solve Minesweeper in C++. That's before I even thought of having a career in this damned field (I was majoring in Mechatronics as everybody knows). This means I am most comfortable in this language. I post C++ because it's my language, not because I want you to know how great I am by using it.

I don't think you're qualified to judge the conciseness of C++, or to compare it to C#. I know both languages. Each has its own benefit, and each shines in its own place. There's no reason at all to say that C#, in 10 lines, can express what C++ has to say in 50 lines.

On the merits of posting in C++ and its value: It's actually a more common language for juniors. I love juniors. Those fresh minds just out from university or still at it for the matter. They should be getting an education mostly in C++. So don't come around saying there are no C++ programmers around us.

People associate C++ with data structures, pointers, nodes and all the nonsense of a programmer you'd be if you used them to provide a solution to a simple problem. If you review my solution to the team split problem, the very last one, you'll see that I made an effort to comment my C++ code. I think that should show that I understand the difficulty in grasping a foreign language. I also tried to use best practices to show how nice of a language it could be (niceties of C++0x).

My heart cries for the cruelty of your post. Apologize so that the crying stops.
DUDE! You totally misunderstand what I was trying to say! I am not advising you (as in arithma) to stop using C++ and find another language. I am simply commenting on what I quoted above (finding more people to collab with on open source projects). So what I was trying to say is this: If you decide to use other languages that are more common among developers, you'll have a better chance of finding good talent to collaborate with. See is why I quoted that sentence in the first place!

I'm not trying to judge or anything, and I'm not saying this language is better than that. It is probably a fact that C and C++ do the same stuff that could be done in other language but in a more efficient way! I'm not saying that C/C++ is the devil and no one should use it to program. Every language is most appropriate for some specific job. And most (all?) languages can do the same job, it's a programmer's preference to choose a language over the other.

I do know how to program using C but I wouldn't. I do not like the language (and I'm not that good at it) because I like Object Orientation. I might like C++ but I wouldn't know now because I haven't touched it yet. And yes I do know that you're good at other programming languages as well. You're not only an expert at C++ (I am saying you're an expert because I've seen your code) but you're one of the best AS3 coders I've seen so far. I'm not trying to complement you or anything, but truth has to be told.

So summarize things up, when I said "Ditch C++ and choose something else", I meant ditch it on those specific OSS projects you're trying to recruit developers to work on, and I wasn't talking to you only, that includes rahmu as well. But after all, that's just my opinion and I could be wrong. You might find a plenty of C/C++ developers to collaborate with you guys. But I still believe that you would have better possibilities at finding C# or PHP developers.
Don't take this badly Kassem, but your remark was pretty stupid. Saying that C or C++ is not common is kinda funny. Statistics have shown that C and C++ along with Java are the most widespread languages there are. arithma showed you one page, I can show you a thousand. And neither C nor C++ are going anywhere for the foreseeable future.

I don't expect you to understand why I love C, just like quite frankly I don't understand what you like about C#. But to say I'm simply showing off because I insist on writing C, now that's plain wrong. If I were a little mean I'd say you have to get over the fact that you can't code in C. But do we really want to get into a childish flamewar?

Finally I understand what you're trying to say. That if we were to suggest some project in a language you know, you'd gladly participate. Now here's my honest answer: As much as I'd love to collaborate with you, I hate both C# and PHP with a burning passion. less than 6 months ago I almost gave up on programming because of PHP. So there. If I come up with an idea, it'll be C. Or C++. Or even Python. And that's that.

Finally, I'll remind you (Kassem and arithma) that this thread is not the place to argue about our language preferences. If anything more should be added, it can be resolved privately.
less than 6 months ago I almost gave up on programming because of PHP.
I am not sure that you would have had a better time writing a web site/app in C++ ;)
Or even Python
now that's a good idea
I hate both C# and PHP with a burning passion
maybe you just disdain them because you don't have all the fancy stuff you want

Each project needs the right tool.
So what would be the advantage of using .Net for this project? if you can answer this question on a case by case basis, maybe (?!?) arithma/rahmu would listen for you...

now back to main topic
Open Source is THE model for the future, even huge proprietary companies (eg: ms) are embracing it little by little.
Rant out of the blue: i have Apple's policies because they are so anti-Open Source, but guess what they are really successful, so Open Source is not the only working model, but it is the model for the people by the people :P