So you have heard of free software? The kind of software you can download and use for free, like Linux and Firefox… Well, maybe you even heard that the software is free not because of its price (or lack of it), but because of the freedoms they allow, that is why some call them Software Libre, libre as in liberty.
If so, then have you ever thought about the cost of free software? I am not talking about price, the fee you pay to get your hands on a copy, I am talking about cost: the resources consumed so that software could be built. From resources it is easy to think about money, because it is the most generic form of resource invented in our society. Closely tied to money, there is another, most precious, resource: time. I dare to say that time is much more precious than money, because with time you can make money, so working for some hours is worth some dollars, but the inverse is not always the true. With money you can speed-up the building of a bridge, but there is a limit on how much this speed-up can be achieved with money, and with exponentially more money you can only speed-up the building linearly, saving you much less time than the money you spent. This is not the worst case: no money at all can bring back the weekend you missed far from your family while working for money, thus I may say that time is the most precious resource available.
So, what does it take to build free software? Well, pretty much what takes to build any software. First, it requires highly specialized professionals, that takes years to train in a painful process full of math, super complicated codes, languages and stunning logical puzzles. Well, it is so from the standpoint of most people, i.e. it is not so painful for the software developers, because they like it. The fact the developers like to be developers does not change the fact that it is not everybody that can stand their training, making these professionals a rare resource by themselves.
Secondly, it requires time. Only someone who has seen ten thousand lines of source code can have a glimpse of how complicated and time-consuming it is to build a software. It is a manual art, with each line of code requiring attention and care. I compare programming to any craftsmanship, like carpentry or masonry, that can take very big proportions, depending of the software being built. An average software takes pretty much the same numbers of workers and the same time to be built as an average building. The care needed in laying each brick manually is the same care needed to write each line of code. Give not the needed care, and we have bad buildings and bad software, if at all.
Summing up the time and work needed to build a software, we end up with very expensive products. Buildings have another cost software usually does not have: the materials (the cost of a computer is irrelevant if compared to the cost of the programmers), but on the other way, given the social injustice and the complexity involved in programming, it is far more easy to find qualified construction workers than qualified programmers. Since some nature law states that what is rarer is more expensive, getting workers for a software is very expensive.
That brings the question: if it is so expensive, where do the resources needed for developing free software come from, since I do not pay for it? For large and important free software projects, it is easy to answer: Linux is base for dozens of other system and products of very large corporations, so they pay full-time developers to work exclusively on Linux. Java is a core technology inside Oracle’s business model, so most of the effort in improving Java comes from them. This development model is the so-called Open Source, where the costs of developing a software is shared among business and individuals interested in it, by making and maintaining that software free.
Now we must not forget the force of great importance pushing forward the free software, the same force that made Linux prominent: the individuals. We would not have free software as we do today if it were not for the contribution of uncountable individual programmers, who spent their spare time working for no money in software, just for the fun of doing so. Many of these programmers are not concerned about ideology or economics of free software, and they do not develop free software for anyone but themselves. Even those individuals programmers need to eat, so many of them have full-time jobs, completely unrelated to their work on free software, that they use to pay the bills. As a hobby, they create free software.
These schemes of funding, both the corporate and individual, brings a disadvantage to free software in general: it is too developer-centric. In one side, we have corporate creating consumer goods using free software, being theses goods themselves not free, so there is no interest at all in making the free software friendly for the general public. In the other side, we have individual programmers developing for themselves, what, obviously, will not result in friendly software as well. As general rule, free software is not friendly for non-computer geeks. Some people try to overcome this limitation, like Canonical with Ubuntu. Although successful, it is not as successful as we would like it to be. Others truly were able to overcome this limitation, like Mozilla Foundation with Firefox. How? If you ask me, I would say that it is because that their founding is directly tied with the number of users of Firefox, using Google services through it, giving Mozilla some revenue.
So, the funding scheme of free software leaves it with a fundamental flaw, a flaw that disable us of gaining critical mass: end-users have no voice. Free software is not created for them, and if they do not want to use it, fine, go pay for Windows. To overcome this flaw, we could try to involve the end-user into the development process, and Ubuntu was able to do it at some extent, but it is a painful process, too. Since end-user has very little to contribute in practice to the development of the software, there is no incentive for them to take part in it, nor to the technical community to welcome them.
How to solve this problem? How can a non-programmer users be made an active and important part of the free software development process, as they are in non-free software? Well, I am not completely sure, but I have some ideas. Me and some friends are working on it, so far it is called Project Alvarium, and we hope to deliver something some day, preferably soon…