Introduction to Software 1

INTRODUCTION TO SOFTWARE

A COMPREHENSIVE BOOK

PUBLISHED BY FREE TECHNOLOGY ACADEMY

Preface

Software has become a strategic societal resource in the last few decades. The emergence of Free Software, which has entered in major sectors of the ICT market, is drastically changing the economics of software development and usage. Free Software – sometimes also referred to as “Open Source” or “Libre Software” – can be used, studied, copied, modified and distributed freely. It offers the freedom to learn and to teach without engaging in dependencies on any single technology

provider. These freedoms are considered a fundamental precondition for sustainable development and an inclusive information society. Although there is a growing interest in free technologies (Free Software

and Open Standards), still a limited number of people have sufficient knowledge and expertise in these fields. The FTA attempts to respond to this demand.

Introduction to the FTA

The Free Technology Academy (FTA) is a joint initiative from several educational institutes in various countries. It aims to contribute to a society that permits all users to study, participate and build upon existing knowledge without restrictions.

What does the FTA offer?

The Academy offers an online master level programme with course modules about Free Technologies. Learners can choose to enrol in an individual course or register for the whole programme. Tuition takes

place online in the FTA virtual campus and is performed by teaching staff from the partner universities. Credits obtained in the FTA programme are recognised by these universities.

Who is behind the FTA?

The FTA was initiated in 2008 supported by the Life Long Learning Programme (LLP) of the European Commission, under the coordination of the Free Knowledge Institute and in partnership with three European universities: Open Universiteit Nederland (The Netherlands), Universitat Oberta de Catalunya (Spain) and University of Agder (Norway).

For who is the FTA?

The Free Technology Academy is specially oriented to IT professionals, educators, students and decision makers.

What about the licensing?

All learning materials used in and developed by the FTA are Open Educational Resources, published under copyleft free licenses that allow them to be freely used, modified and redistributed. Similarly, the

software used in the FTA virtual campus is Free Software and is built upon an Open Standards framework.

Evolution of this book

The FTA has reused existing course materials from the Universitat Oberta de Catalunya and that had been developed together with LibreSoft staff from the Universidad Rey Juan Carlos. In 2008 this book

was translated into English with the help of the SELF (Science, Education and Learning in Freedom) Project, supported by the European Commission’s Sixth Framework Programme. In 2009, this material has been improved by the Free Technology Academy. Additionally the FTA has developed a study guide and learning activities which are available for learners enrolled in the FTA Campus.

Participation

Users of FTA learning materials are encouraged to provide feedback and make suggestions for improvement. A specific space for this feedback is set up on the FTA website. These inputs will be taken into account for next versions. Moreover, the FTA welcomes anyone to use and distribute this material as well as to make new versions and translations. See for specific and updated information about the book, including translations and other formats:http://ftacademy.org/materials/fsm/1. For more information and enrolment in the FTA online course programme, please visit the Academy’s website: http://ftacademy.org/. I sincerely hope this course book helps you in your personal learning process and helps you to help others in theirs. I look forward to see you in the free knowledge and free technology movements! Happy learning! Wouter Tebbens President of the Free Knowledge Institute Director of the Free technology Academy the authors would like to thank the Foundation for the Universitat Oberta de Catalunya for financing the first edition of this work, and a large share of the improvements leading to

the the second edition, as part of the Master Programme in Free Software offered by the University in question, where it is used as material for one of the subjects.

The translation of this work into English has been made possible with the support from the SELF Project, the SELF Platform, the European Comission’s programme on Information Society Technologies and the Universitat Oberta de Catalunya. We would like to thank the translation of the materials into English carried out by lexia:park.

The current version of these materials in English has been extended with the funding of the Free Technology Academy (FTA) project. The FTA project has been funded with support from the European Commission (reference no. 142706- LLP-1-2008-1-NL-ERASMUS-EVC of the Lifelong Learning Programme). This publication reflects the views only of the authors, and the Commission cannot be held responsible for any use which may be made of the information contained therein. GNUFDL • PID_00148366 5 Introduction to Free Software

Introduction

“Anyone who hears this, if he can sing, may add and change at pleasure. Let it go from hand to hand: let those who request it have it. As a ball among young women, catch it if you can. Since this is of ‘Good Love’, lend it out gladly: do not make a mockery of its name by keeping it in reserve; nor exchange it for money by selling or renting it; for ‘Good Love’ when bought, loses its charm.” Juan Ruiz, Archpriest of Hita. The Book of Good Love (14th century, original in Ancient Spanish) The first version of these notes was written by Jesús M. González-Barahona, Joaquín Seoane Pascual and Gregorio Robles between April and September 2003. Although we had been discussing for a while preparing a document of this type for the Free Software course that Joaquín and Jesús teach as part of the PhD programs of their respective departments, it was the initiative of the Open University of Catalonia (UOC) that commissioned us to prepare material to introduce the free software masters course, which finally encouraged us to get started. The involvement of Jordi Mas, the academic coordinator of the masters course, in this task was crucial, in that he proposed us for the job and put us in contact with the UOC, additionally supporting our relations with the UOC throughout the project’s duration.

Shortly after handing in the first edition, the authors started retouching the material as part of an ongoing process, although with varying degrees of activity, until this second edition was completed in May 2007. During this time, the first edition was extensively used in the free software masters of the UOC and in various other postgraduate courses in Spain and America. The experience with the UOC has been followed with particular interest by Gregorio Robles, who has participated in it, and has therefore obtained feedback that has proven extremely valuable for improving the content. The three of us

(Joaquín, Jesús, and since 2006, Gregorio) have also continued with the postgraduate software course at the UPM (Polytechnic University of Madrid) and at the URJC (Rey Juan Carlos University), taking advantage of it in order to test the material.

Once again, the UOC has been the catalyser of this second edition, charging us with a commission that we have taken too long to complete. The work of Jordi Mas and David Megías (of the UOC) has been fundamental, and has provided vital critical support for pushing forward this new edition. The work of

José Ignacio Fernández Villamor and Boni García Gutiérrez, pupils of Joaquín Seoane, who have collaborated in reviewing the materials for this second edition, has also been essential. GNUFDL • PID_00148366 6 Introduction to Free Software

Previousmaterials

Some of the texts in these notes are based on previous material, usually belonging to the authors themselves, and in some cases to third parties (used with permission when not completely redrafted). Among them, we would like to mention the following (at the risk of omitting anyone important):

• There are some fragments (especially on the chapters of history and the economy) inspired by the document “Free Software / Open Source: Information Society Opportunities for Europe?” [132], which Jesús González- Barahona co-edited for the European Commission. However, the fragments in question have been extended, retouched and updated to such an extent that in many cases they may be difficult to recognise.

• The section on monopolies and free software (section 5.4) has been based on the paper “Software libre, monopolios y otras yerbas” (“Free software, monopolies and other herbes”) [84], by Jesús M. González-Barahona.

• The sections on legislative initiatives and public administration initiatives in relation to free software are partly based on “Iniciativas de las administraciones públicas en relación al Software Libre” (“Initiatives of public administrations related to free software”) [103] (thanks to Pedro de las Heras

for allowing us to use this material, which he co-authored).

• Part of the section on motives for using free software in the public administrations (Section 6.2) is based on the paper [85], by Jesús M. González- Barahona.

• The chapter on free software engineering is an adaptation of the paper on the state of the art of software engineering applied to free software by Jesús M. González-Barahona and Gregorio Robles for the magazines Novática (Spanish version) and Upgrade (English version).

• In the chapter on case studies, the part regarding the development of Linux is based on a presentation made by Juan-Mariano de Goyeneche during the postgraduate course “Free Programs” of the Polytechnic University of Madrid during academic year 2002-03.

• The historical part of the detailed study of GNOME has been taken from the historical introduction included in the book on “Applications development in GNOME2″ prepared by GNOME Hispano and written by one of the authors of this book.

• The FreeBSD case study is partly based on the presentation given by Jesús Rodríguez at the III HispaLinux Conference held in Madrid in the year 2000. GNUFDL • PID_00148366 7 Introduction to Free Software

• The Debian and Red Hat case studies are based on the previous work of González-Barahona et al. who have reflected the results of the quantitative analysis of these two distributions in various papers.

• Various materials, especially updates and new material in the chapter on case studies, were prepared by José Ignacio Fernández Villamor and Boni García Gutiérrez towards the beginning of 2007 on a specific branch for modifications made in the context of that year’s edition of the postgraduate subject of Joaquín Seoane at the UPM. A large proportion of those materials were included in time for the second edition. GNUFDL • PID_00148366 8 Introduction to Free Software

Free Documentation Licence, Version 1.2 or any subsequent version published by the Free Software Foundation, with no invariant

sections or front-cover or back-cover texts, or under the terms of Creative Commons by-sa 3.0 license, at the option of the user. A

copy of these licenses is included in the corresponding appendixes of this document.

GNUFDL • PID_00148386 Free Software

Index

1. Introduction……………………………………………………………………………. 9

1.1. The concept of software freedom………………………………………….. 9

1.1.1. Definition …………………………………………………………….. 10

1.1.2. Related terms ……………………………………………………….. 11

1.2. Motivations ……………………………………………………………………… 12

1.3. The consequences of the freedom of software ……………………… 12

1.3.1. For the end user …………………………………………………… 13

1.3.2. For the public administration ………………………………… 14

1.3.3. For the developer ………………………………………………….. 14

1.3.4. For the integrator …………………………………………………. 15

1.3.5. For service and maintenance providers ……………………. 15

1.4. Summary …………………………………………………………………………. 15

2. A bit of history……………………………………………………………………….. 16

2.1. Free software before free software ………………………………………. 16

2.1.1. And in the beginning it was free ……………………………. 17

2.1.2. The 70s and early 80s …………………………………………… 18

2.1.3. The early development of Unix ……………………………… 19

2.2. The beginning: BSD, GNU …………………………………………………. 20

2.2.1. Richard Stallman, GNU, FSF: the free software

movement is born ………………………………………………… 20

2.2.2. Berkeley’s CSRG ……………………………………………………. 21

2.2.3. The beginnings of the Internet ………………………………. 23

2.2.4. Other projects ………………………………………………………. 25

2.3. Everything in its way ………………………………………………………… 25

2.3.1. The quest for a kernel …………………………………………… 25

2.3.2. The *BSD family …………………………………………………… 26

2.3.3. GNU/Linux comes onstage ……………………………………. 26

2.4. A time of maturation ………………………………………………………… 27

2.4.1. End of the nineties ……………………………………………….. 28

2.4.2. Decade of 2000 …………………………………………………….. 31

2.5. The future: an obstacle course? ………………………………………….. 38

2.6. Summary …………………………………………………………………………. 39

3. Legal aspects ………………………………………………………………………….. 40

3.1. Brief introduction to intellectual property …………………………… 40

3.1.1. Copyright …………………………………………………………….. 41

3.1.2. Trade secret ………………………………………………………….. 43

3.1.3. Patents and utility models …………………………………….. 43

3.1.4. Registered trademarks and logos …………………………….. 45

3.2. Free software licences ………………………………………………………… 45

3.2.1. Types of licences …………………………………………………… 46

GNUFDL • PID_00148386 Free Software

3.2.2. Permissive licences ………………………………………………… 47

3.2.3. Strong licences ……………………………………………………… 50

3.2.4. Distribution under several licences …………………………. 54

3.2.5. Program documentation ………………………………………… 54

3.3. Summary …………………………………………………………………………. 56

4. Developers and their motivations…………………………………………. 57

4.1. Introduction …………………………………………………………………….. 57

4.2. Who are developers? …………………………………………………………. 57

4.3. What do developers do? ……………………………………………………. 58

4.4. Geographical distribution ………………………………………………….. 59

4.5. Dedication ……………………………………………………………………….. 61

4.6. Motivations ……………………………………………………………………… 62

4.7. Leadership ……………………………………………………………………….. 63

4.8. Summary and conclusions …………………………………………………. 65

5. Economy…………………………………………………………………………………… 66

5.1. Funding free software projects ……………………………………………. 66

5.1.1. Public funding ……………………………………………………… 66

5.1.2. Private not-for-profit funding ………………………………… 68

5.1.3. Financing by someone requiring improvements ………. 69

5.1.4. Funding with related benefits ………………………………… 69

5.1.5. Financing as an internal investment ………………………. 70

5.1.6. Other financing modes …………………………………………. 71

5.2. Business models based on free software ………………………………. 73

5.2.1. Better knowledge ………………………………………………….. 74

5.2.2. Better knowledge with limitations ………………………….. 75

5.2.3. Source of a free software product ……………………………. 76

5.2.4. Product source with limitations ……………………………… 77

5.2.5. Special licences …………………………………………………….. 78

5.2.6. Brand sale ……………………………………………………………. 79

5.3. Other business model classifications …………………………………… 79

5.3.1. Hecker classification ……………………………………………… 79

5.4. Impact on monopoly situations …………………………………………. 80

5.4.1. Elements that favour dominant products ………………… 81

5.4.2. The world of proprietary software …………………………… 82

5.4.3. The situation with free software …………………………….. 82

5.4.4. Strategies for becoming a monopoly with free

software ……………………………………………………………….. 83

6. Free software and public administrations ………………………….. 85

6.1. Impact on the public administrations …………………………………. 85

6.1.1. Advantages and positive implications ……………………… 86

6.1.2. Difficulties of adoption and other problems …………….. 89

6.2. Actions of the public administrations in the world of free

software …………………………………………………………………………… 91

GNUFDL • PID_00148386 Free Software

6.2.1. How to satisfy the needs of the public

administrations? …………………………………………………… 91

6.2.2. Promotion of the information society …………………….. 93

6.2.3. Research promotion ………………………………………………. 94

6.3. Examples of legislative initiatives ……………………………………….. 95

6.3.1. Draft laws in France ……………………………………………… 95

6.3.2. Draft law of Brazil ………………………………………………… 96

6.3.3. Draft laws in Peru …………………………………………………. 97

6.3.4. Draft laws in Spain ……………………………………………….. 98

7. Free software engineering …………………………………………………….. 100

7.1. Introduction …………………………………………………………………….. 100

7.2. The cathedral and the bazaar …………………………………………….. 100

7.3. Leadership and decision-making in the bazaar …………………….. 102

7.4. Free software processes ……………………………………………………… 104

7.5. Criticism of ”The cathedral and the bazaar” ………………………… 105

7.6. Quantitative studies ………………………………………………………….. 106

