Last update: 2011/08/21
Writing software may be an art and some "artists" have pretty special ideas about the art they create.
If art is defined as something that people take pleasure in producing, that contains something that different people agree is intrinsically beautiful and, therefore, connoisseurs can admire, some pieces of software could be defined as pieces of art. As for all arts, you have the practitioners - those who produce an artistic piece just because they like to do that and take pleasure in seeing others nod in approval at it - and the professionals - those who do the same in hope or certainty of receiving a reward.
In this context there is probably nothing more emblematic than the great project that built the internet. You could see people taking pleasure in inventing protocols, debating the merits of their own ideas, and implementing them in some smart piece of software knowing other colleagues would look at it and find other smart ideas on how complex processing could be expressed with a handful of computer instructions. Add to it the sense of fulfillment that came from the idea of contributing to building the communication infrastructure of tomorrow serving the whole of mankind. Finally also add that all this happened largely in the academic environment where people were paid based on a contract and that performance review, at the time the contract work was due, just had to check how smart protocol ideas and software implementations had been. These few hints suggest how the world that produced the internet can be considered as a sort of realisation of Plato's political ideas.
On another occasion I have compared that memorable venture - absit iniuria verbis - with the work that my ancestors who lived in the lower parts of the Western Alps near the city of Turin had done when they cobble-stoned the paths criss-crossing the mountains behind their houses. They did that with the same zeal and sense of duty because it was more comfortable for everybody to have cobble-stoned paths instead of leaving them in the state in which the steps of millions of passengers had molded them. Everybody tried to do his best in the hope that others would admire the perfection of the work done. The only difference may be that doing that work was probably not the free decision of those mountain dwellers but more due to the local communal authority that imposed corvées on them during winter when work in the fields was minimal.
Next to the world of people taking pleasure in writing smart computer code, however, there were other people who just dealt with this particular form of art in a more traditional way. In the early 1960s, computer manufacturers freely distributed computer programs with mainframe hardware. This was not done because those manufacturers did not value their software, but because those programs could only operate on the specific computer platform the software went with. But already in the late 1960s, manufacturers had begun to distribute their software separately from the hardware. The software was copyrighted and "license", instead of "sale", was the legal form under which the developer of the software allowed use of his product.
Copyrighted software is the type of software for which the author retains the right to control the program's use and distribution, not unlike what authors and/or publishers have done for centuries with their books. In the 1970s "public domain" software in source code came to the stage. This type of software has the exact opposite status of copyrighted software because by putting the software in the public domain, the rights holder gives up ownership and anyone can use it in any way he chooses while the original rights holder has no say. In the rest of this page I will mention several categories of software. The reader may like to get a more extended treatment of the subject.
Since early Internet times, access to User Groups and Bulletin Board Systems (BBS) was already possible. These groups passed around software for which the programmers did not expect to be paid, either because the program was small, or the authors offered no support or for other reasons such as because the author just wanted the rest of the world to see how smart he was or how good he was in donating something that benefited other people. One should not be too surprised if, besides public domain software, such user groups and BBSs passed around some pirated commercial software.
In 1982, two major programs for the IBM PC were published: a communication program called PC-Talk by Andrew Fluegelman and a database program called PC File by Jim Knopf. Even though these were substantial programs, the authors decided to try the spontaneous distribution networks, instead of marketing the programs through normal commercial channels. Users could freely copy their programs, but were reminded that if they wanted the authors to be motivated to continue producing valuable software for others to freely use, they should send money to the authors.
Fluegelman called this new software distribution method "Freeware" and trademarked the name. However, Fluegelman did little to continue to develop and promote PC-Talk because he lost control over PC-Talk source code when several "improved" versions of the program appeared. Instead Knopf succeeded in building a multi-million dollar database company with his PC-File. This idea set a pattern for others to follow, for instance Bob Wallace who developed a successful business with his PC-Write, a word processing program. PC-Write was free to try, but required a payment if the user continued to use it. These three major applications became popular with major businesses and established the credibility of Freeware as a source of high quality, well-supported software. As the name "Freeware" had been trademarked, the user community settled on "shareware", the name used by Bob Wallace for his PC-Write.
In 1984, Richard Stallman promoted the idea of "Free Software" and formed the Free Software Foundation. With the help of lawyers he developed the Gnu's Not Unix (GNU) General Public License (GPL) and called the licence "copyleft". This grants that the software is available for use and further development by others. GNU followers, starting from the founder of the movement, like to say that GNU software is free. This adjective does not represent unambiguous categories - not just the well-known ambiguity of the English language between "gratis" and "freedom" - and therefore I will refrain from using it. I will use instead the term "GNU license" because, even though most people would agree that the GNU license gives users "more" rights than, say, Microsoft gives users of its Word program, the GNU license is by no means "unrestricted" as the unqualified word "free" means to me.
In summary the rights are the freedom to:
The obligations are to:
There is no warranty for GNU license software and if the software is modified, recipient must be made aware that it is a modification. Finally any patent required to operate the software must be licensed to everybody.
A justification of the Open Source Software (OSS) approach is that it is a more effective way of developing software. If software is Open Source, this is the thesis, its evolution is facilitated because programmers can improve it, make adaptations, fix bugs, etc. All this can happen at a speed and effectiveness that conventional software development in corporate environments cannot match.
The Open Source Initiative (OSI), a California not-for-profit corporation, has produced an Open Source Definition according to which OSS does not just mean access to the source code, but also that the distribution terms must comply with a set of general criteria. These are summarised below with the intention of providing a general overview of the approach. Interested readers are advised to see the official document.
An interesting case combining collaborative software development and standardisation in the context of a proprietary environment is the Java Community Process (JCP) started by Sun Microsystems in 1998 and revised in 2000. Companies, organisations or even individuals who have signed the Java Specification Agreement (JSPA) form the Community. Legally, JSPA is created by an agreement between each member of the Community and Sun (now Oracle) that sets out rights and obligations of a member participating in the development of Java technology specifications in the JCP.
Below is a brief description given for the purpose of understanding the spirit of the process. Those interested in knowing more about this environment are invited to see JSPA directly. The process works through the following steps:
Aside from considering some elements that are specific to the Java environment, the process described is very similar to the process that MPEG has been following since MPEG-4 times.
Some time ago Microsoft has taken quite a strong position vis-à-vis OSS, claiming that OSS contains elements that undermine software companies' business. Some of the reasons put forth are the possibility to have "forking", i.e. the split of the code base into separate directions (exactly what the MPEG-4 license does not allow) enabled by the possibility for anybody to modify a piece of OSS, and the risk of contaminating employees working in non-OSS companies.
As an alternative, Microsoft proposes a different approach that it calls Shared-Source Software (SSS) which is expected to encourage commercial software companies to interact with the public, and to allow them to contribute to open technology standards without losing control of their software. This basically means that the company is ready to license, possibly at no charge, some parts of its software to selected entities, such as universities for research and educational purposes, or Original Equipment Manufacturers (OEM) to assist in the development and support of their products.