Tuesday, May 25, 2010

Day 6 Reading Summary

Readings for Today include:

Let's begin by looking at the history of hackers in general, which also happens to be the story of computing. As probably most people know, computers were originally only used by educational institutions, governments, and other research instiutions. MIT was one of the first academic institutions to be using computers, but other Universties, such as Stanford, andCMU quickly joined the computing revolution. Arpanet later to become the Internet connected otherwise isolated communities of hackers in an online world,as well as Universities and research institutions.


During the 1970s, research institutions, in particular XEROX PARC, created manyinnovations in hardware and software, such as the laser printer and local-area networks. AT&T Bell Labs, inventedthe UNIX operating system, and the programming language C, which together allowed for a portable operating system(something unheard of at the time) to be made. Before this, a lot of computing was batch based, meaning that you would feed instructions to the computer, and it would respond after processing it. UNIX opened up the world of conversational interactive computing. Soon somewhat inexpensive workstations running UNIX could be purchased. X11 turned out to be the successful workstation graphics engine for UNIX because it was one of the only graphics engines that supported the hacker community (in spirit and to the word).


However, it was only a matter of time before UNIX became commercialized and expensive. During the early 1990's forinstance one would have to spend several thousand dollars to purchase a copy of UNIX for their workstation from severalof the UNIX vendors. In addition some of the founding principles of UNIX and C (such as portability) were lostdue to infighting in the commercial UNIX community.


In addition, the tradition of collaborative hacking that was seen in the UNIX era, and earlier wasn't seen in the PC marketplacewhere operating systems like Dos and Mac, did not come bundled with compilers and other tools needed for thecollaborative hacking community to take hold in these areas.


During the early 1990s there were three possibilities for a FREE UNIX during the decade: a free port of BSD,Linux, and GNU Hurd (although the latter ended in failure). As it turns out Linux would be the most successful of these free UNIX distributions, seeing success in the personal computing revolution, and finally bringing the hacker culture to the personal computing space.


We now move on to the history of UNIX, which is the history of one of the most successful interactive operating systems to date. Ken Thompson and Dennis Ritchie were the original designers and developers of the UNIX operating system, which they presented in a paper in November 1973. This paper caught the attention of a professor at the University of California, Berkeley. Over several years, a relationship formed between UC Berkeley and AT&T Bell Labs, that saw AT&T UNIX being installed and used at several UC Berkeley machines. In turn UC Berkeley made many improvements to the UNIX operating system provided by AT&T, and incorporated those improvements into the Berkeley Software Distribution (BSD). Improvements included things such as support for (at that time) exotic hardware, such as 32 bit addressing, as well additional tools such as text editors and compilers for different programming languages.


Around the late 1970's to early 1980's AT&T sought to commercialize UNIX, and so the focus for them was on producing commercial quality code. It was UC Berkeley that kept the focus on operating system research for UNIX via its BSD proejct. After convincing Defense Advanced Research Projects Agency (DARPA) of the need for an operating system to unify their heterogenous computing environment, UC Berkely won government funding to continue working on the BSD project via the auspices of the Computer Systems Research Group (CSRG). Bill Joy (who would later found Sun Microsystems), took charge of the technical development and leadership of the project. In addition, UC Berkeley and AT&T Bell Labs (the originators of UNIX), created an agreement that allowed both the BSD distrubtion of UNIX and AT&T UNIX to move forward independently of one another. However, UC Berkeley had to agree to version any of their future work to be in the fourth release of BSD, so as to not confuse AT&T UNIX customers.


Starting with release 4.2 of the BSD UNIX (which was around 1983), it became clear that this distribution of UNIX would become the dominant UNIX distribution, as it contained many advancements that could not be found in other commercial UNIX distributions (such as improvements in the file system), which took a while to incorporate these impvoements into their distributions.


A major advancement that occured during the development of the 4.3 release of BSD UNIX was the separation of machine and architecture specific code from machine/architecture independent code. This meant that BSD code more easily support new architectures that would later come out. In addition, there were many performance improvements as BSD UNIX was seen at the time as being slow. As an interesting side note, the University of Guelph, provided the Networking File System (NFS) implementation for the BSD distribution for the Sun platform.


