Why do programmers even like the idea of open source? I am not talking about the creators of those projects, of course they get fame, but I am talking about the industry in general, why are we so fond of the open source concept when it brings so many bad impact to the industry?

First, projects like wordpress and other CMS, they take away a lot of freelance jobs where clients want a blog or a simple website. Secondly, projects like Rails and other libraries and API's, they put a lot of programmers out of work, and make the demand for programmers smaller, because now with these open source API's, one programmer can do things that 10 programmers used to do. And finally, with open source software such as Notepad++, now people just feel funny when you ask them to buy software.

So, the question is, why do we still like open source if it kind of making us poor? Probably, my life as a programmer would be harder, but at least I can make a living out of it. But now, it's more like machine replacing human, funny thing is, we are creating those "machines" that replace ourselves.

Let's say, if you invented a tool, you don't have to share it, it will still help you and your company. Even without these open source tools, other programmers will live because they still have a job that makes money.

As it currently stands, this question is not a good fit for our Q&A format. We expect answers to be supported by facts, references, or expertise, but this question will likely solicit debate, arguments, polling, or extended discussion. If you feel that this question can be improved and possibly reopened, visit the help center for guidance.
If this question can be reworded to fit the rules in the help center, please edit the question.

24

There are a lot of assumptions in your question. Furthermore, your "points" apply to any tool that's designed to make people more efficient, regardless of whether those tools are open source. .NET would be an example.
–
user16764Mar 10 '12 at 6:55

7

-1. I'm a Ruby on Rails developer and I have no idea where you got that idea from. If anything, open source technologies open more opportunities for everyone. Just because RoR makes the job easier doesn't mean PHP/.NET/Java programmers will lose their jobs.
–
Terence PonceMar 10 '12 at 7:21

8

Smash the Spinning Jenny! Burn the Rolling Rosalind! Destroy the Going-up-and-down-a-bit-and-then-moving-along Gertrude! Not that I'm really accusing you of being a luddite... but where would you draw the line here? You're essentially advocating forgoing technological progress for the sake of job creation/busy work. To look at it in a wider context this is one of the ways we progress as a society so cooking, cleaning and washing don't take up 12 hours of our day, as it were.
–
XiaofuMar 10 '12 at 9:29

11

If your argument is "productivity is bad," then you must hate the Industrial Revolution.
–
Michael BMar 10 '12 at 10:33

8

And yet you use a web 2.0 site to ask instead of writing your letter to your local representative chiselling into a stone tablet or using fountain pen and ink? Productivity and openness tends to help everyone in the long term. At least it seems to?
–
jasonkMar 10 '12 at 10:52

17 Answers
17

Why do we like commodity hardware?
Intel and Dell stopped me charging for assembling my own computers and making my own PCBs.

High level languages mean I can't bill for 2 weeks work for a simple printer function written in Assembly.

And finally the internet means people can just ask questions for free and someone will answer them rather than having to pay me to write books and teach classes.

I just spent a couple of days installing and learning scipy+numpy+skimage, which means that I managed to write an image processor in a day. That makes me more valuable to my company's shareholders than if I had spent weeks of work going through the maths of all the original papers and then coding everything in C++.

@martin but it's not like that the factory labors invented dell and book authors invented the internet. I would say that, factory labors don't like whatever dell is doing, and that book authors don't like the contents on the internet, because they are competitors to each other. But in this open source scenario, programmers are making stuff that competing themselves, which is strange.
–
AndyMar 10 '12 at 4:59

26

@Andy - you don't seem to be objecting to open source so much as high level code that lets people create value without having to do a lot of expensive low level work. It's like saying Excel is bad for programmers because every office would otherwise have teams of Cobol programmers doing accounts apps.
–
Martin BeckettMar 10 '12 at 5:02

5

In this case, IE6 was the best thing that ever happened to web devs.
–
Callum RogersMar 10 '12 at 10:18

projects like Rails and other libraries and APIs, they put a lot of programmers out of work, and make the demand for programmers smaller, because now with these open source APIs, one programmer can do things that 10 programmers used to do.

Do you have any statistics that show this? In fact, according to Jevons' Paradox they should actually cause more demand for programmers.

Also, there are many contributors to open source and free software that get paid for it.