7.7. Future work ……………………………………………………………………… 109

7.8. Summary …………………………………………………………………………. 110

8. Development environments and technologies……………………… 111

8.1. Description of environments, tools and systems ………………….. 111

8.2. Associated languages and tools ………………………………………….. 112

8.3. Integrated development environments ……………………………….. 113

8.4. Basic collaboration mechanisms …………………………………………. 113

8.5. Source management ………………………………………………………….. 115

8.5.1. CVS ……………………………………………………………………… 116

8.5.2. Other source management systems …………………………. 119

8.6. Documentation ………………………………………………………………… 120

5. Economy

“Res publica non dominetur.”

“Public things have no owner.” (free translation)

Appeared in an IBM advert about Linux (2003)

This chapter looks at some economic aspects related to free software. We will start by showing how free software projects are financed (when they are indeed financed, since in many cases they rely solely on efforts and resources contributed voluntarily). Next, we will look at the main business models put into practice by companies directly associated to free software. The chapter ends with a small study of the relationship between free software and monopolies in the software industry.

5.1. Funding free software projects

Free software is developed in many different ways and using mechanisms to obtain funds that vary enormously from case to case. Every free project has its own way of financing itself, from the one consisting totally of volunteer developers and using only altruistically ceded funds, to the one carried out by a company that invoices 100% of its costs to an organization interested in the corresponding development.

In this section, we will focus on the projects where there is external funding and not all the work is voluntary. In these cases, there is normally some form of cash inflow, from an external source to the project, responsible for providing funds for its development. This way, the free software that is built may be considered, to some extent, to be the product of this external funding. This is why it is common for that external source to decide (at least in part) how the funds are spent and on what. In some way, this external funding for free projects can be considered a kind of sponsorship, although this sponsorship has no reason for being disinterested (and usually it is not). In the following sections we discuss the most common types of external funding. However, while learning about them, we should remember that these are just some of the ways that free software projects obtain resources. But there are others, and of these the most important one (as we have seen in chapter 4) is the work of many volunteer developers.

5.1.1. Public funding

A very special type of financing for free projects is public funding. The funding body may be directly a government (local, regional, national or even supranational) or a public institution (for example, a foundation). In these cases, GNUFDL • PID_00148386 67 Free Software the funding tends to be similar as for research and development projects, and in fact it is common for the funding to come from public bodies that promote R+D. Normally, the funding body will not seek to recover the investment (or at least not directly), although it tends to have clear objectives (such as promoting the creation of an industrial or research-based fabric, promoting a certain technology or a certain type of application, etc.). In most of these cases, there is no explicit financing of products or services related to free software, but rather this tends to be the sub-product of a contract with other more general objectives. For example, as part of its research programs, the European Commission funds projects aimed at improving European competitiveness in certain fields. Some of these projects have as part of their objectives to use, improve and create free software within the scope of the research (as a research tool or a product derived from it). The motivations for this type of financing are very varied, but we can distinguish the following:

1) Scientific. This is the most frequent one in the case of publicly funded research projects. Although its objective is not to produce software but rather to investigate a specific field (whether IT-related or not), it is likely to require programs to be developed as tools for achieving the project’s objectives. Usually the project is not interested in commercialising these tools, or may even be actively interested in other groups using and improving them. In such cases, it is fairly common to distribute them as free

software. In this way, the group conducting the research has partly dedicated funds to producing this software, so we can say that it has been developed with public funding.

2) Promoting standards. Having a reference implementation is one of the best ways of promoting a standard. In many cases this involves having programs that form part of said implementation (or if the standard refers to the software field, to be the implementation themselves). For the reference implementation to be useful in promoting the standard, it needs to be available, at least in order to check interoperativity for all those wishing to develop products that subscribe to that standard. And in many cases it is also advisable for manufacturers to be able to adapt the reference implementation

directly in order to use it with their products if they wish. This is how, for example, the Internet protocols were developed, which have now become a universal norm. In such cases, releasing reference implementations as free software can contribute enormously towards that promotion. Once again, free software here is a sub-product, in the case of promoting a standard. And normally the party responsible for this promotion is a public body (although sometimes it may be a private consortium).

3) Social. Free software is a very interesting tool for creating the basic infrastructure for the information society. Organisations interested in using GNUFDL • PID_00148386 68 Free Software

free software to promote universal access to the information society can finance projects related to it (normally with projects for developing new applications or adapting already existing ones).

Note

An example of public financing for a primarily social objective is the case of gnuLinEx, promed by the Extremadura Regional Government (Extremadura, Spain) in order to promote the information society fundamentally in terms of computer literacy. The Regional Government has financed the development of a distribution based on Debian in order to achieve this objective. Another similar case is the German government funding of GnuPG developments, aimed at making them easier to use for inexperienced users, with the idea of promoting the use of secure mail by its citizens.

The development of GNAT A notorious case of public financing for a free software development is the case of the GNAT compiler. GNAT, the Ada compiler, was financed by the Ada 9X project of the US Department of Defence, with the idea of having a compiler of the new version of the Ada programming language (which would later become Ada 95), which it was trying to promote at that time. One of the causes identified in relation to software companies adopting Ada’s first version (Ada 83) was the late availability of a language compiler and its high cost when it was finally released. Therefore, they tried to prevent the same thing from happening with Ada 95, ensuring that the compiler was ready almost simultaneously with the release of the language’s new standard. To do so, Ada 9X contracted a project with a team from the University of New York (NYU), for an approximate value of one million USD, to carry out a “concept implementation” of the Ada 95 compiler. Using these funds, and taking advantage of the existence of GCC (GNU’s C compiler, of which most of the backend was used), the NYU team effectively built the first Ada 95 compiler, which it released under the GNU GPL. The compiler was so successful that when the project was finished some of its creators founded a company (Ada Core Technologies), which since then has become the market leader in compilers and help tools for building programs in Ada. In this project it is worthy to note the combination of research elements (in fact, this project advanced knowledge on the building of front ends and run time systems for Ada-type language compilers) and promotion of standards (which was the funding body’s clearest objective).

5.1.2. Private not-for-profit funding

This type of funding has many similar characteristics to the previous type, which is normally conducted by foundations or non-governmental organisations. Direct motivation in these cases tends to be to produce free software for use in a sphere that the funding body considers particularly relevant, but we may also find the indirect motivation of contributing to problem-solving (for example, a foundation that promotes research into a disease may finance the construction of a statistics program that helps to analyse the experimental groups used as part of the research into that disease). In general, both the motives and the mechanisms for this type of funding are very similar to those of public funding, although naturally they are always in the context of the funding body’s objectives. GNUFDL • PID_00148386 69 Free Software

Note

Probably, the archetypal case of a foundation that promotes the development of free software is the Free Software Foundation (FSF). Since the mid-1980s this foundation is dedicated to promoting the GNU project and to encouraging the development of free software in general.

Another interesting case, although in a rather separate field, is the Open Bioinformatics Foundation. The objectives of this foundation include promoting the development of basic computer programs for research in any of the branches of bioinformatics. An in general, it promotes this by financing and contributing to the construction of free programs. 5.1.3. Financing by someone requiring improvements.

Another type of financing the development of free software, which is not quite so altruistic, takes place when someone needs to make improvements to a free product. For example, for internal use, a company may need a certain program to have a particular functionality or to correct a few bugs. In these cases, it is common for the company in question to contract the required development. This development is often free software (whether because the licence of the modified program imposes it, or because the company decides it).

The case of Corel and Wine

Towards the end of the 1990s, Corel decided to port its products to GNU/Linux. During this process it discovered that a free program designed to facilitate the execution of binaries for Windows in Linux environments could help to make considerable development savings. But in order to do so, it had to be improved, fundamentally by adding the emulation of some Windows functionality that the Corel programs used. For this, Corel contracted Macadamian, which contributed its improvements to the Wine project. This way, both Corel and Wine benefited.

5.1.4. Funding with related benefits

With this type of financing, the funding body aims to obtain benefits from products related to the program whose development it funds. Normally, in these cases the benefits obtained by the funding body are not exclusive, since others can also enter the market for selling the related products, but either the market share it captures is sufficient for it not to worry too much about sharing the pie with others, or it has a clear competitive advantage.

Some examples of products related to a particular software are as follows:

• Books. The company in question sells manuals, user guides, course materials, etc. related to the free program that it helps to finance. Of course, other companies can also sell related books, but normally financing the project will give the company early access to key developers before the competition, or simply provide a good image towards the user community of the program in question.

• Hardware. If a company funds the development of free systems for a certain type of hardware, it can more easily dedicate itself to selling that type GNUFDL • PID_00148386 70 Free Software of hardware. Once again, since the software developed is free, competitors selling the same type of devices may appear, that use the same developments without having collaborated in the funding. But even so, the company in question has several advantages over its competitors, and one of them may be that its position as a source of funding for the project allows it to exert influence so that priority is given to the developments in which it is most interested.

• CD with programs. Probably, the best known model of this type is the one of companies financing certain developments that they then apply to their software distribution. For example, having a good desktop environment can help a lot to sell a CD with a certain distribution of GNU/Linux, and therefore, financing its development could be a good business for the party selling the CDs. We need to bear in mind that under this heading the financing in question has to be made with a profit motivation, and therefore the funding body has to obtain a potential benefit from the financing. In reality, however, it is common for there to be a combination of profit motive and altruism when a company provides funds for a free program to be made from which it expects to benefit indirectly.

Note

A well-known case of funds contributed to a project, albeit fairly indirectly, is the help that the O’Reilly publishing house gives to the development of Perl. Naturally, it is no coincidence that O’Reilly is also one of the main publishers of subjects related to Perl. In any case, it is obvious that O’Reilly does not have exclusivity over the publication of books of this kind, and that other publishing houses compete in this market segment, with varying degrees of success. VA Software (originally VA Research and later VA Linux) has collaborated actively in developing the Linux kernel. Through this, it has achieved, among others, ensured continuity, which was particularly critical for it in relation to its customers when its main business was selling equipment with a GNU/Linux pre-installation. Red Hat has financed the development of many GNOME components, essentially obtaining a desktop environment for its distribution, which has contributed to increasing its sales. As in previous cases, other manufacturers of distributions have benefited from this development, although many of them have not collaborated with the GNOME project to the same extent as Red Hat (and quite a few have not collaborated at all). Despite this fact, Red Hat benefits from its contribution to GNOME.

5.1.5. Financing as an internal investment

There are companies that develop free software directly as part of their business model. For example, a company may decide to start a new free project in a field where it believes that there are business opportunities, with the idea of subsequently obtaining a return on that investment. This model could be considered a variation of the previous one (indirect financing), and the “related benefits” would be the advantages that the company obtains from producing the free program. But since in this case it is the free product itself which is expected to produce the benefits, it seems appropriate to give it its own heading.

GNUFDL • PID_00148386 71 Free Software

This type of financing gives rise to various business models. When we analyse them (in section 5.2) we will also explain the advantages that a company normally obtains from this type of investment in a project and what methods tend to be used in order to make it profitable. But in any case, we should

mention that sometimes the software in question may be developed simply in order to satisfy the company’s own needs, and that only later the company may decide to release it, and perhaps, to open a business line based on it.

Note

Digital Creations (now Zope Corporation) is one of the most well-known cases of a company dedicated to developing free software with the expectation of making a return on its investment. The free project that Zope invests most heavily in is an applications server that is enjoying a certain amount of success. Its history with free software started when the then Digital Creations was looking for venture capital to develop its proprietary applications server, around 1998. One of the groups most interested in investing in them (Opticality Ventures) established as a condition that the resulting product must be free, because otherwise they did not see how they could obtain a significant market share. Digital Creations agreed to this approach and a few months later announced the first version of Zope. Nowadays, Zope Corporation is specialised in consulting, training and support for content management systems based on Zope, and other products of which Zope is unquestionably the cornerstone. Ximian (formerly Helix Code) is a well-known case of free applications development in

a business environment. Closely linked since its origins to the GNOME project, Ximian has produced software systems such as Evolution (a personal information manager which includes a relatively similar functionality to Microsoft Outlook), Red Carpet (an easy-to-use system for managing packages on an operating system) and MONO (an implementation of a large part of .NET). The company was founded in October 1999 and attracted many developers from GNOME, who became members of its development team (while continuing in many cases to collaborate with the GNOME project). Ximian positioned itself as an engineering company expert in GNOME adaptations, in building applications based on GNOME, and in general, in providing development services based on free software, especially tools related to the desktop environment. In August 2003, Ximian was bought by Novell.

system for organisations that use very many printers. It was developed internally in Cisco to satisfy its own needs and freed in 2000 under the GNU GPL. It is difficult to know for sure Cisco’s reasons for doing this, but they could be related to finding external contributions (error reports, new controllers, patches, etc.). In any case, what is obvious is that since Cisco had no plans to commercialise the product and its potential market was not very clear, it had very little to lose with this decision.

5.1.6. Other financing modes There are other financing modes that are difficult to classify under the previous headings. As an example, we could mention the following:

• Use of the market for putting developers and clients in contact. The idea that sustains this mode of financing is that, especially for minor developments, it is difficult for a client wanting a specific development to come into contact with a developer capable of doing it in an efficient manner. In order to improve this situation, free software development markets are established where developers can advertise their skills and clients, the developments that they need. A developer and a client reach an agreement; we have a similar situation to the one already described as “funding by a party requiring improvements ” (section 5.1.3).

GNUFDL • PID_00148386 72 Free Software SourceXchange

SourceXchange is an example of a market that put developers in contact with potential clients. To advertise a project, a client would present an RFP (request for proposal) specifying the development required and the resources it was prepared to provide for that development. These RFPs were published on the site. When a developer read one that interested him, he would make an offer for it. If a developer and a client agreed on the terms of the development, a project would begin. Normally, every project was supervised by a peer reviewer, a reviewer responsible for ensuring that the developer complied with the specifications and that indeed the specifications made sense, and advising on how to carry through the project, etc. SourceXchange (owned by the company CollabNet)

took charge of providing the site, guaranteeing reviewers’ capabilities, ensuring payment in the case of completed projects and offering monitoring tools (services for which it invoiced the client). The first project mediated through SourceXchange was completed in March 2000, but just over a year later, in April 2001, the site closed down.

• Project financing through the sale of bonds. The idea behind this type of financing is similar to that of the ordinary bonds market approached by companies, but targeted at developing free software. It has several variations, but one of the best known operates as follows. When a developer (an individual or a company) has an idea for a new program, or improvement for an existing program, he writes it up as a specification, with a cost estimate for its development and issues bonds for its construction.