An intersting turning point in the history of UNIX was the decision to, "open up," and "freely release," large chunks of the BSD project, so long as the code did not infringe on the AT&T copyrights. In addition, those components which did touch the AT&T copyright were rewritten from scratch and released freely. Before this, anyone who wanted to use BSD or UNIX would have to pay an expensive licensing fee for the source or binaries, however with this part of UNIX opened up, these restrictions were removed. The components of these efforts were integrated into NetBSD, which was a free distribution of BSD (in both senses of the word), distributed via the Internet. From the NetBSD project, several derivative projects were started including OpenBSD and FreeBSD, with some of these projects selling CDs that contained the distribution.


What happens next in the story of UNIX is one of legend and controversey. A startup called Berkeley Software Design Inc. (BDSI), was formed to develop and distribute a commercially supported version of the BSD Networking Release Code (most of the basis for the free UNIX). They referred to themselves as essentially being UNIX but at a cheaper price than typical UNIX. However, AT&T more or less owned the trademark and rights to UNIX, and what ensued was a legal battle between BDSI and AT&T. As a result of the lawsuit between BDSI and AT&T, UC Berkeley was added to the suit, and members of the BSD project were diposed, essentially seeking an injunction to the distribution of the components that make up part of the Free UNIX distributions. There was a bitter legal battle between AT&T and UC Berkeley, with each side claiming that they hold rights to certain aspects of UNIX. In the meantime, Novell ended up buying AT&T's rights to UNIX, and decided more or less to settle the suit with UC Berkeley, with some minor changes to the status quo (i.e. removing a couple of files which both parties agreed were particularly encumbered by copyright from the free distribution).


What happens next, with the BSD project, was that there were two release of BSD from release 4.4 onwards. One release BSD 4.4 Lite, essentially contained similar licensing terms and copyright as the Networking codebase that many free BSDs base themselves on, which Novell agreed they would not sue people for using. The other release called 4.4Encumbered, essentially required users to carry a UNIX license to use it. Shortly afterwards with much of the goals of the UNIX project being accomplished, and with the issues being reported, coming down to a trickle, the Computer Systems Research Group (CSRG), disbanded and future development of BSD fell on the FOSS and UNIX community.


There are numerous BSD releases or distributions that are available either FREE (as in freedom and/or price), as well proprietary. Notable BSD releases that are free as in price, as well as free as in freedom include:


  • FreeBSD

  • OpenBSD

  • NetBSD

  • DragonFly BSD

These distributions are primarily based on the 4.4BSD Lite (which is the unencumbered version of UNIX), or based on another BSD distribution, which in turn was based on 4.4BSD Lite (for instance OpenBSD). While they all may be based on the same founding codebase, there are some differences in the goals of each project. For instance while the FreeBSD project seeks to create a general purpose operating system for a narrow set of architectures, the OpenBSD project aims more at creating a more secure, and correct implementation of UNIX. Another difference between these projects, is how they license their distribution. Some BSD distributions follow the philosophies of GNU and Free software more closely than others.

There are several commercial operating systems based on a BSD project, the most notable one being Apple's Mac OS X, based largely on FreeBSD work. Sun also based some of their operating systems on a BSD distribution. Other notable uses of BSD can be seen in the appliance marketplace: specialize systems that are designed to do one thing and one thing well, and include application appliances from NetApp, e-mail appliances from Sophos, and certain Dell embedded hardware solutions.

Let us now take a look at Linux, a FOSS operating system which has a striking resemblance to UNIX in many ways, which has seen not only great adoption in the desktop marketplace, but more so in the embedded systems world. While Linux may resemble UNIX, its code was written from scratch as opposed to other BSD projects that were based on the 4.4Lite release of BSD UNIX. In the article, the Linux Edge, Linus Torvalds, argues that Linux has succeeded because of good development models and good design principles.

