sábado, 29 de septiembre de 2012

The GNU Manifesto

The GNU Manifesto is one of the first documents stating the goals of the free software movement.

- The GNU Manifesto was written by Richard Stallman. It was published in March 1985, explaining the purpose and philosophy of the GNU Project, which was undertaken to create a non-proprietary Unix-like operating system. It is also a call for participation and support. It is held in high regard within the free software movement as a fundamental philosophical source.

- The context in 1985 having to do with computer industry was aproximately like this:

  USA   The Atari ST, an inexpensive 8 MHz Motorola 68000-based computer, appeared.
  USA   MS-DOS 3.1, PC-DOS 3.1 released.
  USA   Symbolics registered the symbolics.com domain, the first .com domain in the world.
  USA   Expanded memory specification, a memory paging scheme for PCs, was introduced by Lotus and Intel.
  USA   Commodore 128 was released. Based on a complex multi-mode architecture, this was Commodore's last 8-bit computer. Cost: $299.95 for each of the CPU unit and accompanying 1571 disk drive.
  USA   Commodore released the Amiga, based on a 7.16 MHz Motorola 68000 and a custom chipset. It was the first home computer to feature pre-emptive multitasking operating system. It used a Macintosh-like GUI. Cost: US$1,295 for a system with a single 880 KB 3.5 in disk drive and 256 KB of RAM.
  USA   80386 DX released. It supports clock frequencies of up to 33 MHz and can address up to 4 GB of memory (and in theory virtual memory of up to 64 TB, which was important for marketing purposes). It also includes a bigger instruction set than the 80286.
  USA   Microsoft Windows launched. Not really widely used until version 3, released in 1990, Windows required DOS to run and so was not a complete operating system
  USA   MS-DOS 3.2, PC-DOS 3.2

  So, basically, MS-DOS was growing as the PC Operating System, while UNIX was the preferred system on the rest of environments (Government, Universities, etc.).
  FSF states: "By the 1980s, almost all software was proprietary, which means that it had owners who forbid and prevent cooperation by users. This made the GNU Project necessary"
  GNU was proposed as alternative to both, and proposed as a, somehow, free Operating System inspired by Unix. Richard Stallman asserts on GNU Manifesto:
  "Unix is not my ideal system, but it is not too bad. The essential features of Unix seem to be good ones, and I think I can fill in what Unix lacks without spoiling them. And a system compatible with Unix would be convenient for many other people to adopt.

- The immediate consequences of the GNU Manifesto were:
  * Many other programmers who were excited about GNU wanted to help. Many programmers showed their desire to contribute part-time work for GNU.
  * Prominent and reliable software components were started to be written:
    - The GNU Compiler Collection (GCC)
    - The GNU C Library (glibc)
    - The GNU Emacs text editor
    - The Bash (Unix shell)
    - The GNOME desktop environment

  Not so immediate, but also important, was to acomplish the GNU-Linux Complete Operating System.
  * By 1990 all the major components of a Free Operating System were written except one: "the kernel". Then Linux, a Unix-like kernel, was developed by Linus Torvalds in 1991 and made free software in 1992. Combining Linux with the almost-complete GNU system resulted in a complete operating system: the GNU/Linux system. Estimates are that tens of millions of people now use GNU/Linux systems. Moreover this, it is the preferred Operating System used in Servers.

  The full text of GNU Manifesto is included with GNU software such as Emacs, and is available on the web [1]

- Initial releases of main GNU project programs were:
  1985, March    20: GNU Emacs - Version 13.0 is released
  1987, May        23: GCC - Version 1.0 is released
  1988, February   : glibc - FSF described glibc as having nearly completed the functionality required by ANSI C.
  GNOME was published very much later. First release was introduced on 1999.

  References:
  [1] - http://www.gnu.org/gnu/manifesto.html
  [2] - http://www.gnu.org/gnu/gnu-history.html

Free Software vs Open Source. Licenses.

OSI maintains a list of software licenses recognized as conformat with their definition of “open source software”. FSF maintains a list of software licenses recognized as conformant with their definition of “free software”.

Analysing both list is desirable, focusing on the differences, and trying to know whether they correspond with licenses that were not analysed by one of the two bodies, or if they have been rejected as not conformant with their definition.