+1 for Jevon's paradox, I've never thought about it applying to free software before.
–
AustinMar 10 '12 at 5:13

5

@Andy And so you can create 7 in the time it takes for them to do 1. That's getting paid 7 times. What's the problem?
–
PubbyMar 10 '12 at 5:19

8

@Andy - You're assuming that the amount of work to do is constant, but it's not. If you can make a blog in 1/7th the time, you can charge 1/7th as much, and the lower price means more people are willing to pay. Jevon's Paraxdox says that the number of willing customers may be even increase more than 7-fold.
–
AustinMar 10 '12 at 6:03

2

Rails and such allow startups to be created that otherwise wouldn't have been by lowering the initial cost of development to something that can be afforded. These frameworks actually increase demand for developers by increasing the number of web companies. It is the startups that cause job growth and open source frameworks help startups.
–
Callum RogersMar 10 '12 at 10:21

Open source means that you get the opportunity to work on projects that you most likely wouldn't have gotten the chance to work on if you just stuck to what you did professionally. In that, there's two huge benefits:

Keeps you interested.

You learn from others who you wouldn't have otherwise worked with.

Both of these also make you a better programmer and more valuable to your company.

Your position reminds me of Brave New World. In that book, they artificially halted scientific and technological development, so that people wouldn't lose their jobs and the status wouldn't lose its quo.

Even so, one of your points attracted my attention:

First, projects like wordpress and other CMS, they take away a lot of freelance jobs where clients want a blog or a simple website.

This reasoning is flawed, in my opinion, and here's why:

These projects only take away freelance jobs where the freelancer is expected to build the entire blog from scratch. On the other hand, they actually create more freelance jobs of setting up the CMS. Most paying customers have no idea what a CMS is and don't really care if you built it from scratch or just configured something as long as it works as expected.

It may be true that in many cases configuring a CMS gets you less cache than writing a full blown application, however consider that your own investment is quite a lot lower since it takes less time, so in general you should have net profit.

Sometimes clients specifically want you not to use a widely used CMS or at least customize it heavily so that their site would stand out. Needless to say, this usually costs more. As you can see, supply and demand did their job even here - lower price for an industrial product actually increased the price of a hand-made one.

Then you expand that point to include other libraries and APIs:

Secondly, projects like Rails and other libraries and API's, they put a lot of programmers out of work, and make the demand for programmers smaller, because now with these open source API's, one programmer can do things that 10 programmers used to do.

Again, my response:

These libraries decrease the amount of work only on quantitative basis, not qualitative. In English: they only decrease the lines of code, not the amount of work needed. Now that these libraries are widely available, you're just expected to use them to write even cooler stuff. So, no more blogs and simple sites, now you're billing data mining, social web and other new things.

They don't effectively put programmers out of work. In the older days, you'd code for days just to have a software that sends some data to another computer. Then, you have to meet the programmer from the other side and decide what format to use for data exchange and only then to make the program do some work, etc. By the time you get a chance to do that, your company is broke and you jobless. Today, you find the libraries and do the same work in hours. Your company makes money, you still have your job and even more opportunities arise.

Do you really like the idea of you and another 9 programmers busily typing code for yet another blog over and over hundreds of times? Please excuse me if it sounds like elitist bs, code hamsters are not the kind of programmers I want to see developing in the following year. For their sake and for my sake if I ever get to maintain that code.

Some developers of open source are paid to do so. If they are paid to develop a product, the business model under which the company provides that product shouldn't really matter.

If they are not paid, having the open source project on their CV can make them more demanded by prospective employers.

The majority of open source projects are libraries/frameworks which still require developers in order to incorporate them into products.

As the amount of open source tools increases it doesn't reduce the amount of work we can get because the products we create are also becoming more and more advanced, requiring more and more of these tools to support them.

A useful thought experiment here is to work backwards. Why stop at web frameworks, what if everything had to be hand-coded in assembly? How many programmer jobs would there be then? Not many, because developing most things would be too expensive and take too long.

Having lots of software to build upon for free expands the market you can reach. How big is the market for a C program that you write in a day? Not very big. How big is the market for a website that takes you a day to make with some free frameworks? Easily in the tens of millions.

But now, it's more like machine replacing human, funny thing is, we
are creating those "machines" that replace ourselves.