The value of these bonds is only executed if the project is finally completed. When the developer has sold enough bonds, development begins, financed with loans based on them. When the development is completed, and an independent third party certifies that indeed what has been done complies with the specifications, the developer “executes” the bonds, settles the debts, and what is left over is the profit made from the development. Who would be interested in buying these bonds? Obviously, users who would want the new program or improvement to an existing program to be made. To some extent, this bonds system allows interested parties to establish developers’ priorities (at least in part), through the acquisition of bonds. This also means that development costs do not have to be assumed

by just one company, but rather can be shared between several (including individuals), who additionally only have to pay if the project concludes successfully in the end. A similar mechanism to this is proposed in much more detail in “The Wall Street performer protocol. Using software completion bonds to fund open source software development”, by Chris Rasch (2001) [191].

Bibliography

The bonds system described is based on the street performer protocol (“The street performer protocol”, in: Third USENIX Workshop on Electronic Commerce Proceedings, 1998 [152], and “The street performer protocol and digital copyrights”, 1999 [153]), a mechanism based on e-commerce designed to facilitate private funding of free creations. In short, whoever is interested in a particular job would formally promise to pay a certain amount if the work is done and published as free. Its objective is to find a new way of financing relatively small jobs that are made available to everyone, but may be extended in many ways (the bonds for the construction of free software being one of them). We can see a small case of putting a derivation of this protocol into practice, the rational street performer protocol (Paul Harrison, 2002, [137]) wherehttp://www.csse.monash.edu.au/~pfh/circle/funding_results.html It is applied to obtaining funds to finance part of The Circle, a free software project.

GNUFDL • PID_00148386 73 Free Software

• Developer cooperatives. In this case, free software developers, instead of working individually or for a company, join some form of association (normally similar to a cooperative). In all other aspects, it functions the same way as a company, with an overtone of its ethical commitment to free software, which may form part of its company statutes (although an ordinary company can do this too). In this type of organisation, we may see a variety of combinations of voluntary and paid work. An example is Free Developers.

• Donations system. This involves enabling a mechanism for paying the author of a particular software, through the web page that accommodates the project. This way, users interested in the project continuing to release new versions can support it financially by making voluntary donations in the way of funding for the developer.

5.2. Business models based on free software

In addition to the project funding mechanisms that we have already talked about, another aspect related to the economy which deserves mentioning is business models. In speaking about financing mechanisms, we have already mentioned a few in passing. Here, in this section, we will describe them in a more methodical fashion.

In general, we can say that many business models are being explored around free software, some more classical and others more innovative. We need to take into account that it is not easy to use those based on the sale of licences, the most common found models in software industry, since in the world of free software this financing mechanism is very difficult to exploit. However, we can use those based on services to third parties, with the advantage that it is possible to offer complete support for a program without necessarily being its producer. Sale of free software at so much per copy In the world of free software it is difficult to charge for licences for use, but not impossible. In general, there is nothing in the free software definitions to prevent a company from creating a product and only distributing it to anyone who pays a certain amount. For example, a particular producer could decide to distribute its product with a free licence, but only to whoever pays 1,000 euros per copy (like in the classical world of proprietary software).

However, although theoretically this is possible, in practice it is difficult for this to occur. Because once the producer hassold the first copy, whoever receives it may be motivated to try and recover his or her investment by selling more copies at a lower price (something which cannot be prohibited by the program’s licence if it is free). In the previous example, one could try selling ten copies at 100 euros each, meaning that additionally the product would work out free of charge (also, this would make it very difficult for the original producer to sell another copy at 1,000 euros, since the product could be legally obtained at a tenth of the cost). It is easy to see how this process would continue in waterfall until copies were sold at a price close to the copying marginal cost, which with current technologies is practically zero.

GNUFDL • PID_00148386 74 Free Software

Even so, and bearing in mind that the mechanism described will mean that normally a producer cannot put a price (particularly a high price) on the mere fact of the program’s redistribution, there are business models that implicitly do just that. One example is the case of GNU/Linux distributions, which are sold at a much lower price in comparison with proprietary competitors, but above (and normally far above) the cost of the copy (even when it can be freely downloaded from the Internet). Of course, in these cases other factors come into play, such as the brand image or convenience for the consumer. But this is not the only case. Therefore, rather than saying that free software “cannot be sold at so much per copy”, we should bear in mind that it is more difficult to do so, and that probably it will generate less profit, but that there can be models based precisely on that. Given these limitations (and these advantages), for several years now variations on the usual business models in the software industry are being tried out, at the same time as other more innovative solutions are sought for exploiting the possibilities offered by free software. No doubt, in the next few years we will see even more experimentation in this field, and will also have more information on what models can work and under what circumstances. In this section we offer a panorama of the business models that we most frequently encounter today, divided into groups with the intention of showing the reader what they share in common and what distinguishes them, focusing on those based on the development and services around a free software product. Revenue, in this case, comes directly from the development activities and services for the product, but does not necessarily imply new product development. When this development does occur, these models have the financing of free software products as asubproduct, meaning that they are particularly interesting models with a potentially large impact on the world of free software in general. In any case, and although here we offer a relatively clear classification, we must not forget that almost all companies in reality use combinations of the models that we describe, and with other more traditional ones.

5.2.1. Better knowledge

The company that follows this business model tries to make profits on its knowledge of a free product (or set of products). Its revenue will come from clients to which it will sell services related to that knowledge: development based on the product, modification, adaptation, installation and integration with other products. The company’s competitive advantage will be closely related to its better knowledge of the product: therefore, the company will be particularly well positioned if it is the producer or an active participant in the project producing the software product. This is one of the reasons why companies that use this model tend to be active participants in the projects related to the software for which they try to sell services: it is a very efficient way of obtaining knowledge about it, and more importantly, for that knowledge to be recognised. Certainly, being able to tell a GNUFDL • PID_00148386 75 Free Software client that the company’s employees include various developers on the project that produces the software, which, for example, needs to be changed, tends to provide a good guarantee.

Relationship with development projects

Therefore, companies of this type are very interested in transmitting an image of having good knowledge of certain free products. An interesting outcome of this is that support for free software projects (for example, by participating actively in them, or allowing employees to do so in the course of the working day) is not therefore, something purely philanthropic. On the contrary, it may be one of the company’s most profitable assets, since clients will value it very positively as a clear sign that the company is knowledgeable about the product in question. Plus, this way it will be able to follow the development closely, trying to make sure, for example, that the improvements requested by its clients become part of the product developed by the project. Analysing this from a more general point of view, this is a situation in which both parties, the company and the project, benefit from the collaboration. The project benefits from the development made by the company, or because some of its developers are paid (at least part-time) for their work on the project. The company benefits in knowledge about the product, image towards its clients, and a degree of influence over the project.

The range of services provided by this type of company can be very broad, but normally consists of customised developments, adaptations or integrations of the products that they are experts in, or consulting services where they advise their clients how best to use the product in question (especially if it is a complex product or its correct functioning is critical for the client).

Examples

Examples of companies that up to a point have used this business model include the following:

