1. What’s Free/Libre/Open Source Software?
From SME Guide
It may be a surprise to discover that the software market that we take for granted, based on the idea of “shrinkwrapped” packages that are easy to buy directly by the user is relatively recent. In the beginning, software was bundled with hardware by the manufacturer. Due to the complexity and cost of development (and the relatively limited power of those first computers), to the business models of the manufacturers (based on selling hardware), and to other factors, users freely shared source code and advice, in a collaborative way that led to the creation of user groups like SHARE (Society to Help Avoid Redundant Efforts, founded in 1955 and centered on IBM systems) and DECUS (for Digital Equipment computers and later for HP systems), both still alive. Code was also commonly shared in academic journals, like the famous “Algorithms” column of the “Communications of the ACM” journal.
With the “unbundling” process (the separation of hardware and software catalogues) the first “packaged” software products appeared on the market in the 1970s. With the advent of the first personal computers (the Apple II, the IBM PC and many others) the shrinkwrapped software market become the most familiar to users, being still today a significant part of the overall IT landscape. It is important however to notice that such market represents only around 25% of the total value of the software market, with the remaining composed of custom software developed under contract and software developed in-house [OECD 02].
FLOSS as a licensing model
Building on a tradition laid by academic institutions like MIT, Richard Stallman founded in 1983 the Free Software Foundation (FSF) to find a way to preserve the freedom of users to study, understand and modify software, in direct link with the hacker culture of openness and sharing of information. The objective of the FSF was to create a complete reimplementation of the Unix operating system, at that time an important refrence for most large companies and research centers. With this purpose Stallman and many others created a complete development and execution environment, for which in the late 1980s the kernel (the underlying core of an operating system) was the only missing component. This gap was filled soon, in 1991, by two different teams: the effort lead by Linus Torvalds developed the Linux kernel, while William and Lynne Jolitz wrote a series in the Dr. Dobbs Journal on how to port BSD Unix to i386-based PCs, creating the basis for a complete, free operating system for modern personal computers [DB 00].
The Free Software Foundation places a strict emphasis on the underlying “four freedoms”:
* The freedom to run the program, for any purpose (freedom 0)
* The freedom to study how the program works, and adapt it to your needs (freedom 1). Access to the source code is a precondition for this
* The freedom to redistribute copies so you can help your neighbor (freedom 2)
* The freedom to improve the program, and release your improvements to the public, so that the whole community benefits (freedom 3). Access to the source code is a precondition for this.
For this reason, the FSF created a set of “free software licenses”, and among them the GPL (general public license) and LGPL (lesser general public license) that are the most widely used, both in terms of number of projects and in number of lines of code covered.
Unfortunately, in many situations the term “free software” is frequently interpreted as “gratis”, that is, with no price; a fact that forced the FSF to introduce the slogan “free as in free speech, not as in free beer”. The free software environment moved at a significant pace, up to the development of complete user environments such as GNOME and KDE, and to the design in 1998 of the “open source” trademark, created to present a more pragmatic alternative to the somewhat “political” orientations of the FSF. The Open Source definition is based on a similar set of conditions:
“Free Redistribution The license shall not restrict any party from selling or giving away the software as a component of an aggregate software distribution containing programs from several different sources. The license shall not require a royalty or other fee for such sale.
Source Code The program must include source code, and must allow distribution in source code as well as compiled form. Where some form of a product is not distributed with source code, there must be a well-publicized means of obtaining the source code for no more than a reasonable reproduction cost preferably, downloading via the Internet without charge. The source code must be the preferred form in which a programmer would modify the program. Deliberately obfuscated source code is not allowed. Intermediate forms such as the output of a preprocessor or translator are not allowed.
Derived Works The license must allow modifications and derived works, and must allow them to be distributed under the same terms as the license of the original software.
Integrity of The Author’s Source Code The license may restrict source-code from being distributed in modified form only if the license allows the distribution of “patch files” with the source code for the purpose of modifying the program at build time. The license must explicitly permit distribution of software built from modified source code. The license may require derived works to carry a different name or version number from the original software.
No Discrimination Against Persons or Groups The license must not discriminate against any person or group of persons.
No Discrimination Against Fields of Endeavor The license must not restrict anyone from making use of the program in a specific field of endeavor. For example, it may not restrict the program from being used in a business, or from being used for genetic research.
Distribution of License The rights attached to the program must apply to all to whom the program is redistributed without the need for execution of an additional license by those parties.
License Must Not Be Specific to a Product The rights attached to the program must not depend on the program’s being part of a particular software distribution. If the program is extracted from that distribution and used or distributed within the terms of the program’s license, all parties to whom the program is redistributed should have the same rights as those that are granted in conjunction with the original software distribution.
License Must Not Restrict Other Software The license must not place restrictions on other software that is distributed along with the licensed software. For example, the license must not insist that all other programs distributed on the same medium must be open-source software.
License Must Be Technology-Neutral No provision of the license may be predicated on any individual technology or style of interface.”
Both groups maintain a list of licenses that comply with the terms of the Free Software Definition, or the list of conditions for using the term “open source”.In fact, there are more than 50 licenses identified as “open source” or “free software”, but fortunately they can be classified in a very simple way as [Sun 06, UU 05]:
* “provide credit”: use, modification, redistribution are allowed, but credit to the original author is due, if redistributed. Examples: BSD license, Apache License v2.
* “provide fixes”: use, modification, redistribution are allowed, but source code for any changes must be provided to the original author, if redistributed. Examples: Mozilla-style licenses (Mozilla Public License).
* “provide all”: use, modification, redistribution are allowed, but source code of any derived product must be provided, if redistributed. Example: GPL.
When code from different projects is mixed and redistributed, the issue of license compatibility becomes important. An extremely detailed matrix with licensing compatibility with regards of GPL (including the recently released GPLv3 license) is available at [Fed 07]; in any case, whenever a product is released or distributed, it is advisable to ask advice of an attorney with expertise in FLOSS licenses and intellectual property (a similar advice applies to proprietary software releases).
FLOSS as a development model
While FLOSS as a definition covers exclusively the licensing regime, by extension the “openness” of the code introduced the possibility of sharing development efforts among different groups, in a way similar to those of the early user groups of the sixties. In this sense, Eric Raymond introduced in his seminal paper “The cathedral and the bazaar” the concept of shared development, contrasting this “bazaar” style where every developer is free to choose on what part of the code to work, in contrast to the “cathedral” or formalized development approach that is rigid and structured [Raym 00].
While the concept took hold quickly, the reality is that collaboratively developed projects tend to be executed in a continuum between cathedral and bazaar; for example, for most projects there is a formal structure (with many sub-projects, more open to external contributions) while other are strictly formal (for example, projects that use FLOSS code in a certified environment, such as avionics or safety-critical systems). The important point raised by Raymond is the fact that both coding and ancillary activities like bug fixing and production of documentation can be shared in a large community, creating in a sense “virtual software houses” that in a voluntaristic way provide effort and resources; this helps also in the leverage of a large community of expert users, that can contribute back in a significant way, as shown in [VH 03, VH 05].
When such collaboration takes place, it may be not only in the form of source code, as for example is commented in [Jul 06]: “In the year 2000, fifty outside contributors to Open Cascade provided various kinds of assistance: transferring software to other systems (IRIX 64 bits, Alpha OSF), correcting defects (memory leaks…) and translating the tutorial into Spanish, etc. Currently, there are seventy active contributors and the objective is to reach one hundred. These outside contributions are significant. Open Cascade estimates that they represent about 20 % of the value of the software.”
A similar view has been presented in [Sei 06], where one of the leaders of the KDE project presented the elements that collectively contribute to KDE:
* Human-computer interaction
* Quality Assurance
* Software Development
If overall software suitability to the task is considered, it is clear that non-code contributions are as important as source code.For example translations, documentation and overall quality are vital for the software to be adopted by end-users worldwide.
Another example comes from [Mue 07], where the number of participants within individual Openoffice.org subprojects were counted:
As it can be inferred from the area graph, there are roughly as much non-code contributors than those working on product development and related projects (that are directly related to source code).
This form of collaboration can happen even between competing companies. For example, news about potential security vulnerabilities are commonly shared among different competing Linux vendors. As an example, Mark Cox of RedHat (a widely used distribution of Linux) analyzed the results of two years of incident responses, and found that the largest share of information was coming from the other peer FLOSS distributors [Cox 07].
In more recent years, companies started the adoption of this collaborative model to develop software and services, sometimes supplementing the volunteer communities and sometimes starting new projects and providing substantial resources to its continuation. This later stage (the commercialization stage) is more focused on the sustainability of business models adopted by said companies, and is the main focus of chapter 6.
1. ↑ Richard Stallman and the FSF introduced the term “free software”. Later, the Open Source Initiative proposed “open source software”, allegedly to avoid the linguistic uncertainty associated with the English term “free”, specifically used by the Free Software Foundation to preserve the underlying concept of freedom. The “libre software” term was introduced for the same reason, and used specially in Europe. The term “FLOSS” was introduced by Rishab Gosh in the context of EU-funded project “Free/Libre and Open source software: survey and study” started in 2002 as a catch-all term for free software and open source as described in this section. In this report we will use mainly the term FLOSS.
2. ↑ KDE is a complete user desktop environment, created originally as a libre alternative of the Unix CDE environment, and later evolved to encompass libraries, end-user software and training material.