You seem to be afraid that at some point all the software will be written and we'll run out of work. In reality, the opposite is true. Software is never really "done" until it's no longer being used. The more software there is, the more software there is to maintain, to improve, and to recombine in new and interesting ways.

Furthermore, increased availability of software creates more clients, not fewer. Tools like MySQL and PostgreSQL open up the power of databases to millions of people and organizations that might never use a database if they had to buy a license from Oracle. The web would surely be much smaller and less useful if not for tools like the Apache web server, and that would mean many fewer jobs for web developers.

After reading the question I remembered a fear that was spreading in my place during 1990s that, the computer will take their jobs away!

The open source and the larger developer community is critical for many reasons;

It helps the new members in the community to learn.

You do not have start all over again; there is something which is already done. You can start over it or keep that as a reference and build your stuff.

Nobody, who are serious about the business, will think that only open source is enough. Just to take an example, there is blogger, word press and lot many providing free blogs(as you told), But how many corporations or companies use them? 90% of will have their own websites and blogs.

Any industry grows by mutual sharing and learning. Open source provides a great platform to learn and adapt.

It reduces the cost of building the software drastically their by forcing more and more companies to use it, which will intern result in more jobs for the developers.

One thing about open source is sharing ideas/code. From a developement prospective, it can be a good learning experience looking at someone else's code and learning how it works or contributing to a open source project. I see plenty of opportunity of learning and growth. So, I don't see how it could be a negative from a development prospective.

But from a business standpoint, there can definately be negative consequences. If I am selling a product for X and then there is an open source project which is for free (let's just consider it equal) then I am out of business.

Nothing is ever free. Even with open source project(s), people gave up there time to produce something, maybe they were willing to do that, but time was still spent. So its a double edge sword. Whenever something is free it will de-value the market which it is developed for. Why pay for something when it is free? This may put people out of jobs or cause some markets to dry up.

But is can also spurn innovation. It can move the industry forward, it can spark growth and further innovation.

In the end, I tend to think there is a middle ground. Certainly we do not want to give everything away for free as a form of programming socialism. But a mix of open source plus business source will keep the industry healthy and innovative.

It still takes a programmer to operate these open-source tools and libraries. Just like in other fields, the scale is bigger. It's not impossible to build skyscrapers anymore, but it still needs engineers and workers to do it. Similarly, installing wordpress is 5 minutes, but if you want something customized, it still takes a programmer (be it a simple CSS change, most non-programmers are far from being able to do that, because it's not their profession). Maybe no one will hire you to write a blog engine, but there is always other work to do. The tasks that these open-source projects simplify or eliminate don't take much time, so businesses will do other things, and hire you for actual jobs. Why? Because everyone wants to expand to compete with others. That means they will invest in IT because there is business value in it. If there comes a widespread open-source solution that e.g. solves the problem of custom CRM software, there will be another area where businesses will try to get ahead of others.

"I am not talking about the creators of those projects, of course they get fame, but I am talking about the industry in general, why are we so fond of the open source concept when it brings so many bad impact to the industry?"

But of course, it is precisely the creators of the open source software that matter: if they didn't write and release the code, it wouldn't exist; and if they do, it does, no matter what anyone else may wish. And many — I would say, if not all, then almost all — of them get more than fame out of it.

Of course, some people get money from writing open source, either directly (e.g. they write the software and then sell support for it) or indirectly because they work for a company that pays them to write it (which generally means the company is getting something more than fame out of it). But a lot of open source software is written for the writer's own use, by people who just want to "scratch an itch": they derive utility just from the existence of the software, and any improvements to it made by others are just bonus on top of that.

For example, let's say I want a blog. And let's say I want my blog to have some set of features that no existing free blog software provides out of the box (because then I could just download the software and install it and be done).

One thing I could do would be to buy a closed-source blogging platform, if there was a suitable one on the market, and maybe pay the people selling it extra to add the features I need. However, since I happen to know some Perl and PHP myself, I have a few more options:

I could write my own blog software from scratch, and keep it to myself.

I could write my own blog software from scratch, and release it as open source.

I could download an open-source blogging platform and add the features I need myself (and, if I want and/or the license requires me to, release the additions as open source).

