Why open source is actually good?
I was hoping to find an answer from the Free Software Foundation web site, as well as from opensource.org. The best answer I could find was, it is good because it is free, and free is always good.
Now, when applying the five whys technique one often stops when reached something axiomatic, which don’t need to be questioned. I personally don’t like having too much axioms. The more axioms you have, the easier you can be manipulated. I have these two unconditional stoppers of the “5 whys” chain: “Because of Love” and “Because of Life”. Many other reasons, Freedom included, have to endure my scrutiny first.
Thus I’ve decided to write down everything I know about practical consequences of free and open source software, and to understand where they are leading us, as a society. And the results surprised me.
According to FSF, free software is
- free to use
- free to study and to change source code
- free to redistribute
- and free to base your own work on it.
Freedom of usage
Having programming languages and libraries for free allows students to learn and practice more technologies, leading to more skilled students. Same applies to professionals who want to evolve in their free time. Using OSS for free is often the only way for them to improve their skill set. While improving skillset leads to a better salary for the individual, more skilled programmers on the market will lower the general salary level for skilled workers in the IT industry. In turn, this leads to accelerated innovation, because IT companies can hire more skilled workers cheaper, and therefore develop more new products. Another consequence of this “teach yourself for free” effect is that skilled programmers are getting younger. Thus, average age of IT companies is getting lower, and it means they tend to be organized less bureaucratically, are less process-oriented and more business results oriented, and can therefore create huge market disruptions, sometimes. But it also means that the young and often naive employees tend to have less possibilities to protect themselves against manipulative employers.
Similar effects could have been applied to text, image, video, and music editors. Aspiring writers, designers, photographers, musicians and movie directors could start practicing for free and therefore generate more skilled and younger professionals on the corresponding market. As far as I know, this doesn’t happen. I believe, the reason is that movie directors, musicians and photographers need much more (at least hardware, but also people, money etc) to train themselves so that the cost of software doesn’t play a big role. Writers don’t need any software to practice and can do well with a paper and a pen. And designers prefer using Adobe Photoshop. The most applicable effect of OSS to other creative jobs I’m aware of is 3D and FX rendering (with the Blender).
Free Internet tools (web browsers, e-mail and NNTP clients, etc) helped to create the reach of the Internet. The Internet has radically changed our society in a million of different ways, some good, some bad. This is a topic for another post, if not topic for a huge research.
Free of charge software has created competition for closed source software. Therefore, new forms of closed source software appeared or became more popular: trial versions, free basic version with non-free Pro versions, free ad-financed apps, etc. This has decreased the average software price, which means that earning money in software business became more complicated. It is harder to be successful with the simple “my awesome app – your money”, one has to spend more time trying and inventing different monetization schemes. This also means that an average user can afford more paid apps, and buying new apps more often. So this is yet another factor accelerating innovation in the IT industry.
In the world of non-free operating systems licensed per installation, it was only natural to scale up. Free operating systems have made scaling out more attractive. This has ruined or at least severely damaged the business of super-computer manufacturers; commodity hardware manufacturers have benefited. I haven’t checked this, but I think, geographically, it means that East Asian hardware manufacturers have benefited from that, and Western super-computer manufacturers have lost. Increased usage of commodity hardware means also that standard hardware and OSes can be used, and therefore any software running on PC can be run on the servers. This should have reduced the average cost of server software. At the same time, system administration cost increased, because more physical server units must be managed. Partially due to this problem, the cloud business model has appeared. Additionally, clouds have increased the elasticity of hosting, allowing internet startups to start with a very small investment into hosting. Which in turn has further accelerated innovation rate in the Internet.
In the most organizations, buying software that individual employees need for their job, has to follow some specific process. The process overhead often prevents from usage of new, much more productive apps. Free software can be installed and used instantly. This increases average productivity of employees, at least in some kinds of businesses. At the same time, it can decrease security of those businesses, because free software is typically installed and configured by the users themselves, who may or may not have necessary experience and information about the appropriate security measures.
Some companies don’t earn enough money, and a subset of those don’t earn enough money because of some systematic issues, such as too much bureaucracy, badly designed products, making products nobody needs, etc. Normally, it is in the best interests of society when such rotten companies file for bankruptcy. But, usage of free software might mask such companies, because it reduces production costs, and allows such companies continue to exist in a sort of zombie mode. Not only such companies waste energy, hosting hardware, and other resources, and the life time of their workers, but they also inhibit innovation by capturing human resources working in there for no good reason. On the other hand, usage of free software means that startups can reach break-even sooner, which reduces some of their risks.
Due to large amounts of free open source and free closed source apps, computer users became used to this free-of-charge-edness. Their expectation is to pay for a couple of things (hardware, internet access) and then to consume for free. This expectation increases in my opinion the amount of piracy, including piracy of movies, music and books. Some people don’t pay for media, not because the price is too high, but because, deep inside, it just feels wrong to them.
Free software is often developed without a plan to earn (direct) money from it. Often it starts with the idea of satisfying my own needs, and then it will be make public in hope it will help somebody else. This means that fame ambitions are the only motivation to make the app more appealing to more users. Besides, who can afford developing an app without a direct monetary award? Often, they are students or young professionals, who don’t have enough experience to make a great user experience. Or, this might be experienced professionals, who write free software as a hobby, and therefore cannot spent enough time on it. Often, free software is being created in a bazar style, without any proper organization or team building, so that the user interface is created by anybody in team (usually a programmer), not by a UI professional. This leads to a usually worse user experience comparing to commercial software.
Bad user experience not only improves sales of some closed-source applications (GIMP vs. Adobe Photoshop is a good example), but it also increases total cost of ownership. While your typical closed-source software comes with a no-brainer installer, starts after installation automatically, and allows you to use some of its main use cases in the first 5 minutes after installation, the typical experience with the free open source software is first fixing your build environment, then building the app, then optionally fixing build errors, then installing the app, then trying to find where it has been installed. And when it runs, you try to do some simple first steps, but you can’t, and then you consult the documentation, and it is absent, and then you google your problem, and find one forum entry, and then you open the configuration file, and read all its settings, and understand the architecture of the app, and then try to change settings, and don’t have success. And then download a plugin, and read how to install it, and fuck-yeah-I-like-it, FIX your BUILD ENVIRONMENT again, and build it, and install it, and yeah-baby-gimme-more, find where its configuration file is, and reading the plugin configuration, and configuring it, and then being able to make your very first step makes you ecstatic and after another month or so you can be as productive with your free software as you are with a closed-source software after the first 5 minutes.
Using some free software is a research project. Using close-source alternative is twenty bucks.
Recently, more and more free software is paying more attention to usability as well as to user experience, so that this is changing. I’m not sure why is it happening, but I suppose the OSS community is influenced by a lot of Internet and mobile startups who monetize with ads and therefore are extremely careful about and attentive to UX issues. But this influence, if any, can only be on some moral and ideology levels, and is therefore not a very strong motivator. Until some new strong economical motivation appears, we have to expect that free software remains to be on average less usable than commercial one.
Free to study and change source code
Forty years ago, computer users have got bare hardware and were supposed to write all their software, including an operating system, and the apps, all by themselves. Today, only tiny fraction of users care about source code. Understandably, this freedom doesn’t make any significant impact on our society.
Reading source code of others can teach beginners to use better programming style. This means, more skilled professionals, and younger skilled professionals. Therefore, more innovations in IT. This also means that the quality of average programming style can increase, and something like worldwide common programming style can emerge. This would make changing existing software cheaper, and thus increase the speed of mature product development.
Reading source code of frameworks you are using helps to use them properly. In a closed-source situation, you would just ask the vendor, if some behavior is strange or undocumented. Unfortunately, not every user of closed-source frameworks is in a position being able to ask technical questions and getting appropriate technical support. Sometimes it is issue of money, sometimes it is issue of too much users, and too little technical stuff at the vendor. This means, on average, free frameworks can be used better and lead to better software than closed source. But positive effects of source code availability can be eliminated due to absence or low quality of documentation. The best API documentation I’ve ever seen in my life is WinAPI reference in the MSDN library. Which is understandable, because WinAPI users cannot revert to the source code to check out things.
Changing source code of frameworks you are using allows you to fix bugs yourself and to be independent from the vendor. Well, until you decide to upgrade your copy to a new version. This also shifts the responsibilities, that is, OSS authors don’t feel themselves responsible even for the blocker bugs, unless they hit them personally. Often, they argue that obtaining their software for free liberates them also from any moral obligations, and if their users don’t want to spend their time fixing it, they always could pay money to authors to fix it. Usually, the latter condition is not very appealing to the user, because authors often don’t have enough capacity to handle serious paid fixes or improvements in the software, in a timely and professional manner. In contrary to this, many closed-source vendors would happily fix or adapt their software to user’s needs, and have enough capacity and project experience to handle it. As a result for free software, it takes more efforts of in-house software developers to use it, and allows for less possibilities to buy software development, than closed source software. This is one of the factors for having cheap software developers in-house, because if you have a lot of cheap developers, you can also use more free of charge products. The more expensive and scarce in-house IT resources are, the higher is the probability of using closed-source solutions, because it is then cheaper.
Free to redistribute
This is perhaps a relict from the times where software was distributed on physical media, so that giving your own disk to your friend was easier for him than obtaining the software from its author. Presently, the only advantage of this freedom for the user I can see is the avoiding being tracked as a user by the author. Which would endanger the only strong motivation of writing free software (fame of a successful product), and is therefore often contradicted with special clauses in the license agreement.
Free to base your own work on it
Freedom to fork existing projects is self-protection of open source. It ensures continued development of a product, if its original author turned to be a compromise-less jerk and is driving it into wrong direction. Or if the authors have been hired and have to commercialize the software. It also makes OSS maintainers to be more attentive to the requests and proposals of other contributors, out of fear to be forked and to lose contributors. As a result, OSS can be more stable and robust on the market.
In theory, this freedom also means you can create competition to the author of this component. For example by taking some free codec and improving it. In practice, there are not so many reasons to allow this for free, therefore this right will be exploited, for example, for virality of the GPL license.
As a result, a little more OSS is produced; and much more commercial products are produced, which are strictly speaking illegal due to OSS license constraints. In both cases, more software is produced, because large parts of code can be reused, for free. Have I already mentioned that OSS accelerates innovations in the IT industry?
By the way, Node.js is also a good example of how this freedom works in practice; it re-uses an OSS component intended to be used in web browsers and written by Google engineers, to run on the server side. The best what can happen to a thing you’ve made is that it is successfully used in a context you’ve never envisioned it in.
Open source has accelerated innovation rate of IT industry and helped to create the Internet as we know it, and is still doing it in many different ways.
It is fascinating to see how abstract principles of a small group of software freedom fanatics hit the real world, and many principles have waned, and others have suddenly resonated, and the whole industry is shifted and markets are disrupted, and lives of everybody on Earth is changed, due to the rize of the Internet.