• LinuxCare (http://www.linuxcare.com) [45]. Established in 1996, it originally provided consulting services and support for GNU/Linux and free software in the US, and its staff consisted essentially of experts in GNU/Linux. However, in 2002 its objectives changed and since then it has specialised in providing services almost exclusively to GNU/Linux running on virtual machines in large IBM computers. Its business model has also changed to “better knowledge with limitations”, since as a fundamental part of its services it offers a non-free application, Levanta.

• Alcôve (http://www.alcove.com) [3]. Established in 1997 in France, it mainly offers free software consulting services, strategic consulting, support and development. Since its foundation, Alcôve has kept the developers of various free projects on staff, trying to make a return on this in terms of image. It has also tried to offer the image, in general, of a company linked to the free software community, by collaborating, for example, with user associations and giving publicity to its collaborations with free projects (for example, through Alcôve-Labs [4]).

5.2.2. Better knowledge with limitations

These models are similar to those described in the previous section, but try to limit the competition that they may have to face. Whereas in the pure models based on better knowledge, anyone can, in principle, join the competition, since the software used is the same (and free), in this case the attempt is to avoid that situation by placing barriers to competition. These barriers tend to consist of patents or proprietary licences, which normally affect a small (but GNUFDL • PID_00148386 76 Free Software

fundamental) part of the developed product. This is why these models may be considered as mixed, in the sense that they are halfway between free software and proprietary software. In many cases, the free software community develops its own version, meaning that the competitive advantage can disappear, or even turn against the company in question if the free competitor becomes the market standard and is demanded by the company’s own clients.

Examples

There are many cases that use this business model, since it is frequently considered less risky than the pure knowledge one. However, the companies that have used it have evolved in different ways. Some of them include the following: • Caldera (http://www.sco.com) [16]. Caldera’s history is complicated. In the beginning, it created its own distribution of GNU/Linux, aimed at businesses: Caldera OpenLinux. In 2001 it bought the Unix division from SCO, and in 2002 it changed its name to SCO Group. Its business strategy has changed as frequently as its name, from its total support for GNU/Linux, to its legal suits against IBM and Red Hat in 2003 and abandoning its own distribution. But in relation to this heading, Caldera’s business, at least until 2002, is a clear model of better knowledge with limitations.

Caldera tried to exploit its knowledge of the GNU/Linux platform, but limiting the competition it could have faced by including proprietary software in its distribution. This made it difficult for its clients to change distribution once they had adopted it, because even though the other distributions of GNU/Linux included the free part of Caldera OpenLinux, they did not include the proprietary part.

• Ximian (http://ximian.com/) [74]. Founded in 1999 under the name Helix Code by developers closely connected to the GNOME project, it was acquired in August 2003 by Novell. Most of the software that it has developed has been free (in general, part of GNOME). However, in a very specific sphere Ximian decided to licence a component as proprietary software: the Connector for Exchange. This module allows one of its star products, Evolution (a personal information manager that includes e-mail, agenda, calendar, etc.,), to interact with Microsoft Exchange servers, which are commonly used by large organisations. This is how it tried to compete with an advantage over the other companies that offered services based on GNOME, perhaps with the products developed by Ximian itself but that could not interact as easily with Exchange. With the exception of this product, the Ximian model has been the one of “better knowledge”, and has also been based on being the source of a program (as we will see later on). In any case, this component was released as free software in 2005.

5.2.3. Source of a free software product

This model is similar to the one based on better knowledge but with a specialization, meaning that the company using it is the producer, almost integrally, of a free product. Naturally, the competitive advantage increases through being the developers of the product in question, controlling its evolution and having it before the competition. All of this positions the development company very strongly towards clients who are seeking services for that program. Also, it is a very interesting model in terms of image, since the company has proven its development potential by creating and maintaining the application in question, which can be very useful when it comes to convincing clients of the company’s capabilities. Likewise, it creates a good image towards the free software community in general, since it receives a new free product from the company that becomes part of the common domain.

GNUFDL • PID_00148386 77 Free Software

Examples

Many free products started to be developed in a company, and very often that company has continued to guide its subsequent development. Some examples:

• Ximian. We have already mentioned how it has partly used the model of better knowledge with limitations. But in general, Ximian has followed the clear model based on being the source of free programs. Its main products, like Evolution or Red Carpet, have been distributed under GPL licences. However, other also important ones, such as Mono, are distributed mostly under the MIT X11 or LGPL licences. In any case, Ximian has developed the products almost exclusively from the start. The company has tried to make a return on these developments by obtaining contracts to make them evolve in certain ways, adapting them to clients’ needs, and offering customisation and maintenance.

• Zope Corporation (http://www.zope.com/) [75]. In 1995 Digital Creations was established, developing a proprietary product for the management of classified ads on the web. In 1997 it received a capital injection from, among others, a venture capital company called Opticality Ventures. What was strange about this investment (at that time) was the condition that was imposed of distributing the evolved product as free software, which later became Zope, one of the most popular content managers on the Internet. Since then, the company’s business model has been to produce Zope

and related products, and to offer adaptation and maintenance services for all of them. Zope Corporation has also known how to create a dynamic community of free software developers around its products and to collaborate actively with them.

5.2.4. Product source with limitations

This model is similar to the previous one, but takes measures to limit the competition or to maximise revenue. Among the most common limitations, we can find the following:

• Proprietary distribution for a time, then released as free software.

With or without a promise of a later free distribution, each new version of the product is sold as proprietary software. After a certain amount of time (normally, when a new version is released, also as proprietary software), the old version is distributed with a free licence. This way, the production company obtains revenue from clients interested in having the new versions, and at the same time limits the competition, since any company wanting to compete using that product can only do so with the free version (only available when the new proprietary version is released, which is supposedly improved and more complete).

• Limited distribution for a period. In this case, the software is free as of the moment it is first distributed. But because there is nothing in the free licence forcing to distribute the program to anyone who wants it (this is something that the person in possession of the software may or may not do), the producer distributes for a time to its clients only, who pay for it (normally in the form of a maintenance contract). After a while, it distributes it to anyone, for example by placing it in a public access file. This way, the producer obtains income from its clients, who perceive this preferential availability of the software as an added value. Naturally, the model only works if the clients do not in turn make the program public when they receive it. For certain types of clients, this may not be common. GNUFDL • PID_00148386 78 Free Software

In general, in these cases the development companies obtain the mentioned benefits, but not at zero cost. Because of the delay with which the product is available for the free software community, it is practically impossible for it to be able to contribute to its development, meaning that the producer will benefit very little from external contributions.

Examples

Some companies that use this business model are as follows:

• artofcode LLC (http://artofcode.com/) [9]. Since the year 2000, artofcode sells Ghostscript in three versions (previously Alladin Enterprises had done this with a similar model). The latest version is distributed as AFPL Ghostscript, under a proprietary licence (which allows use and non-commercial distribution). The next one (with a year’s delay more or less) is distributed as GNU Ghostscript, under the GNU GPL. For example, in summer 2003, the AFPL version is 8.11 (released on 16th August), while the GNU version is 7.07 (distributed as such on 17th May, but whose equivalent AFPL version is dated 2002). Also, artofcode offers a third version, with a proprietary licence that allows its integration with products not compatible with the GNU GPL (in this case it uses a dual model, which we will describe later on).

• Ada Core Technologies (http://www.gnat.com/) [2]. It was established in 1994 by the authors of the first Ada 95 compiler, developed with partial funding from the US Government, based on GCC, the GNU compiler. Since the beginning its products have been free software. But most of them are first offered to their clients, as part of a maintenance contract. For example, its compiler, which continues to be based on GCC and is distributed under the GNU GPL, is offered to its clients as GNAT Pro. Ada Core Technologies does not offer this compiler to the general public by any means, and normally you cannot find versions of it on the Net. However, with a varying delay (of about one year), Ada Core Technologies offers the public versions of its compiler, very similar but without any type of support, in an anonymous FTP file.

5.2.5. Special licences

Under these models, the company produces a product that it distributes under two or more licences. At least one of them is free software, but the others are typically proprietary and allow the product to be sold in a more or less traditional way. Normally, these sales are complemented with the sale of consulting services and developments related to the product. For example, a company can distribute a product as free software under the GNU GPL, but also offer a proprietary version (simultaneously, and with no delay between the two versions) for those not wanting the conditions of the GPL, for example, because they want to integrate the product with a proprietary one (which the GPL does not allow).

Example

Sleepycat Software (http://www.sleepycat.com/download/oslicense.html) [60]. This company was established in 1996 and has announced that it has made a profit from the start (which is certainly remarkable in a software- related company). Its products, including Berkeley DB (a very popular data manager because it can be easily embedded in other applications), are distributed under a free licence that specifies that in the case of embedding with another product, it has to provide the source code of both. Sleepycat offers consulting and development services for its products, but also offers them under licences that allow them to be embedded without having to distribute the source code. Of course, it does this under a specific contract, and in general, under a proprietary software sales regime. In 2005, Sleepycat Software was bought by Oracle. GNUFDL • PID_00148386 79 Free Software

5.2.6. Brand sale

Although it is possible to obtain very similar products for far less money, many clients are prepared to pay extra to buy abrand. This principle is adopted by companies that invest in establishing a brand with a good and well-recognised image that allows them to then sell free products with a sufficient margin. In many cases, they do not just sell those products, but also services that the clients will also accept as an added value. The most well-known cases of this business model are the companies that

sell GNU/Linux distributions. These companies try to sell something that in general can be obtained at a far lower cost from the Net (or others sources with less of a brand image). Therefore, they have to make consumers recognize their brand and be prepared to pay the additional cost. To do so, they don’t just invest in publicity, they also offer objective advantages (for example, a well-assembled distribution or a distribution channel that offers proximity to the client). Also, they tend to offer a large number of services around it (from training to third party certification programs), in order to make the most of the brand image.

Example

Red Hat (http://www.redhat.com) [56]. Red Hat Linux started to be distributed in 1994 (the company started to be known by its current name in 1995). For a long time, Red Hat managed to establish its name as the GNU/Linux distribution par excellence (although in the mid 2000 it shares that position with other companies like OpenSUSE, Ubuntu, and perhaps Debian). Several years down the line Red Hat sells all types of services related to the distribution, GNU/Linux and free software in general.

5.3. Other business model classifications Free software literature provides other classifications of traditional business models. As an example, here are a few.

5.3.1. Hecker classification

The classification provided in “Setting up shop: the business of open source software” (Frank Hecker, 1998) [141] was most used in the publicity of the Open Source Initiative, and also one of the first to try and classify the businesses that were emerging around that time. However, it includes various models that have little to do with free software (where free software is little more than a companion to the main model). In any case, the models it describes are as follows:

GNUFDL • PID_00148386 80 Free Software

• Support seller (sale of services related to the product). The company promotes a free software product (which it has developed or in which it participates actively) and sells services such as consulting or adaptation to specific requirements.

• Loss leader (sale of other proprietary products). In this case, the free program is used to somehow promote the sale of other proprietary products related to it.

• Widget frosting (Sale of hardware). The main business is the sale of hardware and the free software is considered a complement that can help the company obtain a competitive advantage.

• Service enabler (sale of services). The free software serves to create a service (normally accessible online) from which the company makes a profit.

• Brand licensing (sale of a brand). A company registers trademarks that it manages to associate with free software programs, probably that it has developed itself. Then it obtains income through licensing the use of those trademarks.

• Sell it, free it. This is a similar model to the loss leader, but done in a cyclical fashion. First a product is marketed as free software. If it is relatively successful, the next version is distributed as proprietary software for a time, after which it is freed. By then, a new proprietary version is being distributed, and so on successively.

• Software franchising. A company franchises the use of its brands in relation to a particular free program.

5.4. Impact on monopoly situations

The software market tends towards the domination of one product in each of its segments. Users want to make the most of the effort made in learning how a program works, companies want to recruit people who are familiar with the use of their software, and everyone wants the data that they handle to be manageable by the programs of the companies and people with whom they work. This is why any initiative designed to break a de facto situation in which one product clearly dominates the market is destined to produce more of the same: if it is successful, the new product will come to take its place, and Note Readers will have observed that this classification is fairly different to the one that we have given, but even so some of the categories almost totally match some of ours.

GNUFDL • PID_00148386 81 Free Software in a short period we will have a new dominant product. Only technological changes produce, during a short period, sufficient instability for nobody to dominate clearly. But the fact that there is a dominant product does not necessarily have to lead to the creation of a business monopoly. For example, petrol is a product that almost dominates the fuel market for private cars, but (in a free petrol market) there are many production companies and distribution companies for that same product. In reality, when we talk about software, what is worrying is what happens when a product manages to dominate the market because that product has a sole possible supplier. Free software offers an alternative to that situation: free products can be promoted by a specific company, but that company does not control them, or at least not to the extent that proprietary software has us accustomed to. In the world of free software, a dominant product does not necessarily entail the monopoly of one company. On the contrary, irrespective of the product that dominates the market, many companies can compete in providing it, improving it, adapting it to clients’ needs and offering services related to it.

5.4.1. Elements that favour dominant products

In computer software, it is common to have a clearly dominant product in each market segment. And this is normal for several reasons, among which we would highlight the following:

• Data formats. In many cases the data format is very closely linked to an application. When a sufficiently high number of people uses it, the data format becomes the de facto standard, and the pressures to adopt it (and therefore, the application) are tremendous.

• Distribution chains. Normally, one of the problems with starting to use a program is obtaining a copy of it. And it is normally difficult to find programs that are not leaders in their market. Distribution chains are expensive to maintain, meaning that it is difficult for minority competitors to reach the computer shop where the end user can buy them. However, for the dominant product it is easy: the first to be interested in having it will be the computer shop itself.

• Marketing. The “free” marketing that a product obtains once a significant proportion of the population uses it is enormous. “Word of mouth” also works very well when we ask and exchange information with the people we know. But above all the impact from the media is enormous: computer magazines will refer time and again to a product if it appears to be the one used the most; there will be training courses around it, books describing it, interviews with users, etc.

GNUFDL • PID_00148386 82 Free Software

• Investment in training. Once time and money has been spent on learning how a tool functions, there is a high motivation not to change that tool. Also, that tool is usually the one that already dominates the market, because it is easier to find people and materials to help teach how to use it.

• Pre-installed software. Receiving a machine with pre-installed software is certainly a great incentive towards using it, even if it has to be paid for separately. And normally, the type of software that the seller of the machine will be prepared to pre-install will only be the most used.

5.4.2. The world of proprietary software

In the world of proprietary software the appearance of a dominant product in any segment is equivalent to a monopoly on the part of the company that produces it. For example, we have these de facto monopoly situations (or almost) of a product and a company in the market for operating systems, desktop publishing, databases, graphic design, text processors, spreadsheets, etc. And this is so because the company in question has enormous control over the leading product, so much so that only they can drive its evolution, the fundamental lines along which it will be developed, its quality, etc. Users have very little control, since they have very little motivation to consider other products (for the reasons we have mentioned in the preceding section). In view of this, there is little that competition can do, except to try and defy the product’s dominant position by improving their own products, (to try and counteract those very reasons), normally with limited success. This situation places the entire sector in the hands of the dominant company’s strategy. All of the actors depend on it, and even the development of software technology in that field will be mediatised for the improvements that it makes to its product. In general terms, this is a situation where the worst economic effects of a monopoly arise, and in particular, the lack of motivation for the dominant company to tailor products to the (always evolving) needs of its clients, as they have become a captive market.

5.4.3. The situation with free software

However, in the case of free software a dominant product does not automatically translate into a business monopoly. If the product is free, any company can work with it, improve on it, adapt it to clients’ needs, and in general, help it to evolve. Also, precisely due to its dominant position, there will be many companies interested in working with it. If the “original” producer (the company that originally developed the product) wishes to remain in the business, it will have to compete with all of them and will therefore be highly motivated GNUFDL • PID_00148386 83 Free Software to make its product evolve precisely along the lines that users want. Of course, it will have the advantage of better knowledge of the program, but that isn’t all. They will have to compete for every client. Therefore, the appearance of dominant products in the world of free software, translates into more competition between companies. And with it users recover control: companies in competition cannot do anything but listen to them if they want to survive. And this is precisely what will make sure that

the product improves. Free products that are dominant in their sector For a long time, Apache has been the leader in the market for web servers. But there are many companies behind Apache, from some very large ones (like IBM) to other much smaller ones. And all of them have no other choice but to compete by improving it and normally by contributing to the project with their improvements. Despite the fact that Apache is almost a monopoly in many fields (for example, it is almost the only web server considered on the GNU/Linux or *BSD platform), it does not depend on a single company, but rather on literally dozens of them. The distributions of GNU/Linux are also an interesting case. GNU/Linux is not, certainly, a monopoly, but is possibly the second choice in the market for operating systems. And this has not forced a situation whereby one company has control over it. On the contrary there are tens of distribu

8.5.2. Other source management systems

Despite being the most extensively used version control system, CVS has some notable disadvantages:

1) CVS does not support either renamings or file directory changes, or metadata (owner, permissions, etc.) or symbolic links.

2) Because it is an evolution of a version control system for individual files, it naturally does not support version control for complete groups.

3) CVS does not support sets of coherent changes. Indeed, adding a feature or correcting an error can involve changing several files. These changes should be atomic.

4) In CVS the use of branches and merges is fairly complicated. In fact, if we create an experimental branch of a project and wish to include the corrections made to the stable version, we need to know in detail which corrections have been made already and which not, so as not to do them

several times over.

5) CVS depends on a centralised server, and although it is possible to work without a connection, we do need one for generating versions, comparing and merging them.

6) CVS does not generate, without the help of separate tools, the file changelog, which shows the global history of a project’s changes.

7) CVS does not support well projects with a very large number of files, as in the case of the Linux kernel. And yet, there are other free systems which solve several of these problems. We would highlight the already mentioned successor of CVS, Subversion (http://subversion.tigris.org) [62], (http://svnbook.red-bean.com/) [96], which strictly solves the basic problems of CVS and can use HTTP extensions (WebDAV) in order to bypass aggressive security policies. The development model based on a centralised repository, although suitable for cooperative work, does not satisfy all expectations, since being able to create our own development branches depends on the one hand on the server’s accessibility and good functioning and on the other on the administrators of that server. Sometimes distributed repositories are required that allow anyone

Note

In 2007 Subversion is already the clear successor of CVS, and many free software developments have migrated to it.

GNUFDL • PID_00148386 120 Free Software to have a repository with a private or public branch that can be merged or not with the official one. This is how GNU arch (Arch Revision Control System) [8] or bazaar (Bazaar GPL Distributed Version Control Software) [12] work, as well as the proprietary system BitKeeper (Bitkeeper Source Management) [14], chosen by Linus Torvalds to maintain Linux since February 2002, since according to him there was no appropriate free tool. It is said that using Bitkeeper doubled the pace of development of Linux. Nonetheless, the decision came under heavy criticism because it was proprietary, with a licence that allowed free projects to obtain it free of charge on condition that all commit changes with their metadata were logged on a public server designated by the owners and accessible to everyone, and always on condition that the licensee did not try to develop another source control system to compete with it. It was precisely the attempt to develop a compatible free product by an employee of the same company where Linus Torvalds worked that detonated the change in source management system. Linus rapidly developed a provisional replacement, git (“Git manual page”) [218], which soon became definitive, condensing all of the experience of Linux’s cooperative and decentralised development: it supports large-size projects in a decentralised fashion, facilitating to a great extent the development of tentative branches and their merging with others or with the main one, with cryptographic security mechanisms that prevent altering the log. As of April 2005, Linux is maintained using git or its wraps (for example, cogito “Cogito manual page” [90].

8.6. Documentation

In the world of free software, WYSIWYG text processors and other office suite tools that are so successful in other environments are barely used, even though there are already free tools such as OpenOffice.org. This is due to several important factors:

• It is advisable to maintain documentation under source control, and source control systems, like CVS, although they admit binary formats, prefer transparent text formats that can be edited with a normal text editor and processed with tools developed for programs that allow us to see the differences between versions easily, to generate and apply patches based on those differences, and to carry out merges.

• Some free documentation licences, especially the GFDL (vid. Section 10.2.1), demand transparent formats, especially because they make the job easier for those who prepare derived documents.

• The WYSIWYG tools (“what you see is what you get”) generally do not contain any information other than the strict visualisation, making it very difficult, if not impossible, to identify authors, or titles, or conversion to other formats. Even if they do allow conversion to other formats, this tends

Note

In Unix the most common tools for these operations are diff, diff3, patch and merge.

GNUFDL • PID_00148386 121 Free Software to be done interactively, and is often impossible to automate (using make, for example).

• In general, office applications generate sizeable file formats, which is an undesirable feature for both developers and repositories. For all of the above, free programmers, accustomed to programming and compiling, prefer transparent document formats, in many cases pure simple text and in many others processable document formats. The processable formats in use are not many. Traditionally, in the world of Unix programs have been documented in the formats expected by the family of processors roff, with a free version (GNU troff) [37] by Norman Walsh. Nevertheless, this practice has been gradually abandoned, except for traditional manual pages, since it is almost obligatory to prepare manual pages for the system’s most basic tools. Because many manual pages have grown so much so that it is barely appropriate to call them pages, it was necessary to prepare an alternative hypertext format that allowed documents structured with indexes and cross-references to be followed. The GNU project designed the texinfo format (Texinfo – The GNU Documentation System) [63] and made it its standard. This format allows navigable documents to be obtained with the info tool or within the emacs editor, and in turn, to obtain quality document printouts using the TeX text processor, of Donald Knuth (The TeXbook) [156]. The texinfo format can be translated into multipage HTML if required, and many people prefer to view the information with a web navigator, but the capacity to search for words in a document is lost. This is one of the unwanted results of the popularity of HTML, since the navigators do not implement the concept ofmultipage document, despite the fact that there are link elements that allow parts to be interlinked. There is overwhelming demand for being able to view complex documents as easily navigable multipage web pages. There are people who write documentation in LaTeX (LaTeX user’s guide and reference manual) [163], also a TeX application, very popular among scientists, more expressive than Texinfo and convertible to multipage HTML with certain tools (The LaTeX Web Companion) [130], on condition a certain discipline is maintained. Indeed, TeX applications are sets of macros that combine very low level typographic operators to convert them into abstract languages that work with high level concepts (author, title, summary, chapter, section, etc.). If we only use the basic macros, conversion is simple. But since nobody prevents the use of low level operators and, additionally, there are enormous quantities of macro packages beyond the maintenance capacity of conversion tool maintainers it is difficult to achieve good conversions.

GNUFDL • PID_00148386 122 Free Software

8.6.1. DocBook

The problem stems from the fact that there is no distinction between content and presentation, either in TeX or in nroff, since the abstraction is built in layers. This distinction is made by SGML applications (standard generalized markup language) [81] and XML (extensible markup language) [224], where the

presentation is specified with completely separate style sheets. Soon very simple SGML applications started to be used, such as linuxdoc and debiandoc, but due to their limited expressive capacity, DocBook was chosen. (DocBook: the definitive guide) [225]. DocBook is an SGML application originally developed for technical IT documentation and now has an XML variant. Currently, DocBook is the standard free documentation format for many projects (Linux Documentation Project, KDE, GNOME, Mandriva Linux, etc.) and a goal to be reached for others (Linux, *BSD, Debian, etc). However, DocBook is a complicated language, plagued by tags, which means that it is useful to have tools to help with the editing, even if they are very basic and rare; one of the most popular tools of this type is the psgml mode of emacs. It is also heavy to process and free processors still generate a not very attractive quality of documents.

8.6.2. Wikis

Many people find it too complicated to write documentation with such complex languages as DocBook and collaboration mechanisms like CVS. This is why a new mechanism of collaboration for online document preparation via the web has become popular, called wiki, and invented by Ward Cunningham (“Wiki design principles”) [97]. It was first put into service in 1995 and is now extensively used in a wide range of variants for preparing very dynamic documents, not designed for printing and often with a short life (for example, conference organisation). Unlike DocBook, a wiki has a very simple and concise markup language which is reminiscent of the final presentation, without being exactly like it. For example, paragraphs are separated by a blank line, elements of a list are started with a hyphen if not numbered and with a zero if they are numbered, and table cells are separated by vertical and horizontal bars. Neither does the concept of a “full document” exist, rather a wiki is more a set of small interlinked documents created as and when it is necessary to explain a new concept or subject. The documents are created almost automatically, as the editing tool shows very clearly that we have entered a concept (through a WikiName, almost always two joined words with the first letter capitalised). Hardly anywiki allow hyperlinks within the same page.

GNUFDL • PID_00148386 123 Free Software

Unlike CVS, anyone can write in a wiki, although it is advisable for the author to identify himself by previously registering. When we visit a wiki we can see that all pages have a button that allows them to be edited. If pressed, the navigator will show us a form with the document’s source code, which we will be able to change. This is not a WYSIWYG edit, which discourages anyone just wanting to interfere, but is simple enough for anybody interested to be able to modify documents with very little effort. Wikis carry their own document version control, in such a way that all of their versions are generally accessible, indicating who made them and when. They can also be easily compared. Plus, they tend to include search mechanisms, at least per page name and word content. Normally, the original author of a page will want to know what changes are made to it. To do so he can subscribe to the changes and receive notifications of them by e-mail. Sometimes, the person seeing a document will not dare to change anything, but may make a comment. Normally, all wiki pages have an associated comments forum pasted at the end of the document, which either the original author or anybody who assumes the role of editor can use to reform the original text, possibly by moving phrases from the comments to the relevant places.

Advice

The best way of understanding the wiki concept is to access one and experiment on a page designed for this purpose, usually called SandBox.

8.7. Bug management and other issues

One of the strong points of the free development model is that the community contributes with bug reports and feels that those reports or solutions are given attention. This requires a simple bug reporting mechanism, so that developers can receive sufficient information, in a systematic way and containing all necessary details, either provided by the collaborator, with an explanation of what is happening, the level of importance and possible solution, or through an automatic mechanism that determines, for example, the program version and environment in which it functions. Errors should also be saved in a database that can be consulted, to see whether a bug has already been communicated, corrected, its level of importance, etc. There are several of these systems, with different philosophies. Some are via web, others via e-mail, through some intermediary program. They all have a web interface for consultation. Some allow anonymous reports, while others require identification (a valid e-mail address) to prevent noise. Although web procedures would appear to be the most simple, they do not easily obtain automatic information on the bug’s environment. For example, the Debian system provides programs like reportbug, which after asking for the name of the package that we wish to report on, consults the error server for the bugs GNUFDL • PID_00148386 124 Free Software reported to it. If none of them refers to our problem, we will be asked for a description

of it, its level of importance (“critical”, “grave”, “serious”, “important”, “cannot be regenerated from source codes”, “normal”, “minor” or “suggestion”) and labels about its category (for example, “security”). Following this, if we confirm the request, it will automatically find out the version of the package and those on which it depends, in addition to the kernel’s version and architecture. Obviously, it knows the e-mail address, so it sends to the correct site a report similar to the following one:

Package: w3m-ssl

Version: 0.2.1-4

Severity: important

After reloading a page containing complex tables several dozen times, w3m had used all physical memory and thrashing commenced. This is an Alpha machine.

This message generates a bug number which is returned to us, sent to the maintainer and saved in the database. When the bug is solved, we will also receive a notification. Every bug has an e-mail address assigned to it that can be used to provide additional information, for example. We can consult the bug database http://bugs.debian.org at any time. Sometimes bug monitoring systems have mechanisms for assigning someone to solve them and setting a deadline. There are also other issues, such as pending jobs, requested improvements, translations, etc., that require similar management mechanisms. With free software we cannot generally use very rigid mechanisms for managing the tasks that each developer has to do. After all, many collaborators are volunteers and cannot be obliged to do anything. Nonetheless, tasks can be defined and we can wait for somebody to subscribe

to the system and to take them on within a declared period. Whether there is control over what certain people can do or not, it is always advisable to control all the tasks that need to be done, who and what they depend on, their level of importance, and who is working on them. Many important projects manage these aspects using Bugzilla (The Bugzilla guide) [89] or its derivatives.

GNUFDL • PID_00148386 125 Free Software

Sometimes someone working on a project may discover a bug on a different project on which his work depends, but that has a different bug management system to the one to which he is accustomed. This is particularly true for users of distributions who wish to use a single tool for reporting and monitoring

bug solving. To facilitate reporting and monitoring of those bugs, it may be advisable to federate different systems, as done by Malone (The Malone Bug Tracker) [47].

8.8. Support for other architectures

The minimum support required for working with a portable program is access to compilation farms , which allow the program to be compiled on different architectures and operating systems. For example, SourceForge (vid. section

8.9.1) offered for a time Debian GNU/Linux environments for Intel x86, DEC

Alpha, PowerPC and SPARC, in addition to Solaris and Mac OS/X environments. It is also useful to be able to test (not just compile) the program in those environments. But this service requires more resources and more of the administrator’s time. The compilation service can already be problematic, because normally we need to provide compilation environments for several languages, with a large number of libraries. If what we want to do is to test any program, the difficulties increase exponentially, not just because it is very difficult to have the necessary resources available, but also for security reasons, which can make it extremely complicated to administrate those systems. Notwithstanding, there are a few compilation farm services, with standard installations of various architectures, which can allow us to test some things. The abovementioned public farms are normally a service that requires manual use. The invited developer copies his files onto one of those machines, compiles them and tests the result. He will probably have to do it from time to time, prior to releasing an important version of the program. It could be much more interesting for compilations and the execution of regression tests to be carried out systematically, in an automated fashion, for example every night, if there have been changes in the source codes. This is how some important projects operate, which provide their own infrastructure for external developers, which tends to be called a tinderbox. This is the case with Mozilla, financed by Netscape, whose tinderbox (http://www.mozilla.org/tinderbox.html) [50] has a web interface to the results of the compilation and tests of the navigator’s components on all of the architectures on which it operates. This interface

is closely related to the CVS and shows those results for different states (between commits), identifying the one responsible for the bugs, and facilitating progress, by overcoming the problem until it is resolved. Tinderboxes are also used by the projects OpenOffice and FreeBSD, at least.

GNUFDL • PID_00148386 126 Free Software

8.9. Development support sites

Development support sites offer, in a more or less integrated fashion, all of the services described above plus a few additional ones that allow projects to be searched by categories and to classify them according to some simple parameters of activity. This spares the developer having to set up and administer an entire infrastructure for collaboration, allowing him to concentrate on the project.

8.9.1. SourceForge

With regards to this type of service, one of the first to become established, and the most popular, is SourceForge (http://sourceforge.net) [61], managed by the OSDN (Open Software Development Network), a subsidiary of VA Software, which in March 2007 hosted more than 144,000 projects. It is structured around a set of programs with the same name, and which up to version 2 were free software. SourceForge, as a prototype for this type of sites, offers a web interface or global access portal (http://sourceforge.net/) and a subportal per project (http://proyecto.sourceforge.net). The global interface shows news, advertisements, links, and an invitation to become a member or to enter if we already are members. To collaborate on the site, it is advisable to become a member, and it is compulsory if we want to create a new project or to participate in an existing one. To be a spectator it is not necessary, and as such, we can see what are the projects experiencing most active development or downloaded most frequently, and search for projects by category or descriptive word, and they

will appear in order of activity level. For each project we can see its description, status (alpha, beta, production), its descriptors (programming language, operating system, subject, type of users, language, licence…), bugs and pending or reinstated aspects, activity levels over time…, or download it. We can also take part in forums or report bugs, even anonymously, which is not very advisable (because, for example, we may not get a reply). Any authenticated user can request to register a project, which the administrators will admit on condition that it fulfils the site’s policies, which in the

case of SourceForge are fairly liberal. Once authorised, the creator can register other users as additional administrators or as developers, with access to modify the sources. Following authentication, there are not many more controls over the project, which means that there are a lot of dead projects. This does not confuse users too much though, because project searches sort the projects by level of activity, meaning that low or nil activity projects are barely visible. These projects run the risk of being eliminated by the site owners. The services that SourceForge offers a project, and that we could expect from any other similar service are as follows:

GNUFDL • PID_00148386 127 Free Software

• Hosting for the portal web pages of the project, at the address project.sourceforge.net, for viewing by the public. These pages can be static or dynamic (with CGI or PHP), in which case they can use a database (MySQL). They are entered directly through remote copy commands and can be handled using remote terminal interactive sessions (SSH).

• Optionally, a virtual server that responds to addresses from a separately obtained domain, like www.project.org orcvs.project.org.

• As many web forums and/or mailing lists as necessary in the administrator’s opinion.

• A news service where administrators announce advances concerning the project.

• Trackers for bug reporting and monitoring, requests for support, requests for improvements or integration of patches. Administrators give the issue a priority level and assign a developer to find the solution.

• Task managers, similar to trackers, that allow sub-projects to be defined with a series of tasks. These tasks, in addition to a priority level, are given a deadline. From time to time, developers assigned these tasks can show percentages of task completion.

• A CVS or Subversion with initial access rights for all developers.

• Uploading and downloading service for software packages. It registers entered versions when used and interested parties can receive a notification when this occurs. Plus, the initial upload involves the creation of several replicas worldwide, which facilitates distribution.

• Service for publishing documents in HTML format. Anyone can register them, but they will only be visible following approval by an administrator.

• Back-up copy for disaster recovery, such as broken drive, not user bugs, like accidentally deleting a file.

• Integrated mechanism for donations to users, to projects and to Source- Forge. An authenticated user will have a personal page containing all relevant information, such as projects to which the user is associated, themes or tasks pending, as well as forums and files that he has said he wants to supervise. Plus, so that he does not have to be tending to his personal page, the user will receive notifications to his e-mail about the things he wishes to control.

GNUFDL • PID_00148386 128 Free Software

8.9.2. SourceForge heirs

In 2001, VA Software was about to go bankrupt, in the full swing of the dotcom crisis. Then it announced a new version of its SourceForge software with a non-free licence, in an attempt to secure a source of revenue by selling it to companies for their internal developments. At the same time, it eliminated mechanisms that allowed a project to be dumped for moving to another site. Both events were seen as a threat that the thousands of projects hosted by SourceForge would become trapped in the hands of a single company, which would use the platform for showing non-free software. In the face of this and the possibility of the site closing, offspring of the free version were developed and portals based on it were opened, particularly Savannah (http://savannah.gnu.org) [57], dedicated to the GNU project and to other programs with copyleft-type licences, or BerliOS (BerliOS: The Open Source Mediator) [13], conceived as a meeting point for free software developers and companies. However, this is just a step in the direction of developing a distributed and replicated platform, where nobody has absolute control over the projects (Savannah The Next Generation, 2001) [98]. Another example of a free software project management system is Launchpad (https://launchpad.net) [43], used by Ubuntu for developing each version of the distribution. Launchpad is not a repository for source code, it is designed rather to offer support for monitoring code, incidents and translations. To

achieve this it uses the already mentioned Malone tool, which allows incidents to be redirected to each code repository of the affected modules.

8.9.3. Other sites and programs

Naturally, collaboration systems have been and continue to be developed, and some companies base their business on maintaining and servicing those sites. For example, the Tigris project (Tigris.org: Open Source Software Engineering Tools) [64], which not only maintains free software engineering projects, it also uses a collaboration portal (SourceCast) maintained by a service company (CollabNet), which also maintains individual projects’ sites, like OpenOffice.org. Emerging new sites adopt new free software, such as GForce (http://gforge.org) [30], used by the Debian project (http://alioth.debian.org) [5]. We can see a detailed comparison of many sites in “Comparison of free/ open source hosting (FOSPhost) sites available for hosting projects externally from project owners” [202].

GNUFDL • PID_00148386 129 Free Software

9. Case studies

“GNU, which stands for ‘Gnu’s Not Unix’, is the name for the complete Unix-compatible software system which I am writing so that I can give it away free to everyone who can use it. Several other volunteers are helping me. Contributions of time, money, programs and equipment are greatly needed.” Richard Stallman, “The GNU Manifesto” (1985) This chapter provides a more in-depth study of some of the most interesting free software projects in terms of the impact on the free software world, the results obtained, the management models, historical development, etc. Of course, the number of projects that we can discuss here is much smaller than the total number of free software projects (dozens of thousands), which means that this chapter should not be thought of as comprehensive, and neither can it ever be. Nevertheless, we hope that readers, having read the chapter, will at least have a basic understanding of how the theories that we have discussed throughout this book have been put into practice.

The projects that we have chosen range from lower-level applications, the ones which interact more with the computer’s physical system rather than the user, to work environments designed for the end user. We have also included free software projects that, in principle, are not strictly development projects. This mainly applies to the distributions, which tend to be used as integrating systems, as they mainly take an extensive but limited set of independent applications and use them to create a system in which everything interacts effectively, including the options for installing, updating and deleting applications, as desired by the user.

The lowest-level projects that we will look at will be Linux, the kernel of today’s most popular free operating system and FreeBSD, which combines the kernel from the BSD family with a series of applications and utilities made by third parties. The work environments for end users that we will study will be KDE and GNOME, which are certainly the most widely-used and popular. For the servers, one of the main aspects in free systems, we will look at Apache, the leader in the WWW servers market, in this chapter. Likewise, we will introduce Mozilla, one of the WWW clients (it is in fact, much more than that) that we can rely on in the free software world. The last project that we will look at in this chapter is OpenOffice.org, a free Office IT (suite) package. We thought it would be appropriate to study the details of two of the most popular distributions, Red Hat Linux and Debian GNU/Linux, and to compare their sizes to other widely used systems, such as Microsoft Windows or Solaris. Finally, the Eclipse multi-language software development environment has also been included.

GNUFDL • PID_00148386 130 Free Software

After discussing the different case studies, we provide a table showing the most important characteristics of each application or project. One of the elements that readers will probably find most surprising will be the results of the cost and duration estimations and the number of developers required. We have obtained these results using methods typically used in the field of software engineering, especially the COCOMO Software Cost Estimation Model. The COCOMO model (Software Engineering Economics, 1981) [93] takes the number of source code lines as the starting measurement and generates estimates of the total cost, the development time and effort required to create the software.

COCOMO is a model designed for “classical” software generation processes (waterfall or V model developments) and for average-size or large-scale projects; therefore, the figures that it will produce for some of the cases we analyse should be taken with some reservations. In any event, the results can help to give us an idea of the sheer scale on which we are working and of the amount of strenuous effort that would be necessary to achieve the same results with a proprietary software development model. In general, it is the cost estimates that are most striking out of all the figures resulting from the COCOMO model. Two factors are taken into account in this estimate: a developer’s average salary and the overheads. For calculating the estimated costs, the average salary for a full-time systems programmer is taken from the year 2000 “Salary survey 2000″ [235]. The overheads are the extra costs that all companies must pay so that the product can be released, independently of the salary paid to the programmers. This ranges from the salaries of the secretaries and the marketing team to the costs of the photocopies, lighting, hardware equipment, etc. To summarise, the cost calculated by COCOMO is the total cost that a company would have to incur in order to create software of the specified dimensions and it should be remembered that only a part of this money would be received by the programmers for designing the software. Once this is factored in, the costs no longer seem so excessive.

9.1. Linux

The Linux kernel is, without a doubt, the star application of free software, to the extent that, whilst only constituting a small part of the system, its name is used to define the whole. Furthermore, it could even be said that free software itself is confused with Linux on many occasions, which is a pretty big mistake to make, given that there is free software that runs on systems not based on Linux (in fact, one of the biggest aims of the movement and of many free software projects is to create applications that can run in numerous environments). On another note, there are also applications that work in Linux and that are not actually free software (such as Acrobat Reader, the proprietary PDF documents reader, for which there is also a Linux version). GNUFDL • PID_00148386 131 Free Software

Note

There are actually various projects that integrate and distribute free applications that run on Windows systems, to avoid free software becoming associated solely with Linux systems. One of the pioneers in this area (and the one that probably became most well-known and comprehensive) was GNUWin, which was distributed on self-bootable CDs with more than a hundred free applications for Win32 systems. Most of these applications are also available in common GNU/Linux distributions, which made GNUWin a good tool for preparing for a gradual and easy transition from a Windows system to a GNU/Linux one. As at early 2007, there are other similar systems available, such as WinLibre.

9.1.1. A history of Linux

The history of Linux is one of the most well-known histories within the world of free software, most probably because it has the traits of a legend rather than those of the history of a computer programme. In 1991, a Finish student called Linux Torvalds decided that he wanted to learn how to use protected mode 386 on a machine that his limited income had allowed him to purchase. At that time, there was a kernel in the operating system called Minix, designed for academic purposes and for use in university courses on operating systems; this is still used today. Andrew Tanenbaum, one of the most prestigious professors at the university, was the leader of the team working on the development of Minix, based on traditional Unix systems. Minix was a limited system, but quite capable and well-designed, and was at the centre of a large academic and engineering community. Minix had a free distribution license and could be used for academic purposes, but it had the big disadvantage that people that did not work or study in the University of Amsterdam could not add improvements to it; instead these improvements had to be made independently, usually using patches. This meant that in practice, there was an official version of Minix that everybody used and then a long series of patches that had to be applied later to obtain additional functions. In mid-1991, Linus, then an anonymous Finnish student, sent a message to the Minix newsgroup announcing that he was going to start work on an operating system kernel based on Minix, from scratch, rewriting code. At the time, although Linus did not explicitly say that he was going to publish it with a free software license, he noted that the system that he was going to create would not have the barriersthat Minix had; this would indicate that, unbeknown to him, and probably without actually wanting to, he was taking the first step towards making the community that congregated around Minix at that time his. Version 0.02, which dates from October 1991, despite being very limited, could already execute bash terminals and the GCC compiler. Over the course of the following months, the number of external contributions grew to the point that in March 1992, Linus could publish version 0.95, which was widely acknowledged as almost stable. There was still quite a way to go, however, before version 1.0, which is usually considered the first stable one. In DecemberGNUFDL • PID_00148386 132 Free Software 1993, for example, version 0.99pl14 was published (which would make it the fourteenth corrected version of version 0.99); in March 1994, Linux 1.0 was finally born. By this time, Linux was being published under the terms of the GPL license; according to Torvalds himself, this was one of the best decisions he ever made, as it was extremely helpful in distributing and popularising his kernel. In “Evolution in open source software: a case study”, [128] there is an exhaustive analysis of the evolution of the different versions of the Linux kernel, focusing on the scale and modularity.

Note

Another significant event in the annals of free software was the debate that took place in late January 1992 on the Minix newsgroup between Andrew Tanenbaum and Linus Torvalds. Tanenbaum, who was probably a bit annoyed by Torvalds’ success with his “toy”, attacked Linux and Linus in a rather disproportionate manner. His essential point was that Linux was a monolithic system (the kernel integrates all the handlers and the rest) and not a microkernel system (the kernel has a modular design, which means that it can be much smaller and that modules can be loaded upon demand). The original argument can be read just as it occurred in “The Tanenbaum-Torvalds debate” newsgroup [214].

9.1.2. Linux’s way of working

The way Torvalds worked was not very common at that time. The development was mainly based on a mailing list9. The mailing list was a place where people not only argued, but where developments also took place. And this was because Torvalds was extremely keen on having the whole life of the project reflected on the mailing list, which is why he would ask people to send their patches to the list. Contrary to what one might have expected (the patches sent as attachments), Linus preferred to have the code sent in the body of the message so that he and others could comment on the code. In any case, although many people would provide their opinions and send corrections or new functions, the last word would always go to Linus Torvalds, who would decide on what code would be incorporated into Linux. To a large extent, this is still how it works in 2007.

Note

The consolidation of Linus Torvalds as a “benevolent dictator” has given rise to a large number of anecdotes within the project. For example, it is said that if an idea is liked, it must be implemented. If it is not liked, it must also be implemented. The corollary, therefore, is that good ideas are of no use whatsoever (without code, of course). On another note, if the implementation is not well-liked, it is essential to insist. A well-known case is that of Gooch, for whom Saint Job was a mere learner. Gooch made up to one hundred and forty six parallel patches until Linus finally decided to integrate them into the kernel’s official branch. Another one of Torvalds’ innovative ideas was to develop two branches of the kernel in parallel: the stable one (the second number of the version is usually even, such as 2.4.18) and the unstable one (the second number of the version is odd, such as 2.5.12). As ever, Torvalds is the person that decides what goes into which branch (many of the most controversial decisions are related precisely to this point). In any case, Linux does not have any planned deliveries in fixed timeframes: it will be ready when it is ready and in the (9)The list’s email is linuxkernel@ vger.kernel.org. The historical messages can be seen at http://www.uwsg.indiana.edu/hypermail/

linux/kernel/.

GNUFDL • PID_00148386 133 Free Software meantime we’ll just have to wait. Surely by now, most readers will have realized that the decision on whether the system is ready or not will be made solely

by Linus. The development method used in Linux has proven to be very effective in terms of results: Linux is very stable and any bugs are corrected extremely quickly (sometimes in minutes), as it has thousands of developers. In this situation, when there is a bug, the probability that someone will find it is very high, and if the person that discovers it is not able to correct it, someone will appear who will hit on the solution very quickly. To summarise, this shows how Linux has thousands of people working on its development every month, which is why its success is not altogether surprising. It should be noted, however, that this way of working is very expensive where resources are concerned. It is not unusual for there to be many mutually-exclusive proposals for a new function or that a dozen patches are received for the same bug. In most cases, only one of the patches will finally be included in the kernel, which means that the rest of the time and effort put into the patches by the other developers will have all been in vain. Linux’s development model is, therefore, a model that works very well in Linux but which not all projects can permit themselves.

9.1.3. Linux’s current status

In early 2007, Linux was at version 2.6, which included, in terms of improvements made to version 2.4, NUMA (Non-Uniform Memory Access, used a lot in multiprocessors), new filesystems, improvements to communication in wireless networks and sound architectures (ALSA) and many other improvements (if you’re interested in the details of the changes in respect of previous versions, you may consult “The wonderful world of Linux 2.6″ [186]). Linux’s development model has undergone some changes over recent years. Although the development mailing list is still the soul of the project, the code no longer has to pass through the list, necessarily. One of the things that have contributed to this in a large way is BitKeeper, a proprietary system that performs revision control, developed by the company BitMover, strictly following Linus Torvalds’ recommendations. The use of this proprietary tool generated a lot of controversy, in which Linus, true to form, demonstrated his pragmatism again, as for him and many others, the CVS version control system was obsolete. The disagreements were brought to an end with the development of git, a revision control system with similar features to BitKeeper that is currently used in Linux’s development. More specifically, Linux’s development process follows a pyramidal hierarchy, in which the developers propose patches, shared via mail between levels, which have to be accepted by the next level

GNUFDL • PID_00148386 134 Free Software up, formed by controller and file maintainers. The subsystem maintainers are on a higher level, whereas Linus Torvalds and Andrew Morton are on the top level and have the final say where the acceptance of patches is concerned. To summarise, the following table provides an x-ray picture of the Linux project, showing how it now has more than five million lines of code and that it can therefore be included amongst the largest free software projects (along with Mozilla and OpenOffice.org). As to the estimates regarding the time it would take to design such a project and the average number of developers that would be necessary, we should note that the former is certainly much less than the time that Linux has been around. On the other hand, this is more than compensated by the latter detail, given that the average number of developers working full-time that would be necessary for such a project is higher than the number ever available to Linux.

Note

The cost estimate that COCOMO shows is in the range of 215 Million US Dollars, a sum that, if we put it in the context of everyday figures that we might think about, would be double what the best football clubs might pay for a great football star.

Beginning of the project First message on news.comp.os.minix: August 1991

License GNU GPL

Analysed version 2.6.20 (stable version on 20/02/2007)

Source code lines. 5,195,239

Cost estimate (according to basic COCOMO)

$ 215,291,772

Design time estimates (according to basic

COCOMO)

8.83 years (105.91 months)

Estimate of average number of developers

(according to basic COCOMO)

180.57 Approximate number of developers

These are estimated in the thousands (although only hundreds appear in the credits [219]) Development assistance tools Mailing list and git Linux’s composition in terms of programming languages shows a clear predomination of C, which is considered to be an ideal language for designing

speed-critical systems. When speed is such a strict requirement that not even C can achieve it, assembly language is directly used for programming and this, as we can see, happens with some frequency. The disadvantage of this assembly language, in comparison with C, is that it is not as portable. Each architecture has its set of particular instructions, which means that a lot of code GNUFDL • PID_00148386 135 Free Software written for an architecture in assembly language has to be ported to the other architectures. The incidence of the rest of the languages, as shown in the attached table, is marginal and they are limited to installations functions and development utilities. The version analysed for this book was Linux 2.6.20, as it was published on 20th February 2007 (without including any subsequent patches).

Table 5. Programming languages used in Linux

Programming language Code lines Percentage

C 4,972,172 95.71%

Assembler 210,693 4.06%

Perl 3,224 0.06%

Yacc 2,632 0.05%

Shell 2,203 0.04%

9.2. FreeBSD

As we have mentioned in the chapter on the history of free software, there are other types of free software operating systems, apart from the popular GNU/ Linux. A family of these are the “inheritors” of the distributions of Berkeley University, in California (US): BSD type systems. The oldest and most wellknown BSD system is FreeBSD, which was created in early 1993, when Bill Jolitz stopped publishing the unofficial updates to 386BSD. With the assistance of the company Walnut Creek CDROM, which subsequently changed its name to BSDi, a group of volunteers decided to carry on creating this free operating system. The main objective of the FreeBSD project is the creation of an operating system that can be used without any type of obligations or ties, but that has all the advantages of code availability and is carefully processed to guarantee the quality of the product. The user has the liberty to do whatever they like with the software, either by modifying it according to their wishes or by redistributing it in an open form or even in a closed form, under the terms that they

wish, with or without modifications. As the name itself indicates, the FreeBSD project is based, therefore, on the philosophy of BSD licenses.

9.2.1. History of FreeBSD

Version 1.0 appeared towards the end of 1993 and was based on 4.3BSD Net/2 and 386BSD. 4.3BSD Net/2 had code that was created in the seventies, when Unix was being developed by AT&T, which, as it turned out, involved a series of legal problems that were not resolved until 1995, when FreeBSD 2.0 was published without the original code developed by AT&T but based on 4.4BSDGNUFDL • PID_00148386 136 Free Software Lite, a light version of 4.4BSD (in which many of the modules had been eliminated for legal reasons, apart from the fact that the port for Intel systems was still incomplete) that was released by the University of California. The history of FreeBSD would not be complete if we neglected to mention its “sister” distributions, NetBSD and OpenBSD. NetBSD appeared as version 0.8 in the middle of 1993. The main aim was for it to be very portable (although at the beginning it was only an adaptation for i386); consequently, the product’s motto was: “Of course it runs NetBSD”. OpenBSD arose from the division of NetBSD caused by philosophical differences (as well as personal differences) between developers in mid-1996. The focus is mainly on security and cryptography and they say that it is the safest operating system that exists, although,

as it is based on NetBSD, it is also highly portable.

9.2.2. Development in FreeBSD

The development model used by the FreeBSD project is based mainly on two tools: The CVS version control system and the GNATS bug-tracking software. The whole project is based on these two tools, as is confirmed by the fact that a hierarchy has been created on the basis of these tools. In effect, it is the committers (the developers with write-access to the CVS repository) who have the most authority for the project, either directly or indirectly through the choice of the core group, as we shall see in the next section. You do not have to be a committer in order to make bug reports in GNATS, which means that anyone who wishes to can report a bug. All the (open) contributions in GNATS are evaluated by acommitter, who may assign the (analysed) task to another committer or request more information from the person that originally made the bug report (feedback). There are situations in which the bug has been solved for some recent branches, which will then be specified with the suspended status. In any case, the goal is that the report should be closed, once the error has been fixed. FreeBSD distributes its software in two forms: on the one hand, the ports, a system that downloads the source codes, compiles them and installs the application in the local computer, and on the other, the packages, which are simply the source codes of the precompiled ports and, therefore, in binary. The most important advantage of the ports over the packages is that the former allow the user to configure and optimise the software for their computer. On the other hand, in the package system, as they are already precompiled, it takes much less time to install the software.

9.2.3. Decision-making process in FreeBSD

The board of directors of FreeBSD, famously called the core team, is in charge of defining the direction of the project and ensuring that the objectives are met, as well as mediating in cases in which there are conflicts between committers. GNUFDL • PID_00148386 137 Free Software Until October 2000, it was a closed group, which could only be joined by an express invitation from the core team itself. As of October 2000, the members are elected periodically and democratically by the committers. The most important rule for the election of the core team is as follows:

1) The committers that have made at least one commit over the last year have the right to vote.

2) The Board of Directors will be renewed every two years.

3) The members of the board of directors may be “expelled” by a vote of two thirds of the committers.

4) If the number of members of the board of directors is less than seven, new elections will be held.

5) New elections are held when a third of the committers vote for this.

6) Any changes in the rules require a quorum of two thirds of the committers.

9.2.4. Companies working around FreeBSD

There are numerous companies that offer services and products based on FreeBSD, which FreeBSD lists on the project’s website. In this presentation of FreeBSD we will learn more about the most significant aspects: BSDi and Walnut Creek CDROM. FreeBSD was born partly due to the foundation of the company BSDi in 1991 by the people from CSRG (Computer Systems Research Group) of the University of Berkeley, which would provide commercial support for the new operating system. Apart from the commercial version of the FreeBSD operating system, BSDi also developed other products, such as an Internet server and a gateway server. Walnut Creek CDROM was created with the aim of commercialising FreeBSD as the final product, in such a way that it could be considered as a distribution in the style of those that exist for GNU/Linux, but with FreeBSD. In November 1998, Walnut Creek broadened its horizons with the creation of the FreeBSD Mall portal, which would commercialise all types of products based on FreeBSD (from the distribution itself to t-shirts, magazines, books, etc.), and announce third-party products on its website and provide professional FreeBSD support. In March 2000, BSDi and Walnut Creek merged under the name BSDi to work together against the Linux phenomenon, which was clearly leaving BSD systems in general and FreeBSD particularly, standing in the shadows. A year latGNUFDL • PID_00148386 138 Free Software er, in May 2001, Wind River purchased the part that was dedicated to generating the BSDi software, with the clear intention of boosting the development of FreeBSD for its use in embedded systems and intelligent devices connected to the Network.

9.2.5. Current status of FreeBSD

According to the latest data from the poll that Netcraft performs periodically, the number of web servers that run FreeBSD is approximately two million. A new user who wished to install FreeBSD could choose between version 6.2 (which could be considered as the “stable” version) or the more advanced or “development” branch. Whilst the former provides more stability, especially in areas such as symmetric multiprocessing, which has been completely redeveloped in the newer versions, the latter allows users to enjoy the latest developments. It is also important to bear in mind that the developed versions tend to include test code, which slightly affects the system’s speed. One of the star features of FreeBSD is what is known as the jails. The jails minimise the damage that might be caused by an attack on basic network services, such as Sendmail for the emails or BIND (Berkeley Internet Name Domain) for name management. The services are placed in a jail so that they run in an isolated environment. The jails can be managed using a series of utilities included in FreeBSD.

9.2.6. X-ray picture of FreeBSD

As we have mentioned in this last section, FreeBSD’s functions are not restricted solely to developing an operating system kernel, but also include the integration of a multitude of utilities that are distributed together in the style of the GNU/Linux distributions. The fact that the development process of FreeBSD is very closely linked to the CVS versions control system means that b

9.10. Eclipse

The Eclipse platform consists of an open and extensible IDE (integrated development environment). An IDE is a program consisting of a set of tools that are useful for a software developer. The basic elements of an IDE include a code editor, a compiler/interpreter and a debugger. Eclipse is an IDE in Java and provides numerous software development tools. It also supports other programming languages, such as C/C++, Cobol, Fortran, PHP or Python. Plug-ins can be added to the basic platform of Eclipse to increase the functionality. The term Eclipse also refers to the free software community that develops the Eclipse platform. This work is divided into projects with the aim of providing a robust, scalable and quality platform for the development of software with the Eclipse IDE. The work is coordinated by the Eclipse Foundation, which is a non-profit organisation created for the promotion and development of the Eclipse platform and that supports both the community and the Eclipse ecosystem.

9.10.1. History of Eclipse

A lot of Eclipse’s programming was carried out by IBM before the Eclipse project was created as such. Eclipse’s predecessor was VisualAge and it was built using Smalltalk in a development environment called Envy. After Java appeared in the nineties, IBM developed a virtual machine that worked with

both Smalltalk and Java. The rapid growth of Java and its advantages with the focus on an Internet that was expanding heavily forced IBM to consider abandoning this dual virtual machine and to build a new platform based on Java from scratch. The final product was Eclipse, which had already cost IBM

approximately 40 million dollars in 2001. Towards the end of 2001, IBM, along with Borland, created the non-profit Eclipse foundation, thereby opening up to the open source world. This consortium was gradually joined by important global software development companies:

• PID_00148386 175 Free Software ell, among others. There are two significant absences: Microsoft and Sun Microsystems. Microsoft was excluded due to its monopoly of the market and Sun Microsystems had its own IDE, constituting Eclipse’s main competition:

NetBeans. In fact, the Eclipse name was chosen because the aim was to create an IDE able to “eclipse Visual Studio” (Microsoft) and to “eclipse the sun” (Sun Microsystems). The latest stable version of Eclipse is available for the Windows, Linux, Solaris, AIX, HP-UX and Mac OS X operating systems. All versions of Eclipse need to have a Java Virtual Machine (JVM) installed in the system, preferably JRE (Java Runtime Environment) or JDK (Java Developer Kit) by Sun, which, as at early 2007, are not yet free (although Sun has announced that their JVM will be).

9.10.2. Current state of Eclipse

All the work prepared for the Eclipse consortium is organised into different projects. These projects are in turn divided into subprojects and the subprojects into components. The high-level projects are managed by committees of the Eclipse Foundation (PMC, project management committees). The following list shows the high-level projects:

• Eclipse. Base platform for the rest of the components. This platform will be free, robust, complete and of a good quality for the development of rich client platforms (RCP) and integrated tools (plug-ins). The Eclipse platform’s runtime kernel is called Equinox and it is an implementation of the OSGi specification (Open Services Gateway Initiative), which describes a services oriented architecture (SOA) for applications.

• Tools (ETP, Eclipse tools project). Various tools and common components for the Eclipse platform.

• Eclipse Technology. Research, dissemination and development of the Eclipse platform. The principles that guide the development of the Eclipse community are as follows:

• Quality. The software developed at Eclipse must meet the software engineering quality standards.

• Development. The Eclipse platform, and all the tools based on it, must develop dynamically in accordance with the users’ requirements.

• Meritocracy. The more someone contributes, the more responsibilities he or she has.

• Eclipse Ecosystem. There will be resources donated by the open source community to the Eclipse consortium.

These resources will be employed in ways that benefit the community. Eclipse’s development process follows certain predefined phases. Firstly, there is a phase called the pre-proposal phase, in which an individual or company declares their interest in establishing a project. If the proposal is accepted, it is decided whether it will be a high-level project or a subproject. The next step is to validate the project in terms of applicability and quality. After a phase in which the project is incubated, there will be a final revision. If the project passes this revision, it will have proved its validity before the Eclipse community and it will pass into the implementation phase.

9.10.3. X-ray of Eclipse

Eclipse is distributed under an EPL License (Eclipse Public License). This license is considered free by the FSF and the OSI. Under the EPL License, it is possible to use, modify, copy and distribute new versions of the licensed product. EPL’s predecessor is the CPL (Common Public License). The CPL was written by IBM, whereas the EPL is the work of the Eclipse consortium. Estimating the investment and effort put into Eclipse is not an easy task. This is due to the fact that the source code that comprises the Eclipse ecosystem is distributed in numerous projects and software repositories.

GNUFDL • PID_00148386 177 Free Software

Below are the results of applying the COCOMO model to the Eclipse platform, which is used as the base for the rest of the plug-ins.

The following table shows the programming languages used in Eclipse 3.2.2:

Table 25. Programming languages used in Eclipse

Programming language Code lines Percentage

Java 2,066,631 95.50%

C 85,829 3.97%

Perl 3,224 0.06%

C++ 5,442 0.25%

JSP 3,786 0.17%

Perl 1,325 0.06%

Lex 1,510 0.03%

Shell 849 0.04%

Python 46 0.00%

PHP 24 0.00%

GNUFDL • PID_00148386 178 Free Software

10. Other free resources

“If you want to make an apple pie from scratch, you must first create the universe.”

Carl Sagan

Can the ideas behind free programs be extended to other resources? We could consider that other information resources that can easily be copied electronically are similar to programs and that the same freedoms, rules, development and business models could apply to them. However there are some differences and the implications of these differences have meant that they have not developed

with the same force as programs. The main difference is that all one has to do is copy the programs to make them work, whereas when other types of information are copied, they have to pass through a more or less costly process before they can begin to be useful in any way, which can go from learning a document to the production phase of hardware described in the appropriate language.

10.1. The most important free resources

We already discussed the documentation of programs and other technical documents in section 3.2.5. Here we will look at other types of creations, which can also be textual, but which are not related to software, but rather to scientific, technical and artistic fields.

10.1.1. Scientific papers

The way in which science evolves is, to a large extent, due to the fact that the researchers that make it progress for the benefit of humanity publish the results of their work in journals that reach a wide public. Thanks to this dissemination, researchers develop a track record that allows them to progress

towards positions of higher standing and responsibility, whilst they receive income from research contracts that they obtain thanks to their developing prestige. This way of disseminating papers represents a business model that has proved very fruitful. For this model to work, the quality of the work has to be guaranteed and the papers must be widely disseminated. The obstacle that prevents the dissemination is the large amount of existing journals, of a significant cost, which can only be purchased with generous budgets. The quality is guaranteed by the fact that the papers are reviewed by specialists or peers. In relation to this, numerous online journals have emerged, among which we would mention the veteran First Monday (“First Monday: peer reviewed journal on the Internet”) [26] or the Public Library Of Science project (PLOS http:// GNUFDL • PID_00148386 179 Free Software www.publiclibraryofscience.org [55]). The “Directory of Open Access Journals” [22] cites many more. Should persons other than the authors be allowed to publish modifications to these types of papers? There are objections that range from the possibility of substandard quality or equivocation of opinions or results, to the danger of people that can easily plagiarise the papers and rise in the ranks with no effort, whilst denying the true authors of their hard-earned merits. However, the fact that all writers are under the obligation of citing the original author and of submitting the paper to a peer-review for publication in a prestigious journal can offset these problems (see section 10.2.2). An analogy has been established between free software and science, as the development model of the former requires the greatest amount of dissemination, peer-reviews (presumably experts) and the reuse of results (“Free software/free science”, 2001) [154].

10.1.2. Laws and standards.

There are documents of a regulatory nature that define how things must be done, so as to improve coexistence between people or so that programs or machines can operate together. These documents need to be widely disseminated, which means that any obstacles will be counterproductive. For this reason, it is understandable that they receive special treatment, as exemplified in the Spanish Intellectual Property Act: “Legal or regulatory provisions and drafts thereof, judgements of jurisdictional bodies and acts, agreements, deliberations and rulings of public bodies, and official translations of all such texts, shall not be the subject of intellectual property”. The technological equivalent of these laws would be the norms or standards. In programming, the communications protocols, either between remote machines or between modules in the same machine, are especially important. It is obvious that we should not limit their dissemination, especially if we want free programs that operate with others to flourish, but, despite this, traditionally, the bodies that regulate these matters, such as ISO11 and ITU12, sell their regulations and standards, even in electronic formats, and prohibit their redistribution. Although this can be justified to an extent, claiming the need to cover part of the costs, the free dissemination of the standards has been much more productive; this is the case of the W3C13 guidelines and, especially where Internet standards are concerned, the documents called RFCs (request for comments) that have existed since the beginning, in electronic formats that can be read using any form of text editor. However, the success of the Internet protocols is not due solely to their availability. Other factors include the development model, which is very similar to free software due to its openness to the participation of any interested person (11)International Organisation for Standardisation (12)International Telecommunications Union (13)World Wide Web Consortium

GNUFDL • PID_00148386 180 Free Software and the use of mailing lists and similar elements. This process is described in “The Internet standards process – revision 3″ [94] and “The Tao of IETF: A Novice’s Guide to the Internet Engineering Task Force” [136]. Should modifying the texts of laws and regulations be allowed? Obviously not if it leads to confusion. For example, an RFC should only be modified in order to explain it or add clarifying comments, whereas not even this is allowed without an explicit authorisation for the recommendations of the W3C (http:/ /www.w3.org/Consortium/Legal/2002/copyright-documents-20021231) [65]. The licenses themselves are also legal documents that cannot be modified. Should it be possible to create new regulations derived from other existing ones using the original documents? This would probably lead to the effortless spread of similar and incompatible regulations that would create confusion and could help the companies that dominate the market to promote their own incompatible variations, as it is in fact occurring, especially in the sphere of the Internet. Nevertheless, where State legislation is concerned, very often the laws have been copied literally from those of other countries and adapted with small modifications to the local particularities. Is there a business model for laws and regulations? There are numerous professionals that work on the laws, in charge of designing, interpreting and enforcing them (legislators, lawyers, solicitors, judges, etc). There are laboratories that provide compliance certificates for the regulations. The regulatory bodies subsist, or should subsist, on the contributions of their members who wish to promote standards, for example, because their business is based on products that interoperate. In the same way that it is convenient to have a definition of free software or open software, it is also necessary to have a working definition of open standards. Bruce Perens (http://perens.org/OpenStandards) [15] proposed the following definition based on the following principles:

1) Availability: if possible, open standards must be available for all to read and implement.

2) Maximise end user choice.

3) Open standards must be free for all to implement with no royalty or fee (certifications of compliance may involve a fee, although Bruce Perens advises that there should be free self-certification tools available).

4) No discrimination to favour one implementer over another.