(Of course, if my own programming skills weren't good enough, or if I felt I was too busy to waste my time on such work, I could also choose to hire someone else to do any of these things.)

Obviously, the last option is likely to be the easiest of the three, if there's any existing open source software that even gets close to what I need. But even if there isn't, why would I choose option 1 over option 2?

Keep in mind that I have no interest in selling blogs or blogging software to other people — that's tedious and boring work, and it's not the business I'm in. All I want is a blog for myself that has the set of features I need. Nor do I lose anything if someone else uses the same software to make their own blog; if anything, if their blog is interesting, I've just gained something to read. So going with option 1 gains me nothing over option 2.

On the other hand, if I choose option 2 and someone else decides to use the software for their blog, they're likely to want some features I didn't bother to put in. And, if they implement those features and release them (either because my license requires them to, or just because they reasoned the same way as I did), then I might find some of them useful for my blog too, after all. And maybe they'll also find some bugs that I missed and fix them, which means I get the fix too for pretty much free.

So, that's why the open source economy works. It's not about unpaid developers writing software they don't need and then giving it away "just for fame". Rather, it's about people writing software that's useful for them and sharing it with others so that those others can in turn share their improvements to it with them.

I do not have any numbers, but I suspect there's an awful lot more programmers today than there were even 10 years ago. Having been in IT-related work for a few decades now, I'd say that Open Source seems to be here to stay and is more beneficial than harmful.

Open Source itself is no more harmful than (say) PHP or Ruby. Both, incidentally, Open Source languages. It used to be, if you go far enough back, taht compilers (and interpreters) was something you had to pay for, but these days you can get decent compilers for free. Doesn't seem to have stopped the "writing commercial compilers" business (but I do not know if it has grown, shrunk or stayed the same over any period of time).

It's not a stupid question. I could argue that there is little imperative for me to write a useful bit of software to sell because there is probably already a free open source alternative. If there isn't, there may soon be if my software was any good.

The reality isn't like that. I remember back in the late 80s' and early 90's there was already a large body of free software. Take a look at the wiki article on Fred Fish for just one example. I had my own distributions, but they clearly weren't important enough to warrant a wiki article ;)

But for money software continues to appear and turn a profit. I work as a developer and earn a reasonable crust doing so. Open source has helped me at times in my corporate development, it has never been a problem, so on balance it is beneficial.

Richard Stallman, the founder of the Free Software foundation, has been explaining for decades why you are wrong. Linux, Firefox, MySQL, and the very concept and culture of Open Software only exist because lots of people find these arguments persuasive. Read about it at the FSF website (scroll down to "Easily Rebutted Objections" for the answers to your question).

It appears that the premise of this question is that the only reason to write code is for either fortune or fame; but there is in fact another reason to write code, make software, or for that matter invent any sort of new technology...namely to make people's lives better, more productive, and more efficient!

If you're interested in building a high quality software product, you will find free and open source software a dream. If your product is good, it will sell. Note that the product that you're selling can have any form, for example, Software As A Service (SAAS) or Platform As A Service (PAAS).

When developing a product, you want to spend your limited resources (time and money) on adding value to your product, not on writing (boilerplate) code. Open source projects usually produce high quality software because they are open. More programmers can review the source code and contribute patches containing bug fixes, optimizations or more features. You don't get this luxury when buying software to use in your products. I don't say that buying software is bad. It's bad when you are not allowed to look at it's source code to see how it works or to fix it. And many times this comes with an expensive and low quality support package and/or with dependencies on expensive third-party components (a nightmare when you are concerned about the total cost of ownership).

Now, a distinction must be made between copyleft licenses like GNU GPL and more permissive licenses such as the MIT license. They have different purposes. Copyleft licenses demand that if you distribute your product, you must provide full source code access and must allow others to modify it as they see fit. I think that this is a good thing, but it's more difficult to monetize your work. That's why most successful open source projects are licensed under a permissive license (MIT, BSD, Apache, MPL, etc) than copyleft licenses such as the GPL or the AGPL. With copyleft licenses it's usually harder to protect your commercial advantages, but this depends on your business model. Another thing that I observed is that components released under a copyleft license tend to be isolated when they are integrated in a system, so that they not "contaminate" the whole system. An example is, for example, when you run a GPLed program in a different process or when GPLed components are bundled in a operating system (as the Linux kernel).

I personally believe in all the models above because, as in nature, there is always more than one way to accomplish something and you must choose the model that serves your purpose well.