Common licenses: (Considered both Free Software and Open Source Software by FSF and OSI)
----------------------------------------------------------------------------------------------------------------------------------------------
Academic Free License 3.0 (AFL-3.0)
Affero GNU Public License: See "GNU Affero General Public License 3.0 (AGPL-3.0)"
Apache License 2.0 (Apache-2.0)
Apple Public Source License (APSL-2.0)
Artistic license 2.0 (Artistic-2.0)
Berkeley Database License / Sleepycat License (Sleepycat)
Boost Software License (BSL-1.0)
Common Development and Distribution License 1.0 (CDDL-1.0)
Common Public Attribution License 1.0 (CPAL-1.0)
Eclipse Public License 1.0 (EPL-1.0)
Educational Community License, Version 2.0 (ECL-2.0)
Eiffel Forum License V2.0 (EFL-2.0)
EU DataGrid Software License (EUDatagrid)
European Union Public License, Version 1.1 (EUPL-1.1) (links to every language's version on their site)
Expat License / MIT license (MIT)
GNU Affero General Public License v3 (AGPL-3.0)
GNU General Public License version 2.0 (GPL-2.0)
GNU General Public License version 3.0 (GPL-3.0)
GNU Library or "Lesser" General Public License version 2.1 (LGPL-2.1)
GNU Library or "Lesser" General Public License version 3.0 (LGPL-3.0)
IBM Public License 1.0 (IPL-1.0)
ISC License (ISC)
LaTeX Project Public License 1.3c (LPPL-1.3c)
License of Python 2.0.1, 2.1.1, and newer versions /
  Python License (Python-2.0) (overall Python license)
Lucent Public License Version 1.02 (LPL-1.02)
Microsoft Public License (Ms-PL)
Microsoft Reciprocal License (Ms-RL)
Mozilla Public License 2.0 (MPL-2.0)
NCSA / University of Illinois Open Source License
Nokia Open Source License (Nokia)
Open Font License 1.1 (OFL 1.1)
Open Software License 3.0 (OSL-3.0)
PHP License 3.0 (PHP-3.0)
Q Public License (QPL-1.0)
RealNetworks Public Source License V1.0 (RPSL-1.0)
Sun Public License 1.0 (SPL-1.0)
W3C License (W3C)
Zope Public License 2.0 (ZPL-2.0)
----------------------------------------------------------------------------------------------------------------------------------------------

Licenses only considered as Free Software by FSF:
----------------------------------------------------------------------------------------------------------------------------------------------
Apache License, Version 1.0
Apache License, Version 1.1
BitTorrent Open Source License
CC0
CeCILL version 2
Common Public License Version 1.0 (*1)
Condor Public License
Cryptix General License
eCos license version 2.0
FreeBSD license
Freetype Project License
GNU All-Permissive License
Independent JPEG Group License
Intel Open Source License (*1)
Jabber Open Source License, Version 1.0 (*1)
LaTeX Project Public License 1.2
License of the ec fonts for LaTeX
License of imlib2
License of Netscape JavaScript
License of Perl 5 and below
License of Python 1.6a2 and earlier versions
License of Python 1.6b1 through 2.0 and 2.1
License of Ruby
License of the iMatix Standard Function Library
License of Vim, Version 6.1 or later
License of WebM
License of xinetd
License of ZLib
Modified BSD license
Netizen Open Source License (NOSL), Version 1.0
Old OpenLDAP License, Version 2.3
OpenLDAP License, Version 2.7
OpenSSL license
Original BSD license
Public Domain
Sun Industry Standards Source License 1.0 (*1)
The Clear BSD License
The Unlicense
Unicode, Inc. License Agreement for Data Files and Software
WTFPL, Version 2
X11 License
XFree86 1.1 License
Yahoo! Public License 1.1
Zend License, Version 2.0
Zimbra Public License 1.3
Zope Public License version 1
----------------------------------------------------------------------------------------------------------------------------------------------

Licenses only considered as Open Source Software by OSI:
----------------------------------------------------------------------------------------------------------------------------------------------
Adaptive Public License (APL-1.0)
Attribution Assurance Licenses (AAL)
BSD 3-Clause "New" or "Revised" License (BSD-3-Clause)
BSD 2-Clause "Simplified" or "FreeBSD" License (BSD-2-Clause)
Computer Associates Trusted Open Source License 1.1 (CATOSL-1.1)
CUA Office Public License Version 1.0 (CUA-OPL-1.0)
Entessa Public License (Entessa)
Fair License (FAIR)
Frameworx License (Frameworx-1.0)
Historical Permission Notice and Disclaimer (HPND)
IPA Font License (IPA)
MirOS Licence (MirOS)
Motosoto License (Motosoto)
Multics License (Multics)
NASA Open Source Agreement 1.3 (NASA 1.3) (*2)
NTP License (NTP)
Naumen Public License (Naumen)
Nethack General Public License (NGPL)
Non-Profit Open Software License 3.0 (NPOSL-3.0)
OCLC Research Public License 2.0 (OCLC-2.0)
Open Group Test Suite License (OGTSL)
The PostgreSQL License (PostgreSQL)
CNRI Python license (CNRI-Python) (CNRI portion of Python License)
Reciprocal Public License 1.5 (RPL-1.5)  (*2)
Ricoh Source Code Public License (RSCPL)
Simple Public License 2.0 (SimPL-2.0)
Sybase Open Watcom Public License 1.0 (Watcom-1.0) (*2)
Vovida Software License v. 1.0 (VSL-1.0)
wxWindows Library License (WXwindows)
X.Net License (Xnet)
zlib/libpng license (Zlib)
----------------------------------------------------------------------------------------------------------------------------------------------

(*1) : They are considered superceeded in OSI, or the author has retired them.
(*2) : Considered as not free software license by FSF.

Mainly, all differences are because the fact that the other organization has not analyzed the license in particular.

EXCEPTIONS:
----------------------------------------------------------------------------------------------------------------------------------------------
On the one hand, next licenses, considered as "No Free Software" license by FSF:
- NASA Open Source Agreement 1.3 (NASA 1.3):
  The NASA Open Source Agreement, version 1.3, is not a free software license because it includes a provision requiring changes to be your “original creation”. Free software development depends on combining code from third parties, and the NASA license doesn't permit this.
- Reciprocal Public License 1.5 (RPL-1.5):
  The Reciprocal Public License is a nonfree license because of three problems.
  1. It puts limits on prices charged for an initial copy.
  2. It requires notification of the original developer for publication of a modified version.
  3. It requires publication of any modified version that an organization uses, even privately.
- Sybase Open Watcom Public License 1.0 (Watcom-1.0):
  This is not a free software license. It requires you to publish the source code publicly whenever you “Deploy” the covered software, and “Deploy” is defined to include many kinds of private use.

On the other hand, next licenses, as stated before, appear on FSF, but are considered superseeded in OSI:
- Common Public License Version 1.0
- Jabber Open Source License Version 1.0
- Sun Industry Standards Source License 1.0
- There is an aditional exception, which is Public Domain. OSI explains on next link:
  "http://opensource.org/faq#public-domain"
that Public Domain is, for practical purposes, Open Source. It states that:
'"Public domain" is a technical term in copyright law that refers to works not under copyright .... Not all jurisdictions have a public domain, and it doesn't always mean exactly the same thing in the jurisdictions that do have it.'
They recommend, basically, to better apply an approved Open Source license to software being released.

To which extent these differences are important or not (in terms of how similar the interpretation of both bodies is of “open source software” and “free software”) ?  Basically, the list of common licenses is big enough to ensure that, nearly in 90% (6/44) of the cases, a license that is open source software is also free software.
  Moreover this, there are a lot of licenses that have not been analysed by both organizations, but that will surely hint or not the category of Free Software or Open Source software simultaneously.
  So, apart from those estrange cases where FSF and OSI states that some licenses analysed by both are Free Software but not Open Source Software or vice versa, differences are not that important, and classification of licenses is very similar by both organizations.

Free Software vs Open Source. Definitions.

This post pretends to show the comparison among Free Software by Free Software Foundation, Free Software by Debian Free Software Guidelines and Open Software by Open Software Inititive:

  All definitions have common points on:

  1 - Freedom to use the program / No Discrimination on usage
  2 - Free to inspect and to adapt / Source Code availability  
  3 - Freedom to redistribute / Free Redistribution
  4 - Freedom to improve and redistribue improvements / Derived Works

  Basically, definitions are very similar. However, taking into account previous common statements, main differences between concepts are:
 
  A) FSF concepts:
  - Short and clear concepts. Stated on a permisive way, based on "Freedom".
  - Can be considered more generalistic than the others.
  - Can be considered the less restrictive.
 
  B) Open Source further concepts:
 
  Provides some statements more specific:
  - Integrity of the Author's Source Code (Redistribution limitations are allowed if license provide a way to
    distribute patch files with source code that modify the program at build time).   
    This statement supposes that this definition is a little bit more restrictive than the Free Software Foundation one.
  - Technology-Neutrality
 
  * It is stated using some limitations on "Must Not" statements, i.e:
  - No Discrimination statements.
  - License not specific to a Product
  - No Restricions on Other Software.
 
  C) Debian Free Software Guidelines:
  Is basically the same definition as the Open Software Definition one, so same peculiarities exposed previously can be applied.
  Differences with the OSI definition will be explained on next point.

