Since my very early childhood I always loved tinkering with electronics. Initially, I disassembled toy trains, jeeps and motorbikes. When I received my first PC, this escalated and items such as joysticks and gaming pads fell victim to my tinkering urges. Naturally, as time went by, I aimed for bigger (and better) stuff, like desktop computers. I truly enjoyed altering and improving objects around me. This concerned software as well, and hence my very first grudge against Windows.
Software for Windows is usually protected by a slew of copyright laws. Thereby, publishing improvements is limited. As an example, if I were to make a certain Windows program more useful, I would most likely be prohibited from publishing my work without the explicit consent of the authors. In many cases this consent (either verbal or in written form) wouldn’t have been given to me, because that would conflict with the interests of the company that released said software. This proprietary model effectively limits development to the work done by companies only. On the other hand, open-source and free software is a loose collective of regular users, hobbyist programmers and developers, which is capable of delivering much more in the same time-frame. Study of freedom in software development eventually led me to the work of Richard Matthew Stallman…
Richard Matthew Stallman (nicknamed ‘rms’ on Internet forums) is a freedom activist, Linux developer and programmer. The list of his achievements is so long that one could easily write a book (or two…) to cover his life. I personally hold rms in very high regards and consider his Four Freedoms to be of equal importance to Asimov’s Three Laws of Robotics. However, when discussing freedom in general and freedom in software development, one should consider the possible extremes – lack of freedom (tyranny) and too much freedom (anarchy).
Just to briefly recapitulate Stallman’s Four Freedoms:
0. The freedom to read the work or watch that work, for any purpose.
1. The freedom to see and study how the knowledge was assembled, and change its form so it becomes what you “know”.
2. The freedom to share so you can help your neighbor.
3. The freedom to distribute copies of your modified works to others.
I completely agree with points 0. and 1. with a small addition that I would gladly donate to support the developers behind a given project, if I find it useful. There is something ethically twisted in the proprietary model to me. The customer (no longer a user, because money is already involved) pays for a promise of software quality, rather than for the software itself, because he/she will be able to verify that quality only after concluding the purchase. Due to the fact that money comes first, this model is awfully misused. Concerning video games, years ago a common practice was to release demo versions of games to give the customer a chance to test the product before buying. Currently, this has been substituted with ethically dubious hyping.
On points 2. and 3. Sharing is not always the case and people often take, but not give back to the community either out of laziness or a simple lack of skills. Rarely, this is pushed towards a capitalistic extreme. People take and resell the software, generating revenue. Some licenses indirectly allow this (for instance, the BSD license), though I think it should be frowned upon and ostracized by the community. Money tends to put a fixed, arbitrary value that fails to capture the subjective value of an object, perceived by each of us individually.
To conclude, I believe Stallman’s Four Freedoms are of grave importance and should be applied to software when possible. However, great care needs to be taken as to avoid misuse and corruption. We are people, after all. Both good and bad is part of our nature…