Originally Linux was not designed to be portable - it was an operating system that Linus Torvalds designed and developed so that it would run on his Intel x86 based computer. However, during the initial development of Linux, a group ported the operating system to the Motorolla 68k series to support Apple, Sun and other hardware based on that architecture. Later, when Linus wanted to port the operating system to DEC ALPHA, he remembered the experience his colleagues had in porting Linux to the 68k series, and decided to rewrite Linux to better support portability. However, he challenged conventienal wisdom at the time, which was that kernels should abstract away the lower-level details to make the source more manageable (called microkernel architecture). Instead, Linus took a more pragmatic approach of not building such abstractions in, and instead just being more careful of the management of the Linux project to keep the source code clean. In practice, this meant having ground rules for the development of Linux. This resulted in an operating system with considerably less overhead than its microkernel counterparts and which as a consequence ran faster.

Essentially, the development process uses simple rules to determine whether contributed code should be incorporated into Linux. For instance, if the contributed code consists of a system interface, it will very rarely be made part of the Linux kernel, as adding these interfaces locks Linux into supporting that interface indefinitely. Other things, such as hardware support is more clear cut, and will likely be accepted. Ofcourse there are always gray areas, in which case the Linux team considers their choices very carefully as many things rely on the Linux architecture, and the choice can ultimately have a big impact on future development efforts. In addition, the modular architecture of Linux (such as kernel modules), means that development work can be done in a more clean, orderly fashion, and that functionality can be easily switched into Linux. He also mentions that it is his design philosophy that the kernel should be as simple as possible, and in theory should not need constant changing and fiddling about in most cases.