- OSI Open Software and Debian Free Software definitions comparison:
  Basically, next statements are provided for both concepts:

  Free Software definition (by Debian):
      1.  Free Redistribution
      2.  Source Code
      3.  Derived Works
      4.  Integrity of The Author's Source Code
      5.  No Discrimination Against Persons or Groups
      6.  No Discrimination Against Fields of Endeavor
      7.  Distribution of License
      8.  License Must Not Be Specific to Debian
      9.  License Must Not Contaminate Other Software
      10. Example Licenses

  Open Source definition (by OSI):
      1.  Free Redistribution   
      2.  Source Code
      3.  Derived Works
      4.  Integrity of The Author's Source Code
      5.  No Discrimination Against Persons or Groups
      6.  No Discrimination Against Fields of Endeavor
      7.  Distribution of License
      8.  License Must Not Be Specific to a Product
      9.  License Must Not Restrict Other Software
      10. License Must Be Technology-Neutral
 
  Debian Free Software Guidelines were first proposed on 1997, by Bruce Perens as main author, although other Debian developers participated too.
  Open Source Definition was created from the Debian Free Software Guidelines on 1998 with Bruce Perens and Eric S. Raymond, as an attempt to provide a more generalistic definition (not so linked to Debian).  
  They are almost the same concept. Open Source Definition just changes point 8 to avoid Debian particularity.
  Moreover this, Open Surce Definition removes Example licenses statement, providing an statement that emphasizes on Technology Neutrality.