5) Extension or subset permissions (non-certifiable).

GNUFDL • PID_00148386 181 Free Software

6) Avoidance of predatory practices by dominant manufacturers. All proprietary extensions must have an open standard implementation.

10.1.3. Encyclopaedias

In 1999, Richard Stallman proposed the idea of a free encyclopaedia (“The free universal encyclopaedia and learning resource”, 2001) [210] as a mechanism for avoiding the appropriation of knowledge and providing universal access to learning and the associated documents. It would consist of articles provided by the community, with no centralised control, where different actors would undertake different tasks, including, as a recommendation but not an obligation, that of revising or checking the articles. This encyclopaedia would not only contain text but also multimedia and free educational software. Various initiatives have emerged to make this a reality. For instance, Nupedia

(http://www.nupedia.com) [178] tried to build a quality encyclopaedia, but the attempt failed, perhaps because it required a format that was relatively difficult to learn (TEI), although probably more because of the requirement of having all the articles edited, revised by scientists and checked for style, etc. The successor to Nupedia, which was much more successful, was Wikipedia (http://www.wikipedia.org) [69]. Wikipedia is a free multilingual encyclopaedia based on wikitechnology. Wikipedia is written cooperatively by volunteers and the vast majority of articles can be modified by anyone with a web browser. Its success is based on its structure, which is more flexible in terms of editing, which eliminates the obstacles that Nupedia had in place and which makes it closer to what Stallman had in mind. The word wiki comes from the Hawaiian wiki wiki (‘quick’). Wiki technology allows anyone to edit any document using the structured text system, which is extraordinarily simple as we saw in section 8.6.2. In February 2007, the number of articles in English in

Wikipedia was more than 1,500,000.

GNUFDL • PID_00148386 182 Free Software

Note

Wikipedia is a project by the non-profit organisation Wikimedia, which also has the following projects, based on the same model as Wikipedia:

• Wiktionary (http://www.wiktionary.org) [66]. This is a cooperative project that aims to create a free multilingual dictionary, with definitions, etymologies and pronunciations, in the required languages.

• Wikibooks (http://www.wikibooks.org/) [67]. This is a project that aims to provide textbooks, manuals, tutorials or other pedagogic texts to anyone requiring these elements, for free.

• Wikiquote (http://www.wikiquote.org) [70]. It is a compilation of famous phrases in all languages, which includes the sources when these are known.

• Wikisource. It is a library of original texts that are in the public domain or that have been published with a GFDL (GNU free documentation license).

• Wikispecies (http://species.wikimedia.org/) [71]. It is an open repertory of animal species, vegetable species, fungi, bacteria and all forms of known life.

• Wikinews (http://wikinews.org/) [68]. It is a source of free news content in which the users are the editors.

• Commons (http://commons.wikimedia.org/) [19]. It is a free repository of images and multimedia content.

• Wikiversity (http://wikiversity.org/) [72]. It is an open and free educational platform, based on teaching projects at all educational levels.

• Meta-Wiki (http://meta.wikimedia.org/) [48]. It is the website that supports all the projects of the Wikimedia Foundation.

We should also mention the Concise Encyclopedia of Mathematics, which has a more limited concept of what free means (it can only be consulted on Internet) and a development model in which it is necessary to submit all contributions to an editorial committee before publication.

10.1.4. Courses

With the same aim as the encyclopaedias, it is possible to produce free teaching materials, such as notes, slides, exercises, books, syllabic or didactic software. There is a tendency to view universities as businesses that produce and sell knowledge, which contradicts their basic principles. The reasons why a university may make these materials available to all are as follows:

• The fulfilment of its mission, as an agent that disseminates knowledge.

• The low cost of making existing materials available worldwide.

• The fact that these materials cannot replace teaching in person.

• The idea of these materials as publicity that may attract students and contribute to the university’s prestige.

GNUFDL • PID_00148386 183 Free Software

• The possibility of creating a community of teachers that review and improve the materials.

The most prominent initiative in this area is that of the MIT (http://ocw.mit.edu) [174], which has the aim of making more than two thousand well-catalogued resources accessible in a coherent and uniform manner.

10.1.5. Collections and databases

The mere compilation of information following determined criteria, organizing it and making it available is, in itself, a product of valuable information, regardless of the information itself, which is therefore the product of its authors and, consequently, subject to restrictions on the freedom to access, modify or redistribute the content. Therefore, if we want free information, we can also want free collections. For example, we may wish to classify important information in the Internet, organising and commenting the links. This is what the ODP (Open Directory Project http://dmoz.org [109]) does; it is operated by Netscape and is maintained by voluntary editors organised according to a hierarchical structure. The full directory can be freely copied in RDF format and published with certain modifications, as does Google and many other search engines that take advantage of it. Netscape, which owns the directory, guarantees an “Open Directory Project social contract”[53] inspired on that of the Debian distribution (http://www.debian.org/social_contract.html) [106], which facilitates external contributions ensuring that the Open Directory Project will always be free, with public policies, self-regulated by the community and the users as the first priority. Other examples of collections that might interest us are the free software distributions, with the programs modified so that they fit together perfectly and are precompiled so that they can be run easily.

10.1.6. Hardware

There are two main aspects involved in freedom as regards to hardware. The first one is the need for the interfaces and instruction sets to be free, in such a way that anyone can create a device handler or a compiler for an architecture. The second point is that there should be sufficient information and power available for reproducing a hardware design, modifying it and combining it with others. The designs can be considered software in an appropriate language (VHDL, Verilog, etc). However, making them work is not easy, as they have to be manufactured, which is expensive and slow. However, there are initiatives in this sense, among which we could mention OpenCores (http://www.opencores.org) [52], for integrated circuits.

GNUFDL • PID_00148386 184 Free Software

10.1.7. Literature and art

To finish off our examination of free resources, we cannot forget art and literature, whose ultimate objective is not as much utilitarian as it is aesthetical. What reasons might an artist have to give people the freedom to copy, modify or redistribute their work? On the one hand, it can help to make them well-known and favour the dissemination of their work, which allows them to obtain income from other activities, such as concerts or commissions, and on the other, it can promote experimentation and creativity. In art, we have the same circumstances as in technical subjects. Innovation is incremental and it is sometimes difficult to distinguish between plagiarism and a work that is representative or follows an artistic movement or trend. Obviously, creation and interpretation are not the same thing, and neither are music and literature. Music, painting, photography and cinema are very similar to programs, in the sense that they can be made to “work” immediately on a computer, whereas the same does not apply to sculpture, for example. There are not many open source initiatives in art and literature and the ones that exist are very diverse. We could mention the novels by the Wu Ming (http://www.wumingfoundation.com) [29] collective.

10.2. Licenses for other free resources

The licenses for free software have been a source of inspiration for other intellectual resources, in such a way that many of them have been adopted directly, especially where documentation is concerned, and on other occasions, they have been adapted slightly, as occurs with the pioneering Open Audio License (http://www.eff.org/IP/Open_licenses/eff_oal.html) [114]. Most of these licenses are copyleft licenses, if they permit derived works. GNU’s free documentation license (see section 10.2.1) has been used and is often used for all kinds of texts, although the Creative Commons licenses (see section 10.2.2) are gradually being accepted. In fact, program licenses (GPL and LGPL) have even been used for hardware, although this subject is complex and difficult to reconcile with the current law. In effect, the designs and diagrams can be used, without physically being copied, to extract ideas that are used for new closed designs. For example, the OpenIPCore Hardware General Public License (“OpenIPCore hardware general public license”) [155] establishes that this appropriation is not permitted, but the legal validity of the document is questionable [209]. The only possible way of protecting these ideas is using some form of free patent, which is something that has not yet developed and is out of the reach of those that do not intend or are unable to establish a business built on the ideas. GNUFDL • PID_00148386 185 Free Software

10.2.1. GNU free documentation license

One of the most well-known copyleft licenses for technical documentation, whether it corresponds to programs or any other matter, is that of the Free Software Foundation. After realising that a document is not the same as a program, Richard Stallman promoted a license for the documents that went with the programs and for other documents of a technical or didactic nature. In order to smooth the development of the derived versions, a transparent copy of the document must be made available to whoever needs it, as explained in section 3.2.5, as well as the opaque copies, in an analogy between the source codes and the objects of the programs. One of the reasons for having a license is to establish authorship and to ensure that the ideas or opinions expressed by the author are not mischaracterised. This is why the derived works must have a title on the cover different to that of the previous versions (unless express permission has been given) and must expressly state the place where the original can be obtained. The names of the main authors of the original documents must also be listed, as well as the names of the people that have made any of the modifications, and all notes on intellectual property must be preserved. Likewise, any acknowledgements and dedications must be preserved and the history section, if there is one, must be respected when new modifications are added. It is even possible, and this is the aspect of the license that has most been criticised, to designate invariant sections and cover texts, which no one can modify or eliminate, although the license only permits non-technical texts to be considered as invariant sections, which the license refers to as secondary sections. This license has created a lot of controversy in the free software world, to the point that the Debian distribution project is currently (at the time of publication of this book) discussing whether to remove from debian the contents under this license or designate all documents that have the license as non-free and consider them as non-official. Even though there are no invariant sections, because the derived works may be subject to the terms of the same license, it is important to remember that they could be added subsequently. It is argued, for example, that there may be incorrect or obsolete invariant sections, which, nevertheless, have to be preserved. In any case, the license is incompatible with Debian’s free software guidelines (http://www.debian.org/social_contract.html#guidelines) [104], but the question hinges perhaps on

whether the documentation must follow these guidelines (for example, the texts of the licenses cannot be modified either).

Advice

The first versions of this text were covered under the GFDL license, but the authors subsequently decided to use a Creative Commons license as well (see section 10.2.2), which is more appropriate for the characteristics of a book. So this text is a dual licensing work. GNUFDL • PID_00148386 186 Free Software

10.2.2. Creative Commons licenses

Creative Commons (http://creativecommons.org) [21] is a non-profit organization that was founded in 2001 by experts in intellectual property and law in the information society, with the aim of fostering the creation, conservation and accessibility of intellectual resources ceded to the community in numerous ways. It is based on the idea that some people may not wish to make use of all the intellectual property rights that the law grants them, as this could impede their wide distribution. The first Creative Commons licenses for creative works, of which there were various versions, originally came about in late 2002. These licenses were designed to be:

• strong enough to withstand a court’s scrutiny, in many countries;

• simple enough for non-lawyers to use;

• sophisticated enough to be identified by various web applications. The different licenses allow the creator to select what types of freedoms are allowed, apart from copying, in accordance with four points: $ € = In version 1.x of the Creative Commons licenses, there were eleven types of license, which combined the four basic characteristics mentioned above. 98% of the authors chose the “attribution” option; consequently, as of version 2.x of the Creative Commons licenses, attribution is a requirement. This reduces the eleven types of license to six, which are as follows:

GNUFDL • PID_00148386 187 Free Software

=

= $

$

$ c

c

The following table shows a schematic of the licenses with the corresponding icons. This icon is usually a link to a summary of the license, hosted at Creative Commons website[21]. It is possible to use the generic icon14 instead of the icon representing the license, but it must be linked to the license chosen by the author. The HTML code of the link to the license may be obtained from Creative Commons [21]. Once the license has been chosen and the corresponding icon added, the work will have been licensed and you will receive the:

• Commons deed. A summary of the license with the relevant icons for it. This summary will be shown when clicking on the link obtained from Creative Commons [21].

• Legal Code. This is the complete legal text on which the license is based. This text may be accessed from the summary mentioned above.

• Digital code. This is the RDF (resource description framework) description, which search engines and other applications can use to identify the license and the terms of use. (14)

GNUFDL • PID_00148386 188 Free Software

In February 2007, version 3.0 of the Creative Commons licenses was published. This is an update that corrects many of the faults that people identified. The first large modification is that the generic license is no longer based on the US model and is now based on the terminology of the Berne Convention. Secondly, moral rights and rights management societies are mentioned specifically, as different rulings had been made in each jurisdiction. Thirdly and finally, the texts of both the commons deed and the legal code that went with each license were modified to make it clear that the clause on the recognition of authorship does not allow the licensee to imply or give the impression that they have a relationship or are associated in any way with the licensor. In addition, Creative Commons provides other types of licenses for specific applications. Such as:

fc

cc

pd

cc

cc

cc

cc

cc

wiki

cc

cc

Not all Creative Commons licenses are considered free by sectors linked to free software, as the four essential freedoms must apply before licenses are defined as such (see section 1.1.1) Benjamin “Mako” Hill (Debian and Ubuntu developer) created the Freedomdefined.org (http://freedomdefined.org/) [28] website, with the aim of providing a better definition of what is free culture GNUFDL • PID_00148386 189 Free Software and what is not. On this basis, of the six basic Creative Commons licenses, only two are strictly free: attribution alone (BY) and attribution-share-alike (BY-SA), the latter of which also has copyleft.