We now move on to Richard M. Stallman (the founder of the GNU project's) argument that not enough credit is being given to the GNU project with respect to the whole open source movement. For instance, he mentions that people refer to the Linux kernel as being the operating system, even though a more correct name would be GNU/Linux, as the operating system incorporates the Linux kernel (a small amount of code in comparison to an entire GNU/Linux operating system), and many packages from the GNU project. In fact recent surveys of how much GNU software is in a typical Linux distribution can be anywhere between 15 to 25 percent or more. The reason why credit needs to be given to projects that make use of GNU project components, isn't for only fame. Rather it is a historical reminder of why the importance of the free software movement and what the GNU project made possible. There is a real risk in GNU/Linux that the community will forget about the free software movement, and care more about adding more capabilities for Linux than securing the freedom that has been afforded to GNU/Linux for a long time. In fact he cites several examples of companies including proprietary, non-free software into their Linux distributions.

Debian is a popular Linux distribution that was started in August of 1993 by Ian Murdock, who was frustrated by the poor maintenance and bugs found in a Linux distribution he was using. It combines a free (such as Linux or Hurd) kernel, along with packages from a variety of sources, including the GNU project, to derive a complete operating system that can handle a variety of common computing tasks (i.e. browsing the web, playing games, listening to music, or word processing,etc.). All of these components typically come precompiled and ready to install for a variety of different architectures (although source is typically almost always included).

Debian has made a lot of progress from when its initial inception. Important milestones in the project include:

  1. The Development of the Debian Social Contract in 1996, the Debian Manifesto, and Debian Constitution, which covers the basic philosophy and principles of the Debian project.
  2. The development of the Advanced Packaging Tool, which significantly eases the installation of software on a Debian machine, as well as a "user friendly" Debian installer.
  3. The indirect creation of many successful Linux distributions (such as Ubuntu), which are essentially forks (or derivations) of the Debian distribution.
  4. The inclusion of thousands of new packages, many of which are updated from release to release.
  5. Support for a variety of different platforms (from Intel's x86 to AMD64, and other specialized devices like netbooks).

The Debian project has several crucial documents which form the philosophy of what they do. The Debian Social contract, which is a social contract between the free software community has the following promises:

  1. Debian will remain 100% free (i.e. every component of Debian will be free software)
  2. We will give back to the free software community (i.e. improvements in Debian get contributed back to the free software community)
  3. We will not hide problems (i.e. be transparent with the development process)
  4. Our priorities are our users and free software (i.e. put users and free software above their own needs)
  5. Works that do not meet our free software standards will be separated from the Debian distribution, but can be installed by users/distributors who choose to do so
The Debian Free Software Guidelines discusses the Debian project's philosophy of what constitutes free software:
  1. Free redistribution (i.e. you have the freedom to redistribute the software at no cost to you)
  2. Source Code (i.e. the software must include the source code with rights to modify and distribute changed works)
  3. Derived Works (i.e. the software must allow for derive works to be made under the same terms of the original software, in other words allow copylefted derived works)
  4. Distribution of source code can only be restricted if the license holder allows patch files to be distributed with the source so that modifications to the original source in effect can be made
  5. No Discrimination Against Persons or Groups (i.e. you cannot exclude certain people or groups from using the software).
  6. No Discrimination Against Fields of Endeavor (i.e. you cannot restrict usage of software for a particular endeavor, such as this software cannot be used in the military)
  7. Distribution of License, (i.e.everyone using the free programs must be given the same license as originally distributed)
  8. Licenses Must Not be Specific to Debian
  9. Licenses Must Not Contaminate Other Software (i.e. the license of the software must not place restrictions on other software)
  10. Examples of Licenses that support this philosophy include GPL,BSD, and Artistic licenses.
Now that we have looked at the history of UNIX, and the somewhat related topic of Linux distributions, let us look at the free software that is typically included with these distributions.

By far, one of the most successful open source projects to date is the Mozilla Firefox browser. The browser is developed by not only members of the open source community, but also paid developers who work for the Mozilla Foundation. What is interesting to look at is the history of Mozilla. Back in February of 1997, Netscape decided to release the source code of their Netscape suite to the open source world, with the Mozilla Organization being founded to continue development of the Mozilla Application Suite (which included a web browser, e-mail and newsgroup reader, as well as several other useful internet utilities). What became apparent early on, was that the real value of the Mozilla project, was its web browser, which eventually became known as Firefox. In 2003, the Mozilla Foundation, a non-profit organization was founded to continue support of the Mozilla projects, as it became clear that Netscape, and its parent AOL would cease supporting the Mozilla development effort and funding for the projects would surely go away. The intellectual property of Netscape (for which parts of the Mozilla projects were based on), was transferred to the Mozilla Foundation.

The GIMP (GNU Image Manipulation Program) is a popular free raster graphics editor. In fact many people compare the capabilities of the GIMP to that of Adobe Photoshop. The GIMP project originated as a semester long project created by two University of California, Berkeley students: Spencer Kimball and Peter Mattis in1995, and was made publicly available in January of 1996. Originally the GIMP was created for UNIX systems, although eventually it was ported to several different platforms including Linux, Windows and MAC OS X. An interesting aspect from a usability standpoint was that throughout its lifetime the GIMP has used three different GUI toolkit. Originally the GIMP used the Motif toolkit. However, Peter Mattis became frustrated with Motif, and developed his own GUI toolkit called GTK, which is used by many FOSS applications today. After some time, he rewrote the GTK toolkit to better support the object oriented paradigm, which he called GTK+, and the GIMP's UI code was transitioned to this third GUI toolkit. Another interesting tidbit about the GIMP is that it is one of few open source projects that takes the issue of usability seriously. Efforts have been made throughout its development life cycle to support internationalization, continuous improvements and refinements of the user interface between releases, as well as an interface design that naturally maps to Adobe Photoshop.

Finally, let us consider Blender, is free 3D graphics application that is released under the GPL. Originally Blender was shareware developed and marketed by Not a Number Technologies (NaN), which means that the software was originally proprietary software where source code was not freely available. However, around 2002, Nan, the creators of Blender went bankrupt, and the creators of the software (Ton Roosendaal), started a campaign to get the software released under the GPL. After raising enough funds to buy the rights from the creditors (around 100,000 euros), the team released the software under the GPL, and founded the Blender Foundation to continue the work being done on Blender.

No comments:

Post a Comment

 
Creative Commons License
CS889 Readings by James Simpson is licensed under a Creative Commons Attribution-Noncommercial 2.5 Canada License.
Based on a work at j2simpso.blogspot.com.
Permissions beyond the scope of this license may be available at j2simpso at uwaterloo dot ca.