I follow various online news services where you can discuss articles. Of course, the discussion forums attached to the articles are anonymous, so there is a lot of trolling and miscellaneous silliness going on, but it is still interesting to see some of the opinions expressed. Especially opinions that are repeated.
One thing that has struck me when any article about open source is published is how many people still don't understand Open Source.
I've seen quite a few postings from people who claim to be software developers and who think that Open Source is a threat to their livelihood. If software is available at no cost, and in source code form, how will they be able to make their money?
There also seems to be a significant number of people who think that Open Source software is synonymous with pirated software or with theft of intellectual property.
Open Source does not mean pirated.
To address the latter concern first: no, Open Source software does not refer to distribution of traditional commercial software in violations of the terms under which the software is licensed. You are thinking about pirated software, which is something completely different.
With regard to the broader issue of theft of intellectual property, Open Source software is no different from traditional closed source, proprietary software. This is a complex issue that spans from software patents to inclusion of code which cannot be re-distributed legally under a license that falls within those accepted valid by the Open Source Initiative.
The good news with regard to open source software is that any infringement is easy to detect since the source code is available. In fact, improper inclusion of intellectual property in commercial, closed source products tends to be a bigger problem. Quite a few companies have been caught doing this and quite often it will be closed source companies improperly including and re-distributing open source software in violation of the license terms.
Jobs and such.
As mentioned before, I have seen some developers ask how they are going to make a living if software is to be free?
A lot of open source software represents the sort of software that acts as an enabling technology rather than a key differentiator. Operating systems, web servers, application servers, system libraries, compilers, browsers, editors, word processors are all commodity software components now. Everyone needs them and it is easy to come by usable, or in some cases, very good instances of these components at little or no cost. They largely represent problems that have been solved to some degree.
Of course that doesn't mean that there is no room for commercial products in commodity software. There are plenty of companies that make these types of software, but the reason people are willing to pay for them is because they offer more than the competitors -- open source or otherwise.
Now, since these types of software represents something that a lot of people need to realize their products, be it a service or an application of some sort, it doesn't really make any sense to roll your own. So you are better off using what is freely available. After all, for most companies that wish to write a web application, it doesn't really make any sense to write their own web server. For most services, a custom web server is going to be an expense rather than a key differentiator. An expense it is going to be hard to recover.
Yet, you might find yourself in a situation where a commodity component does 99% of what you want, but it would be nice to focus on that last percent of functionality that is missing. Open Source lets you do that. You can take something that already works and extend it. Or you can tailor it to your needs.
Of course, many are wary of taking an existing software product and then make changes to it because it complicates the upgrade path and leads to more software that needs to be maintained. This is why it is so attractive to contribute the code back to the project: you get more eyeballs to verify the correctness and validity of what you are doing, and, if problems should arise later, it is likely that other people will spend time fixing your bugs (although you should be a nice programmer and not be sloppy in the first place :-)).
So how do programmers earn a salary? Well, if we are to look at direct involvement in developing open source software, quite a few people make a living developing open source software. Many large (and small) companies that rely on open source components, have programmers on staff that contribute to their development. They get paid as regular programmers to work on, or contribute to, open source projects.
One of the first large, traditional companies that did this was IBM. Years ago they hired a bunch of programmers to work on Apache. They needed a web server for their suite of applications, had a look at what was available and decided that it would make sense to them to help the Apache project, and in doing so, help themselves so they had a good web server on which they could build their products. Today there are even more examples of companies that take a very actice part in the development of Open Source software.
Open source consulting.
Another way to earn money doing open source software is to work as a consultant. Familiarize yourself with a piece of open source software, build a reputation for yourself as an expert on it and then offer your services to companies that want to use or extend this software. You will be surprised how incredibly effective this can be.
Also, if you are a student, this is a perfect path to secure programming gigs in the future and to bootstrapping your carreer. You gain real experience as a developer (something a lot of new grads lack), you build a reputation as someone knowledgeable on certain systems and, provided that you are an expert on systems other people actually find useful, you will soon find yourself short-listed when companies look for people who can do consulting for them.
Ask yourself, who would you rather hire: some random consultant who has attended a training course for some closed source product or one of the actual developers of a system? This is a no-brainer and it is really easy to become a contributor on an open source project. If you are good you might end up as a principal developer on a project, but in order to achieve that you need to put some effort into it.
Also, it is no secret that when doing job interviews, any participation in Open Source projects is going to be a positive in my book since it gives me much more information about the candidate than would the CV alone. (In fact, for me, solid participation in an open source projects counts more than good grades when I evaluate candidates. That may not apply to other people involved in hiring though).
From a corporate perspective
A lot of organizations fear Open Source software. There's a lot of myth surrounding Open Source and regrettably, some of the myths seem oddly persistent. Rather than trying to enumerate the top myths (which may be the topic of a different blog posting), I would encourage people to have a look around: who is using open source software?
Well, if you look at the biggest names in the Internet industry, you can be pretty sure that ALL of them use open source software to some degree. Look at companies like Amazon, eBay, Google, Yahoo! etc. All of them use Open Source software, and if you talk to their engineers (who often never have to consider such trivialities as the cost of software licenses), license cost isn't their top reason for doing so. Their top reason for using Open Source software is that it makes technological and operational sense to do so.
One very important reason for using Open Source software is that it makes you less dependent on a single vendor. If you have a large system and it breaks down, it is much more efficient if you have people on staff (or have a relationship with people who can act as consultants) who can investigate and correct problems.
In the past I have worked for companies that licensed known brand products and paid exorbitant fees, not only for the licenses, but also for support contracts. Only to find that when the sticky stuff hits the fan, they left us dead in the water for a week with a mission critical system that wasn't being fixed.
Also, companies go out of business, license terms change and products reach end-of-life all the time. By using Open Source software you mitigate these risks to a significant degree.
Real life example
In an earlier life, I ran a company with some friends. It was a sort of consulting company, but without any strict limits on what we'd do. We'd take on the sort of jobs we felt qualified to do without limiting ourselves too much. All of us were involved in Open Source software, and we contributed to a variety of projects including the Linux kernel, PHP and dozens of other projects.
One of the projects we did was to add proper support for Oracle to PHP. A german company that wanted to use PHP with Oracle contacted us since one of us was on the core team of PHP back then (Stig). They paid for the implementation of the Oracle support, which was then released back into the PHP project. We got paid, the customer got support for Oracle in a product they wanted to use and the rest of the world could reap the benefits. Not only that, long after the job was done, countless other people have continued to provide support for the code -- fixing bugs, updating it etc.
If PHP had been a commercial, closed source product it would have been hard to add support for Oracle. Nobody else outside the company would have benefited and the original customer would have had yet another piece of code that they needed to maintain themselves.
When I come across developers who fear that Open Source means they can't make money developing software, I really don't understand how they could have arrived at that conclusion. Because it is clearly wrong. If anything, Open Source helps foster a richer, more interesting and more sensible software development environment. True, not all Open Source software is great, but a lot of it truly is. Open Source also gives you easy access to so much technology that you would have to create from scratch yourself just a decade or so ago. The lack of which would severely limit what you could create with the resources available to you.
Also, Open Source software is now far beyond the domain of the tinkerer and the hobbyist. Serious companies put serious effort into Open Source software, yet the field is still open to the casual participant.