Saturday, May 29, 2010

Day 7 Reading Summary

Today's readings cover the ways in which applications can be delivered to users, with a focus on using the internet to deliver so called "web apps." The following are the readings for today:
Typically when we think of computing we think of two components that drive the computing infrastructure: hardware and software. Hardware is the physical components that make up the computing system and software being the desktop, and backend applications that serve our particular needs. However, there is a new component being built into our computing infrastructure which is Infoware. That is a computing component that deals with (and analyzes) the large quantities of information and connections that exist between data, and provides a front-end that makes it easy for the user to interact and understand the vast amounts of data. Typically this infoware works over the infrastructure which we call the Internet, and most people refer to Infoware, these days as "Web applications." Amazon.com being a popular example of Infoware used by a retailer. The Infoware will have profound effects on society, as things that were in the physical realm (such as retailers) can now use this technology to move into the virtual realm (such as e-retailers). In addition, the Infoware changes itself dynamically as the information it uses changes (think of changing reviews for a product on Amazon.com for instance).

Now let us consider Infoware in the context of the open source community. It would appear that open source is leading the way in providing the technology and infrastructure that allows Infoware to appear (i.e. the Internet infrastructure). BIND (Berkeley Internet Name Daemon) handles a great deal of the DNS database (the system which translates URL to IP addresses). In addition, the Apache project, an open source web server, is the most popular web server used to host web applications. Beyond the software that is being used to enable Infoware to be used on the web - open source scripting languages (i.e. Perl, Python, and TCL) provide much of the logic that runs these Infoware based applications, and open standards such as HTML provide the protocols that drive the Web. While it is true that Microsoft was working on their own version of the Web, called the Microsoft Network, it failed because the barriers to entry were to high, in comparison to the set of open technologies and standards which existed at the time. For instance, one would have to pay Microsoft to be part of their network, be locked into Microsoft's proprietary tools and to seek Microsoft's approval before being part of the network. To content creators, the set of open standards seemed to be the obvious choice, in comparison with Microsoft's limited and controlled network.

It's also important to note that developing content for Infoware is much different than developing traditional software. For one thing, since Infoware deals with data and the relations between it (via hyperlinks), while traditional software, typically deals less with data and more about data structures, logic and user interfaces that can be readily installed and used on a computer. This means that developing Infoware doesn't require programmers in the traditional sense of the word, but rather content creators, who understand the content (which is to say data and information) they are weaving into Infoware. This is why technologies like ActiveX (which is designed to be used by developers) has for the most part failed in the Infoware arena. Instead flexible scripting languages act like duct tape, and "glue," various disparate information sources together in understandable ways. Much like the desktop revolution and the need for desktop productivity software gave way to Microsoft's market dominance and IBM did not realize the significance of this new wave, Microsoft stands a good chance of seeing a similar fate if it does not understand this new paradigm in computing.

Web 2.0 has been a relatively hot topic over the past couple of years, but what exactly is Web 2.0? This term, like a lot of technical terms is has been associated with so many different meanings that often times it can be difficult to come up a single definition that truly defines what Web 2.0 truly is. In any event, we can at least begin to define when Web 2.0 started, which was shortly after the DotCom bust in the Fall of 2001 (the time which many overvalued Web 1.0 sites which originally made up the internet boom busted), when the dust settled, and websites which contained real value were all that remained.

How most people define Web 2.0 is to contrast it to the principles that drove Web 1.0. Web 1.0 companies sold products that harnessed the power of the web. For instance Netscape sold a web browser - a desktop browser that allowed people to surf the web, and it planned on selling server software and other products to dominate in the marketplace. On the other hand companies such as Google, a Web 2.0 company, instead provided a service, Google, from which it made money through marketing revenue. Furthermore, the power of Google's service wasn't the application so much as it was the management of the vast amounts of data it was continually indexing.

Another difference between Web 1.0 and Web 2.0 companies is that Web 1.0 companies based their business model on a model where web users were merely consumers who consumed this read-only medium called the Internet. In the Web 2.0 model, sites are designed not only for consumption of content by publishers, but also production of content by web users. In fact the aggregate power of a number of small sites (such as Web blogs), can wield as much power and content as larger mainstream content providers. Therefore Web 2.0 companies made their services realize this distinct fact about Web 2.0, and as a result reached out to the millions of web pages and content providers on the world wide web.

An important characteristic of Web 2.0 mentioned slightly in the previous paragraph is the power of the crowd. Since there are millions and millions of web users, many sharing their own content (blogs, pictures, movies, etc.), a collective intelligence is beginning to form on the internet. Since the web is nothing more than a bunch of data related to one another through links, the structure of the web affords a collective intelligence. This collective intelligence will continue to get "smarter," as more people join this community and those companies that realize this fact can harness the collective intelligence to provide data that is has a wide variety of applicability and uses. A good example of this is Google's Pankrank algorithm which uses the collective intelligence of web surfers to fine tune the ranking of search results.

We now live in an age where companies such as Amazon can track our buying habits in ways that traditional brick and mortar stores could only dream of. Furthermore, companies are producing and aggregating large sets of data which may represent a significant investment on their part (for instance Amazon's database of products). An important question in the Web 2.0 age is who owns this data? There are several companies who want to own and control the data they have created in some way (for instance Navteq's street maps). Meanwhile a movement similar to the open source movement for software has started for data in the Web 2.0 era, and is epitomized by the CreativeCommons movement.

Since in the Web 2.0 model we are delivering a service rather than a product (or piece of software for that matter), we must rethink the process associated with designing and building things. In the Web 1.0 and desktop metaphor we care about developing reliable, robust applications that are released at predefined release intervals and which occupy a set of features which marketing believes will sell. On the other hand in the Web 2.0 model, since we are delivering a service rather than a product, what counts is ensuring that a consistent (and optimum) level of operational excellence can be delivered. We think about such things as up-time, latency and metrics often not thought of in the traditional software development space. Furthermore, the Internet affords us the ability to be constantly update the service with minimal to no cost. In addition, thanks to the data that can now be collected and sent back to service providers, they now have the ability to measure users needs and uses of services, meaning that web services can be tailored more to user's needs.

The lightweight, low cost access to data form a variety of sources, couple with interfaces and mechanisms that make it easy to snap in services to a particular website, is another cornerstone of Web 2.0. Many web users are now mixing and mashing data from a variety of different sources to provide a unique glimpse into an area of interest. Technologies like RSS,AJAX, and others are lightweight interfaces that allow content creators the ability to easily compose these glimpses and change data sources and services at a whim. This new method of producing web content means not only that more web content can be created, but that the web content can change rapidly to the content creator's needs, or to changes in the underlying data sources. In addition, since the content or service is being delivered over the web can reach an audience of devices running on many different platforms (Windows,Mac,Linux) and form factors (handheld, desktop, laptop,etc.) in ways that traditional applications could never do.
All of this occurs in Web 2.0, with minimal co-ordination on anyone's part.

The user experience of Web 2.0 is much different than with Web 1.0 (its predesscor). In Web 2.0, rich interactivity is a hallmark reached through open technologies such as AJAX (which allow content to be updated on a website seamlessly), as well as some closed technologies such as Adobe's FLASH platform. In fact many traditional desktop applications are being remade for the Web today and are adding affordances that only the web can offer (such as the ability to have a similar user experience on a variety of different devices).
Now that we have been thinking about applications delivered via the web, let us now consider the Internet Operating System, which is the concept that the applications that you use and the services that are being provided are done online, "through the cloud,". A fundamental paradigm shift occurs where the main processing, and value that is being provided by the Internet Operating System isn't the particular device you are using (handheld, laptop, or otherwise) but rather the servers that handle these requests. An increasing trend in the area of the Internet Operating System, has been the emergence of providers who supply not only the computing hardware (i.e. servers and other physical computing resources) to content/application providers, but also an interface that makes the management of the applications on this Internet Operating System infrastructure as easy as possible for solutions providers (equivalent to a OS's API). Providers of these services include : Amazon's Web Services, Microsoft's Azure, and the Google App engine. A potential risk with these services is the potential of vendor lock-in for the solutions providers who rely on such Infrastructure as a Service providers.
Just as the traditional operating systems provided a set of core functionality that made application developer's lives easier (such as abstracting out hardware functionality), the Internet Operating System provided by such companies will offer similar services for web application developers who leverage their operating system, albeit in a manner unique for the internet. For instance, since the domain by which many web applications act on is the domain of data, services that simplify the otherwise complex task of search will be provided by these Internet OS providers. In addition, concepts from the PC world, like files are extended to the Internet world, to include web pages, rich media, and the underlying services that must be provided for this type of content hosting (such as access control). Other services which most web users are familiar with that are part of the Internet platform, include things like payment processing, advertising, location-awareness, social networking, image and speech recognition, data sources (for instance governmental), to name but a few.
I mentioned that the Internet Operating System consists primarly of the backend infrastructure of the Internet, that is the servers, proprietary software that provides services for the solution provider, and associated hardware. However, the front-end of the Internet operating system, that is the web browsers and applications that run on the device which connect to the Internet Operating System also are important as well. Infact the web browser is only one type of front-end that is being used the Internet Operating System strategy, another is the Software Plus Services, platform where the front end provides a bunch of critical facilities, with services providing complementary services. In any event, there is no doubt that those who control the front end experience will seek tight integration with their backend, to optimize the user's experience.
So what's missing in an Internet Operating System? A lot of the things that we have taken for granted in a traditional operating system cannot be necessarily found in an Internet Operating System. Reliability and scability is a good example, while we take for granted that our desktop operating system will perform well a majority of the time, the same cannot be necessarily said about the Internet Operating System. For one thing, if demand of services provided by an Internet Operating System exceed the supply (i.e. overload the servers), the experience may diminish or fail to work. Other things that we take for granted in a traditional operating system, is the ability to access our data at all times (something which is more difficult to achieve in an internet operating system model).
Finally, there are a bunch of providers that offer Internet Operating Systems/Platforms. Let us compare and contrast each of their strengths and weaknesses to get a sense of the Internet Operating System landscape.

Amazon, Google and Microsoft offer strong Infrastructure As a Service offerings (storage, computation, and Hosted SaaS apps), while Apple and Facebook overall have weak offerings in this arena. Amazon, Google, Microsoft, Facebook, and Apple each specialize and have strengths in certain kinds of media access (for instance Facebook has a strong presence in things like photo sharing). For the most part all of the providers have in some way a monetization platform be it advertising, or payment processing. Google and Microsoft for that matter have a strong presence in location aware services, while others are ages behind. Microsoft, Google and Apple have respectable calendaring and scheduling services. Microsoft, Apple, Google, and Facebook have the potential for building rich and deep social graphing services. Apple, Google, and Microsoft have strong positions in the communication services arena (in things such as e-mail and chat). Microsoft and Google have a good position in the sensor management services (such as image and speech recognition). Google and Apple, have a strong presence in both mobile devices and the operating systems that support them. Finally, Microsoft, Apple and Google have a strong presence in the web browsing arena.
So what will happen to all of these infrastructure providers? There are really two options. Firstly, one of these providers can build on the competencies which they lack to become the, "be all end all," service provider which provides all the services that application developers could possibly need, and hence much like Microsoft did to the Personal Computer industry, become the defacto Operating System. A second, and what I feel more likely choice is that each of these companies will work together and interoperate with each other in the competencies which they are strong at, as it is very difficult to be the jack of all trades given the large number of services and competencies that are needed to control this platform. An interesting note is that the companies not mentioned in my comparision (for instance Twitter and VMWare), when combined together are strongly competent in all the areas listed.

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.

Tuesday, May 18, 2010

Day 5 Reading & Reflections

This day's reading is a continuation of day 4's reading. Recall, that last day's readings covered the GNU based licensing models (LGPL,GPL,AGPL). We now explore other free and/or open source licenses, and look at the community's take on such licenses. The following are the selected readings for this day:
  1. BSD License
  2. Open Source Voices : The Revenge of the Hackers
  3. Open Source Voices : The Open Source Definition
  4. Why Open Source Misses the Point of Free Software (FSF)
  5. Categories of Free and Non-Free Software
  6. It's Time to Talk About Free Software Again
The BSD license is a commonly used license in the open source world. The license was first used in 1980 by the University of California at Berkeley, as part of their Berkeley System Distribution (BSD) of the UNIX Operating System.

There are very limited restrictions imposed with the license. In essence, if you distribute a BSD licensed work, you must include the original copyright notice, a disclaimer of liability (i.e. you cannot sue the developer(s) if the application does not do exactly what you expect) and that credit should be given to the authors of the work (i.e. you cannot claim this work as solely your own). Some versions also protect the Trademarks of the BSD project, so that you cannot use the project's trademark as your own when you create your own version of the project. It is also possible to combine the BSD license with other licenses (free or otherwise), as was the case with BSD Unix, where the BSD components were licensed under the BSD license, and Bell Lab's components were licensed under a different license.

A benefit or disadvantage depending on whether you are a software maker, or part of the open source community, is that this license is extremely permissive in what you can do. Recall that in the GPL, you must distribute any changes you made to the work under similar licensing as the GPL, should this solution be distributed outside your organization. However, with the BSD based licenses, you can take work licensed under the BSD license, make modifications (trivial or otherwise) and use/distribute the application without having to distribute the source. In other words you can take something that is in the public domain and make it proprietary, as copyleft isn't implemented at all.

While the GPL license is by far the more most popular free license out there, a lot of important work is licensed under the BSD license, especially in the operating system space. There is no one, "right license," just as there is no one, "silver bullet," to software development methodologies/paradigms. Some people may find the GPL license too restrictive for their use and opt for the BSD license. Others may find the BSD license less free than the GPL, and hence opt for the GPL. In any event, the open source community benefits from having a variety of choices for developers to choose from which support some degree of freedoms rather than having a rigid licensing system that cannot accommodate the needs of the entire community.

Switching gears for a moment, there is a stereotype in some parts of society that hackers are clever developers who cannot gather the resources and skills in their community necessary accomplish large, ambitious goals that typically require the resources of a team of hundreds of developers working together. In fact as was mentioned before, Larry Constantine in his book, The Peopleware Papers, continually talks about the Code Cowboy, the mythical developer who can accomplish large feats in development that would normally take years to accomplish with a team of skilled developers in the garage of his parent's house. As Fred Brooks writes in the Mythical Man Month, in reality few systems of large scale are built by a lone developer.

This brings me to Brook's law, which states that as the number of people working on a software project increases, the amount of complexity and interactions increases by N squared. Most software companies have proven that for large software projects, this law holds. What I find interesting, and what The Revenge of the Hackers article points out, is that for many open source projects, this law does not hold. For some reason the immense collaborative power of developers globally creating and improving open source projects, can develop high quality solutions which often times is delivered on time. It mentions reading the Cathedral and the Bazaar, for more information on this phenomenon. It is this article which later inspired Netscape to release the source code to its browser when it was under threat from Microsoft's Internet Explorer, which threatened to destroy open standards. The implications of this announcement for the open source community, is that it shed light on the community. If the Netscape experiment of open sourcing their browser turns out to be a success, it may prove that the open source model is a viable business model.

It was from the direct progress made with open sourcing the Netscape browser, and the publishing of the Cathedral and the Bazaar, that the free software community realized the importance of effective marketing. In February of 1998, members of the free software community met in person at the VA Research headquarters to design an effective marketing campaign. The first order of duty was to find a better name to describe the movement, as the term used to describe their community, the, "free software," community was ambiguous. Free software to an ordinary person, could either mean free as in freedom, or free as in beer (the former being the correct definition). In addition, there was a negative association of free software as being connected to communism, and anti-intellectual property, which in reality it isn't (but the FSF implied). The point of the marketing campaign would be to stress the positive aspects of the free software movement, such as the lower cost and and high reliability. It was from this brainstorming session that the term open source was devised to describe the broad free software community and a marketing campaign was devised to rebrand the free software community.

There were a set of core themes that the open source campaign was defined by:
  • evangelize open source top-down, as it is easier to convince a manager to switch to open source then it is to have developers/engineers convince their managers
  • use Linux as the poster-child for effective open source work, as it the most widely known open source project
  • Convince the Fortune 500 to use open source, as they drive the direction of software
  • Use business media to make the the business case for open source, capturing Wall Street
  • Educate the community in guerilla marketing techniques to have a unified marketing message
  • Create a mark that open source software can use, to create a brand association for open source
They (the open source community) went on to implement each of these themes/goals. Some major achievements of that time included major software companies announcing they would port their software to Linux (a free platform), with the Oracle and Informix being one of the first large software companies to announce doing so. In terms of media coverage, an internal Microsoft letter was uncovered called the "Halloween Documents," which exposed Microsoft's fear of the open source world and the steps they would take to stop the movement. This of course resulted in media coverage for many of the large business publications for many weeks in November. In addition, there was adoption of Linux and open source solutions from movie studios using it to render scene for the movie Titanic, to University's creating inexpensive compute clusters. Development of Linux progressed rapidly that year, implementing things such as symmetric multiprocessor support.

It then goes on to make several prediction of the future of the open source and for that matter computer industry:
  • Explosion in the number of open source developers
  • Linux will dominate in the open source OS world out placing BSD and other free OSes
  • More software vendors will commit to supporting free solutions such as Linux
  • Open source technology will be brought in through the backdoor of Microsoft shops
  • The market share of proprietary will fade away
  • Microsoft's foray into the server world will fail (Windows 2000)
It then goes on to mention that there is a good chance that Microsoft will die, as people switch over to free solutions, and ditch Windows on the desktop. However, he mentions that to displace Microsoft it must not only beat Microsoft on technical merits (which it clearly can do), but also on ergonomics and interface design. Quite simply Linux wasn't and perhaps still isn't usable, and the operating system needs to be made so that your aunt or grand mother can use it, a key selling point of Windows.

The Open Source Definition is essentially an adaption of the Debian Social Contract, and the Debian Free Software Guidelines to make it applicable to the larger open source community. It is not a license, but rather a set of guidelines used to determine whether a license is considered open source. At the heart of the open source definition, is the guarantee of the following rights:
  • The right to make copies of a program, and distribute those copies
  • The right to have access to the software's source code
  • The right to make improvements to the software
It is important to note that that the open source definition is not exactly the same as the free software definition. For instance, the open source definition lists the GNU GPL,BSD, X Consortium, and Artistic licenses as being examples of licenses that comply with the open source definition. As we have seen, the GPL and the BSD licenses are quite different from each other, yet they still meet the requirements of the open source definition.

The reason why the open source definition was created as mentioned before was to have a standard to compare software licenses against to determine whether they should be considered part of the open source community. Unfortunately there have been in the past to make the open source definition effectively ambiguous so that non-free software can be classified as open source. For instance, there have been non-free software that has lured open source work to leverage proprietary packages, such as Qt and the KDE desktop manager built around it.

Let us now look at software licenses. In general, we can place software licenses into one of two broad categories, it's either Proprietary or a Free Software license. However, there is also a grey area that exists where the software depending on how it is licensed and used could be considered either free or proprietary software.

The Free Software class of licenses include Free Software licenses that follow the free software definition, open source which is similar to free software licenses (but allows for further restrictions), and public domain software. From this, software delivered under this license model can be further grouped into one of two groups, copyleft or noncopyleft. As a reminder, copyleft is the principle that all copies of the software (including derivative work) carry exactly the same license as the original work. The GPL is probably the most notable example of a free license that implements copyleft. Public domain software, on the other hand is a special case of non-copyleft software, as software released in the public domain carries no copyright protections or licenses, and so users are allowed to claim whatever rights or licenses they want to the software work. In effect noncopyleft licenses allow companies to make their own versions of the free software be distributed and licensed as nonfree.

On the other hand, non-free software is software where redistribution and modification is either effectively prohibited or requires you to ask the author for permission. There are several types of proprietary software licenses out there namely freeware and shareware. Freeware essentially refers to software where there is no cost to redistribute and use, although other rights are limited, such as access to source code. Shareware is similar to freeware except users are required to pay a fee for the subsequent use of redistributed software.

There is a third area of licenses which forms a grey area in the free software vs proprietary software battle and they encompass private and commercial software. Private software is software that is developed and distributed for private use. While the free software community would prefer developers to distribute their source code to the community, it may be possible to make private software be compatible with the principles of free software, especially if the users of said software have all the rights afforded to them of free software. Commercial software, may be considered free software, if the software being distributed by the software company follows the principles of the free/open source definition. As mentioned earlier there is nothing in the free software definition that explicitly states that software makers cannot charge for their software, so long as end users and developers have the freedoms afforded to them by the free software definition. On the other hand there are plenty of proprietary software companies that sell commercial software which is not-free, that the source code isn't freely being distributed, or other rights are being reserved or limited.

Saturday, May 15, 2010

Day 4 Reading Summary & Reflection

Day 4's readings were centered around the GNU licensing model, and the various GNU class licenses. The readings for Day 4 are:

  • A Quick Guide to the GPLv3 (http://www.gnu.org/licenses/quick-guide-gplv3.html)
  • GPL FAQ (http://www.gnu.org/licenses/gpl-faq.html)
  • Why you Shouldn't use the LGPL for Your Next Library (http://www.gnu.org/licenses/why-not-lgpl.html)
The GPL is one of many licenses which authors of any sort of work may license their work with, either exclusively or in concert with other licesnes. Since it is a copyright license all of the things you come to expect about copyright such as enforcement of copyright by the copyright holder stay the same. However, what changes under this license both the binaries and source of the work must be made available for others either for a fee or for free, as well as the other principles of the free software definition, in the case of software.

Let's first start off by discussing the GPLv3 which is the latest version to the GNU General Public License, which has several benefits to its predecessors. The license is an evolution of its predecessor (GPLv2), and doesn't make any radical changes. It builds upon the foundations of free software (see previous day's reading for a good definition), but also adds in protections to threats to the license, that were not addressed in the pervious license. I will briefly discuss some of the benefits of the GPLv3:

The fundamental right to tinker with GPL code and its implementations be it in hardware or otherwise without being subject to copyright laws such as the Digital Millenium Copyright Act (DMCA in the USA), or various EU directives which prohibit breaking such things as DRM technologies is part of the GPLv3. One example of this is Tivoization, which was allowed under prior versions of the GPL. This is the practice of using GPL code on a device but having technological measures in place to prevent users from changing the code on the device. In the past, if you were to try to bypass these measures you would be breaking anti-circumvention laws (i.e. DMCA in the USA). This new license allows users to bypass such technological measures without legal recourse.

The freedom of knowing that GPL code should now not violate any software patents is another benefit of the new license. Basically, anyone who submits code under the GPLv3 that is covered by a patent must give each recipient a license to patents which the GPL'd code makes use of. As a result anyone using GPLv3 code can rest assured that they will not be held liable for infringing on software patents (which was an outstanding issue that the GPLv2 allowed). Previous versions of the GPL did not consider this potential risk, as software patents, and IP law surrounding software was just beginning when those agreements were crafted. Of course that would mean that certain projects such as Mono could not make use of GPLv3 as they make use of Microsoft's .NET Framework patents, which Microsoft hasn't licensed to the free software community as of this time of writing.

In the past, such as with the GPLv2, the licenses were crafted in a way that were perhaps too strict in some circumstances, and resulted in software that couldn't be licensed as GPL. This list as an example, the copyleft portions of the GPL, where derivative work must follow the terms of the GPL exactly and not add any further restrictions. Unfortunately that meant that free software that had the restriction that derivative works cannot use their trademark, by definition couldn't comply with the GPL. In reality while this was a type of restriction, it really wasn't a restriction in the spirit of the GPL and the free software movement. All the developer was trying to do was protect their name so that it doesn't get misused or associated with other open source projects. As a result, the GPLv3 removes some of these overly restrictive provisions, so that more software can follow the requirements of the spirit of the GPL.

Another advancement in GPLv3, is that this new license is now "compatible," with other free and open source licenses (such as the Apache License v2). As a result of this, more GPL'd code can take advantage of other works in the FOSS community that have licenses which are compatible with the GPLv3. It has also considered a new licensing scenario that was not thought of when the GPLv2 was crafted, which is free and open source software as a service (FOSSaaS).

The ability to combine GPL'd software with non-free code is another possibility with the GPLv3. Two advantages stem from this new addition. Firstly, GNU software and operating systems don't have to include the source code to system libraries anymore (meaning less source that needs to be distributed). Secondly, it means that open source developers can make use of GPL-incompatible system libraries, allowing for even more functionality and operating environment support for GPL'd solutions.

Probably one of the biggest improvements that one can see from the GPLv3, is that the licenses have been reworked so that they comply with international copyright laws. The licenses have also been localized to different regions, meaning that you now have a license that is in effect enforceable worldwide, and respect local laws and customs. As a result, GPL developers and users alike are now on a common ground where they know that the license will be applied evenly and appropriately as stated regardless of where in the world they are.

In the past, if you were to violate the terms of the GPL license, the license would be revoked from you and terminated. The only way you could get the license back was to petition all the copyright holders for a formal restoration of a license which was costly and burdensome. The new license allows for those who violate the GPL to have their rights restored once you stop the violation, unless the copyright holders intervene.

One thing that was discussed a decent amount in the GPL FAQ is the AGPLv3 or Affero GPLv3,which is the third class of license offered for copyright holders to license their work under the GNU licensing model. The AGPL is typically used to cover software
works that are delivered under a software as a service model. This new license covers some of the challenges surrounding freedom in the software as a service world, as well as extending many of the rights and freedoms enjoyed by the GPL into the SaaS world
such as access to source code).

They made an important distinction between GNU software and software that is licensed under the GPL. While it is true that all GNU software, must be licensed under the GPL, not all software that is licensed under the GPL is considered GNU software.
Part of the reason why some GPL'd software isn't part of the GNU software package may be because the author has not purused making their GPL sotware a project within the larger GNU software project. It may also be that they don't adhere to the spirit of the
GNU software project, such as creating software that links into a non-free library (something permissible under the GPL but not under the philosophy of GNU)

The main difference between the LGPL (Lesser GNU General Public License) and the GPL (GNU General Public License), both types of GNU licenses, is that the former license permits the use of library/code in a proprietary solution in addition to free programs, while the latter only allows for use of library/code in free programs. While that may seems like a minor difference for many, the Free Software Foundation, and the GNU project feel that it makes all the difference.
This means that the freedoms which the free software movement is based upon may not proprigate to derivative works, supposing the original work was licensed under the LGPL, which in turn can limit the growth of free works in the software world and in society in general. The Free Software Foundation makes the argument that work should only be licensed under the LGPL as a sort of last resort, when the benefits of licensing the work to the broader software community outweigh the potential harm to the growth and development of the free software community. In fact the GNU project is making efforts to make more of its libraries and work be licensed strictly under the GPL.
Finally license compatability is another important aspect of any licensing system. For the GPL, there are two scenarios to consider: GPL licensed software which interact with other GPL class licensed software, and GPL licensed software that interacts with non-GPL software. The latter part of the licensing scenarios is simpler to explain, quite simply GPL software can interact with non-GPL works, so long as the GPL portion meets the requirements of the GPL license. However, some in the free software community may frown on those who make such interactions possible in their software, particular if the GPL software is interacting with propreitary software. The more difficult scenario to explain is when GPL software is interacting with some other GPL software. However, a simple rule to follow is to simply license your work in either GPL v2.0 or later, or LGPL v2.0 or later license forms. In this way your software can interact with other GPL works of the same version or later, with only a minor license conversion to support work done in GPLv3.

The GPL is a controversial license in the sense that it places certain restrictions on the copyright holder that may be incompatible with their morals or ethical views. A good example of this prevented in the GPL FAQ is that GPL'd software cannot have restriction placed on it to prevent its use in military or commercial applications. Therefore, if you are a strong pacifist, and you want to release software under the GPL, there may be scenarios where you must be in conflict with your moral views. Of course the GPL is one of but many different free licenses that are out there, with the possibility for authors of creating their own free licenses to handle their own views. What is promising about the GPL, however, is that it's principles are applicable to a wide variety of software, supposing of course that you believe in free culture.

Tuesday, May 11, 2010

Day 3 Reading Summary & Reflection

Today's reading for CS889 includes the following articles:
The first article, The Free Software Definition, defines what constitutes a free (as in freedom)software license by defining four essential freedoms that all free software must afford to all users which are:
  • The freedom to run any program, for any purpose
  • The freedom to study how a program works, and change it to make it do what you wish. Access to the source code being a precondition for this.
  • The freedom to redistribute copies so you can help your neighbour.
  • The freedom to distribute copies of your modified versions to others. By doing so you can give the whole community a chance to benefit from your changes. Access to the source code being a precondition for this.
It then goes on to discuss the practicalities and implications of these principles. Firstly,
you should be able to exercise these rights, without having to ask or pay the author for such
rights, or even communicate with the author. You should be able to use the free work for whatever purpose. It also mentions solutions that take advantage of free software should not impose further restrictions or limits in its own way, be it software, hardware or otherwise (such was the case with TiVo's use of the GNU/Linux). The merging of other free code and modules should also be allowed by free software licenses. Furthermore, the freedoms given are irrevocable (so long as the user did nothing wrong), and permanent, and cannot be retroactively changed! An important distinction about a free license is that it does not impose copyleft, that is it is possible to make a nontrivial amount of changes and not need to share the source. Commercialized applications can be licensed under a free license so long as end users have the rights afforded by the four principles of free software. It also states that these licenses should not contain clauses that implement government imposed export controls. Contracts or license agreements cannot override the rights afforded by the free copyright.

The Free Software Definition then discusses the process or creating and implementing a free license. It begins by asking those interested to look at existing free licenses because there is a good chance that there exists a free software license that meets your needs. However, it mentions that if for some reason you could not find a free license to base your software on, to contact the Free Software Foundation to discuss a possible license strategy that adheres not only to the wording of the free software definition but also the spirit of it.

It then argues that this free software definition can not only be applied to software, but also to complementary items such as software manuals. In addition, this same argument can be applied to other valuable works, such as Wikipedia, and infact any cultural work can be free, by applying this methodology to it.

Finally, it mentions that open source is not the same as free software, in that while the source code may be available, you may be limited in what you can do with the source code.

The right to read is a fictional story created by Richard M. Stallman, which tells the story of two college students : Dan and Lissa, who lived in a world where the rights to read and share books were heavily limited by DRM like technologies that limited and monitored access to such material. Infact things that we take for granted today such as libraries no longer existed, and one had to take loans out just to afford to read, as you had to pay for everything you read!

The story discusses other restrictive burdens put on society, such as the limited and careful monitoring and distribution of debuggers, as they could be used to circumvent monitoring and licensing mechanisms, even though they could also be used for legitimate purposes (such as finding bugs in software). In addition, free operating systems and kernels were outright banned and made illegal. In addition each computer had a root password which only Microsoft and the FBI knew about, which would allow you to change operating systems and gain full control over your computer system.

Dan faces a moral dilemma that this new restrictive world brings, his friend Lissa, wants to borrow his computer to complete a midterm that was assigned to her, as her computer broke down. However, while he can (and eventually does) lend Lissa his computer, he is worried that she may read books that are on his computer, for which only he is licensed to read. You see Lissa came from a middle-class family and could barely afford tuition let alone the books she needs to help her do well in her studies. If Lisa were to read his books, he may face prison time and academic repercussions. In the end, he takes the risk and lends Lissa his computer and fortunately he did not get in trouble for helping her out.


What I found scary about this entire article was the author's note which was written some decade after the article was published and documented how the scary future told in the story is now becoming a reality. Laws such as the Digital Millenium Copyright Act (DMCA), European Union directives, international treaties and other legislation around the world is making it possible for authors to limit how content is being consumed.


A perfect example is today's e-book, a book which can be read through an electronic device (such as a computer). While in the physical world we can freely share a books that we own, current digital rights management techniques, which are protected by these laws prevent E-books from being shared as liberally, often times with the books locked down to one device, with the author being to control the content, such as removing or changing that content on our device. In the future publishers may stick strictly to this new format and the risk that society faces is a world where literature cannot be freely accessed, as copyright in the physical world afforded us. In fact many newspapers have stopped physically printing their newspapers and are rapidly switching to this digital restrictive format. Of course this issue is not only limited to books, but also other works such as audio, video and other mediums for which society used to take the freedoms afforded to us by copyright for granted.


It also goes on to discuss the trusted computing platform implemented in operating system such as Windows Vista which could in theory provide the root passwords and root access discussed in the story. As mentioned before, the downside to this is that we could be entering a future of computing where our rights and control over the computer and what we can do with it are severely limited. In addition, organizations such as the FBI could in theory gain access to our systems either pyhsically or remotely in ways which we would never dream possible in the past (even with encryption).


The article misinterpreting copyright - a series of errors, discusses some of the fallacies in the current copyrighyt debate.


He begins the article by looking at the United States Constituiton, the document in the United States which formed the blueprint for current copyright law. He then cites article 1, section 8 of the constitution which states:

"[Congress shall have the power] to promote the progress of science and the useful arts, by securing for limited times to authors and inventors the exclusive right to their respective writings and discoveries."


There are several implications of this part of the consitution. Firstly, that legilsation can be passed with the goal of promoting progress of science and the useful arts. Secondly, that such protections such be secured for limited times, hence you cannot hold this right indefinately (something we will get back to shortly). Thirdly, that such legislation is not required, but is permitted.


The copyright system and its laws, he argues are not designed solely to benefit publishers and authors of creative work, but rather to provide an incentive to these individuals to develop more creative work. Therefore, this type of law was designed to be a bargain, where congress would spend some of your freedom in the hopes that it may allow for a more creative society. He stresses that more and more it is becoming the publisher, not the author who is receiving and aggresively using these affordances in copyright. This means that copyright, laws that were designed to allow for a creative environment for authors, is being used more and more by publisher who offer no creativity to society!


Now that we know the intent and design of copyright, he then discusses what he feels is the first mistake that is currently being made in the copyright debate, which is that copyright laws must strike a balance between publishers and readers (a.k.a society). He argues that this way of thinking elevates publishers to the same stature as readers. However, it is wrong to think that way because the laws were designed to benefit readers, and encourage publishers to develop creative works. In fact as RMS notes, what we are really doing with copyright law is finding the right trade off between publisher protections and society's freedoms!


Maximizing the amount of published work regardless of how it affects our freedoms and liberties is the second error in the copyright debate according to RMS. It may be alright with trading away minor amounts of freedom to encourage the creative process through copyright. However , this battle of toughening copyrights is doing more harm than good, as it is stripping even more important freedom away, just to gain a marginal amount of additional innovation. At some point society must realize that it is not worth maximizing creative output if it means giving up our freedoms!


Maximizing the publisher's output by these tightening laws (see error #2), in combination with other legal tools such as shrink-wrap licensing, has the effect of strangling basic rights and freedoms given to society that come with published work that we take for granted. For instance, the publisher's goal of effectively removing the "right of first sale," and "fair use," rights via licenses and possibly legislation is being pressed at every level of government. Ironically, this has the effect of limiting creativity in society, as the removal of these basic rights and freedoms means that derivative works that are based on prior art may someday in the future not be allowed, or be tightly regulated. This goes again the founding principle of copyright in the US constitution which is to "promote the progress of science and the useful arts," in other words creativity by authors. A world where Walt Disney could not create many of his popular stories based on the work of prior stories, or where Shakespeare could not use the works of other playwrights to develop his plays.


The results of these three errors, RMS argues, is that we are now having legislation where copyright owners are given broader powers, for an even greater amount of time (possibly indefinately). The Digital Millenium Copyright Act (DMCA) was cited as an an example of legislation which broadens the copyright powers given to publisher, which was legislation passed to comply with an international treaty (the WIPO-CT). Publishers can now use any number of forms of digital rights management (DRM) to limit how people can use and share copyrighted work in ways that traditional works could never be protected, and circumventing such technologies is illegal! Furthermore Sonny Bono Copyright Term Extension Act is an example of copyright being extended the benfit of copyright for upto 90 years! One must ask themself, we've given up all of these rights that we have had before, but what have we as a society received in return for these laws? It would seem that the harm far outweighs the costs of both legislations. Troubling still, publishers are asking for even more restrictions, that even more freedom be given up in the form of legislation that mandates to manufacturers to build DRM into their technologies!


Finally, in this article, RMS writes his prescription for what he feels is a right bargain for copyright law. He begins by arguing that if copyright is a bargain that is being made on behalf of the public by our elected representatives, then any legislation must put the public interest in front of the publisher's interest. Our representatives should only give up as little of our freedoms as they must, and demand as much as dearly possible from the publishers in return. He goes and argues that copyright legislation should be pruned back significantly as the current laws mean we are giving up too much of our freedom and getting very little in return. He argues that copyright laws can be pruned back in phases, with the public observing what (if anything) happens to creativity in society. If there is truly no affect on the creative arts, it is likely that we can further prune back copyright law in another again through another stage. In addition society should restrict licenses and other contractual arrangements that limit the effective power of copyright. While the publishers may threaten that such pruning will limit creativity, their threats are empty as they will continue to keep innovating in the free and productive marketplace.


There are several dimensions of copyright law, which RMS feels can be pruned down. The first dimension, which he calls the duration dimension, is how long copyright protection should be granted for. He argues that copyright protections should end several years after a work has been published, and that this duration would depend on the nature of the work being copyrighted. For instance, he argues for 10 years with published work (as most of the revenue for a book is generated in the first couple of years). Another important dimension that he mentioned in his essay was fair use. He argues that fair use should allow for small scale noncommercial copying amongst individuals.

The article, Did You Say "Intellectual Property"?It's a Seductive Message, is an article written by Richard M. Stallman which argues that the whole notion of intellectual property is at best a mirage. Intellectual property, as it is now defined are basically works protected either by patents, trademarks or copyrights. Each of these government imposed monopolies has their own meanings and implications and have evolved in separate ways, which RMS argues cannot simply be strung together into one term.


He argues that this terminology came about from the founding of the World Intellectual Property Organization (WIPO) in 1967. Furthermore the term has been used ever since to imply that these legal tools (patents,copyrights,and trademarks), are a sort of physical property that needs the strict affordances provided by laws governing physical property. Not surprisingly legislators have been changing these laws more and more to reflect the implication of the term intellectual property, as more and more IP holders, and the lawyers representing them continue to refer to this term.

The meanings of each legal tool lumped into the term Intellectual Property, was then explained by RMS in the article. Copyright law, he argues, was designed to promote authorship and art, and covers the details of expression of a work. On the other hand patent law was intended to promote the publication of useful ideas,at the price of giving the one who publishes the work a temporary monopoly over it. Finally, trademark law, he argues, was simply designed to enable buyers to know what they are buying. He then concludes that it is important to keep these legal entities separate in ones mind, as each one has its own implications and solves very different sets of issues. Thinking about these laws as one clumped together terminology has the effect of us thinking about the commonalities of these laws while ignoring the subtilties found in each of these laws, such as the rights afforded to society, not the IP holders. He concludes by stating that if we think of trademarks, patents and copyrights separately and fully, we will have a better understanding not only of the law, but the spirit to why these laws were created.


One thing that bothered me about the article was that he thought that economics is focused solely on matters of production while matters of freedom and way of life are issues which are not of importance to economics. Unfortunately this is one area of thinking where I think that RMS is severely mistaken, as economics isn't solely interested in matters of production and maximizing value. This would be equivalent to me saying that free software is only concerned about making software cost nothing, and that it doesn't care about matters such as the freedom to view and modify source code! Infact economics concepts such as externalities are concepts in economics which realize the importance of society and the greater good.

Confusing Words that Are Worth ignoring are buzzwords and jargon used in the computing industry, which RMS feels should not be used. Rather than summarized each definition proposed, I will lump RMS' terminology complaints into categories of frustruation.

The first set of frusturation with terminology used by the computing industry is the usage of words that refer to proprietary solutions to refer to some general action or word. He mentions, Powerpoint, MP3 Player, and Photoshop as being prime examples as they are used in our vocabulary to discuss generalized things (presenting a presentation, music player, and photo editing) yet refer to proprietary solutions.

Another category of terminology that frustruates RMS are terms that confuse the true meaning of the term free (as in freedom) software, or which further confuse the public's view of software licensing. These terms include BSD-style, closed,open, for free, freely available, freeware, and give away software. Most of these terms refer to free in price, but not free in freedom, and do not follow the four principles of the free software definition.

Then there are terms which RMS' feels are doublespeak or whitewashes the issues that these terms pose. These terms include reasonable and nondiscriminatory (RAND) to refer to patent encumbered standards, trusted computing which refers to technologies that effectively limit access to people's machines, or consumers to refer to people who consume digital goods which cannot in effect be consumed (such as information or music), or PC to simply refer to computers running Windows, instead of its original intent of referring to a computer that an individual uses (regardless of OS).

There are terms which don't correctly refer to GNU/Linux as simply Linux, such as LAMP (the Linux Apache Mysql, PHP stack) System, or Linux system.

Words that have no particular meaning and are just hype also annoy the author, such as cloud computing.

There are also terminology used by lawyers or to make legal arguments against free software and piracy, and they include: compensation, content, creator, digital goods, digital rights management, intellectual property,piracy, protection,sell software,software industry, and theft.

Terms that inadaquetly describe the open source world and they include: hacker,vendor,market.

Finally he mentions a term that abdicates the need for ethics: ecosystem as we typically observe an ecosystem but rarely consider the ethical implications of how entities in the ecosystem regard ethics.

What is copyleft is an article which discusses the principles behind copyleft, and methodologies (such as licensing) that enforce this philosophy. A related article, Copyleft : Prgamatic Idealism, which this section of my blog post also discusses, deals with the practical issues surrounding copyleft.

One may think that free projects such as the GNU can meet the requirements of the free software definition by simply placing their work in the public domain. However, one major downside that the article mentions is that derivative work can take advantage of the fruits of the GNU project's labour, while not donating the derivative work back to the community. In a sense public domain work encourages a take but not give back to the community mentality to those who base their work on such projects. The GNU project needed a legal mechanism which forced those who based their work on the GNU project to give their derivative work back to the GNU project, and the way they get away with this is by imposing copyleft on the software instead of simply placing it in the public domain.

Copyleft essentially uses copyright law for the reverse purpose of what most people use copyright law. Instead of protecting the rights of authors by limiting distribution and copying, copyleft forces those who are bound by the copyright (such as those creating derivative work based on the copylefted software), to copyright and license their software with exactly the same license/copyright as the copylefted software. In that way authors are required to redistribute the source code of their derivative work which is based on copylefted software.

Finally the article goes on to how copyleft is applied in the software world. Essentially a copyright is applied to software which is to be copylefted. Distribution terms are then added which in effect apply the philosophy of copyleft to a legal instrument which copyright enforces on all people who use the software in any way. These distribution terms are typically implemented in a license of some sort, such as the GNU General Public License (GPL).

Software patents are another issue of concern not only for the free software community, but for everyone in the software industry. As the Software Patents article written by Richard Stallman points out, even unknowingly implementing an idea covered by a patent is considered patent infringement (although you have implemented it independently of the patent, as was the case with the compress program and the LZW patent). Contrast this to copyright, where if you create similar but independent work of an author, that is not considered copyright infringement. One could rightly argue that it would be extremely tedious and time consuming, if not impossible for a developer to look through all the patents currently granted before developing a solution to a problem. Since a developer comes up with many different solutions to several problems to create a fully functioning computer program, the chance for software patent infringement is very high, even if they had not read the patent before. Patents also have the effect of limiting creativity on the part of developers as it creates legal gray areas where innovation cannot be effectively practiced.

There are three ways that people can deal with patents, and include:
  • Avoiding the patent
  • Licensing the patent
  • Overturning the patent in court

Avoiding implementing features of capabilities altogether can prove to be a difficult and unpopular approach to dealing with patents. Firstly, this may mean that certain features of your software simply cannot be implemented because important parts of its implementation are covered by patents. As a result, your software may become less and less useful as you realize that more and more of your features are covered somehow by a patent. In addition, some of these patents may cover functionality that is essential for the proper functioning of software (for instance British Telecom's patent covered in the article). Secondly, there are algorithms that have been patented which limits what types of algorithms can be implemented in your software. These algorithms could for instance be a faster way to get a job done, or it may just be an the only effective way of solving a problem (for instance public key cryptography). While these effects may effect some software developers minimally, as it only represents a minor improvement or enhancement to their software, for others these patents could strike a critical blow to the usefulness of the software.

Licensing the patent is not always an option, as patent holders always have the right to refuse you a license to the patent. This has the effect for many of shutting down entire software operations whose business hinges on innovations that somehow "touched," someone else's patent for whom they cannot acquire a license. Even if you can license a patent, often times the patent holders will demand a royalty from revenue (usually a percentage of revenue). This has the effect of eating away the revenue and viability of a software business to cover a patent license which your software may only slightly unknowingly infringe upon. Some large companies, like IBM have built up such a large patent portfolio that there is a good chance that there is a patent which causes you to infringe on their patent rights regardless of what you do. In addition, some companies may only license their patents with you if you in turn license your patents to them (called cross-licensing), which companies use to extort innovations out of inventers.

The final way to deal with patents is to overturn them in court. The criteria that a potential patent must satisfy before becoming a patent is that it is novel, useful and unobvious. While these criteria seem clear and straightforward in disproving a patent claim in court, the reality of actually trying to defeat a software patent is the difficult and frustruating at best. First and foremost to fight a patent in court costs the plaintiff (the person arguing that the patent is invalid), perhaps millions of dollars, well out of the reach of many individuals and companies to afford. Secondly, fighting the criteria that was used to grant a patent is very difficult to show in court. For instance, if you want to disprove that a solution is not novel, you must show prior art that closely resembles what is being patented, and not only that you must prove that this prior art was created and developed before the patent was applied for.

Patents are a cancer, argues RMS, however this cancer affects different industires in different ways, and the validity of the patent system in one industry may not make sense in another. He makes the argument that patents may make sense for the pharmaceutical industry, as it covers a very narrow innovation, for which there is significant investment in development and production. The patent system was designed to help innovators recouperate such investments in return for making public this otherwise proprietary knowledge. However, software deals with abstract mathematical constructs which in and of itself can cover a wide variety of different applications. In addition, the cost for innovation in the software field is typically significantly less than that of the pharmaceutical industry as there is less investment that needs to be made in the technology and infrastructure to support it. Therefore, the argument for patents in the software industry seems to make little sense.

Seeing as the three techniques to deal with patents have proven themselves to be ineffective at best, one must now ask the question, how do you fight the software patent system? One method is to fight where patents are currently being applied for, and issued, which is to say the patent office. This first technique has worked well in Europe where European laws have effectively stopped the practice of applying patents to software. However, this does not apply so well in the US and the UK, where precedent for software patents has been established for a long time. In which case one may want to fight the patent system using the second method, which is to say when patents are being granted. He argues that in such cases the scope of such software patents should be severely limited as much as possible. This limitation begins by having patents state what they area of industry they cover. In this way an automobile patent should not for instance infringe on word processing software, should there be such a patent that crosses that boundaries.

The two articles written by Bruce Perens document the legal battle between the software maker Microsoft, and the GPS maker TomTom, surrounding TomTom's use of the Microsoft FAT filesystem, a technology protected by patents, as well as several patents related to their line of business.


These patents, Bruce argues, are patents which disclose obvious and trivial implementations to workaround technology limits (especially so with the FAT patents, such as handling long file names). Beyond the obviuos factor which he claims, he also states that much of the technology patented has plenty of prior art associated with it that implements nearly the exact same thing (for instance computers in cars existed before Microsoft filed its patent for it). Therefore, one has to question the validity of these software patents, which is the basis for Microsoft suing TomTom.

Beyond patents, another frusturating aspect to the argument is that most solid state media (that is usb flash drives, and memory cards) are preformatted to the FAT filesystem. It is because of Microsoft's market dominance that Apple and other manufacturers were forced to support FAT in their systems to originally support FAT formatted floppies. As a result an entire software and media market gravitated to this proprietary file system which Microsoft had not enforced with patents before. As a result of this, device makers such as TomTom who made use of removable flash devices had to build in support for FAT as most flash devices came preformmated with FAT. It was only then when Microsoft selectively decided to enforce it patents on TomTom and indirectly sue the Linux community as a whole.

Speaking of patent enforcement and infringement the article then discusses how prohibitively expensive it is to defend oneself in software patent litigation. It mentions that TomTom disclosed that it was spending around $5,000,000 per patent infringement case to defend itself. Therefore the legal system encourages settling patent infringement cases (which TomTom did with the Microsoft FAT patents)even if you know you have not commited any wrongdoing due to how expensive it has become to defend yourself in such litigation, especially if your opponent has more resources (i.e. money) than you do. Furthermore the mere settling of such patent infringement cases implies that your organization and those affiliated with your case (i.e. Linux in the case of TomTom), have admitted to committing patent infringement and thus legal precedent has been established.

An important thing to think about is that if you were to commit a crime in most countires, you are afforded a lawyer by the state for free. Therefore this begs the question, should those named in a patent infringment case be given the right to free legal defence by the state, or alternatively by those suing them?

The effect of the Microsoft/TomTom settlement therefore, is to create an environment of Fear, Uncertainty and Doubt (FUD) in the free and open source world. This has the effect of scaring users away from the open source model and platform, for fear of possibly being held liable for taking part in patent infringement. What is even more troublesome is that many free and open source developers will look at the TomTom case and be scared away from developing free and open source applications as it may in some way violate some other proprietary software maker's patents.

The articles conclude that the only solution around this patent issue is to outright ban the practice of software patents. It may be enjoyable in the short-term to invalidate other people's software patents on the basis that there is substantial prior art that proves that the patents are not inventing anything truly novel. However, this only invalidates a minor number of software patents granted everyday, in other words removing a proverbal drop from the software patent bucket.

Sunday, May 9, 2010

Day 2 Reading Summary

This day's reading consisted of several titles, namely:
  • Chapter 2 of Free Software Free Society (Chapter 2), referred to as FSFS
  • Richard M. Stallman Wikipedia article, referred to as WRMS
  • For Want of a Printer (from Free As in Freedom), referred to as FAIF
  • A Fan of Freedom : Thoughts on the Biography of RMS, referred to as AFOF
  • Eric S Raymond Wikipedia article, referred to as ESR
  • Bruce Perens Wikipedia article, referred to as BP
  • Linus Torvalds Wikipedia article, referred to as LT
  • Miguel De Icaza Wikipedia article (mentioned in class), referred to as MDI
I will begin by discussing Chapter 2 of Free Software Free Society, which covers the GNU Manifesto, which is a document that Richard M. Stallman (the founder of the GNU project) put together at the beginning of the GNU project, which discusses a lot of topics that come to mind when one thinks about free software.


He begins by discussing what the GNU project is, which is essentially a collection of Unix compatible tools that you would expect to find in a proprietary UNIX package that are free (as in freedom), although they also can be acquired for free as well. It was designed to be compatible with Unix because in RMS' eyes at the time of writing UNIX was the most popular and decent operating system around, and so it was designed to capture a large user base. However, it also has capabilities not found in UNIX (such as support for long file names).


The reason why he founded the GNU project was because he didn't believe in End User License Agreements (EULAs), Non-disclosure agreements (NDAs), and other legal instruments designed to limit people's access and freedom in using software (source code or otherwise). The GNU project was originally designed to be a drop in replacement for the proprietary tools that were out there that built such walls that limited one's freedoms, and ideally to create a world where one does not need to rely on proprietary software, a view which other open source advocates do not entirely believe in, as we will see with some of the other readings.


Stallman argues that programmers are unhappy about the current state of software, where the proprietary rights of some commercial software operations force them to be in conflict with fellow programmers and users instead of being an ally. He argues that through the GNU project, and other free software projects, the goal is to change the system to one where you have a community of developers and users who can freely interact with the source code (implementation) of software, making changes they feel are needed.


He then goes on to state that people can help the project by donating hardware so that GNU can be tested on and supported as much hardware as possible, as early as possible. However, as we have seen in the previous day's reading this philosophy isn't fully shared with hardware companies, with many companies making the specifications and technical documentation of their hardware proprietary. This in turn, makes it difficult for people in the GNU, and for that matter FOSS community to deliver support for new and/or exotic hardware. One could argue that this is detrimental to many hardware companies, as being able to support as many different environments means a potentially larger number of customers who would be interested in using their hardware. In addition, having open source developers write the drivers and support into their system means that they receive this benefit, with little work/resources spent on the hardware manufacturer's side.


He also mentions that the GNU project needs developers working part-time on the project to ensure that development goals can be reached within time. He raises an interesting paradox that has been observed in the free software community: it is one of the few software development communities that can scale up to a large number of developers working on a given project, while at the same time requiring little administration and co-ordination. This of-course, is atypical of what you would find in a proprietary software company, where co-ordination and administration is the only way to tame the many code cowboy (see the Peopleware Papers by Larry Constantine for more information on this reference). However, he provides insight on how this incredible feat in software project management can occur:
essentially the system that needs to be developed is broken into many small independent pieces which must follow a rigid specification, which makes development and testing easier. This is a less that software companies can learn from RMS. We are seeing now that the FOSS community consists of millions of developers, representing hobbyists, open source software solutions companies, as well as proprietary companies who benefit from the further development of free and open source software.


He goes on to argue about some of the benefits of free software, namely:
  • wasteful duplication of effort on system software can be removed so that effort can be put into the truly innovative, "state of the art," development
  • users can finally change software to meet their needs, or hire a firm to do so for them
  • simplifies the otherwise complex issue of licensing, removing a cloud of many user's heads of what constitutes free and fair use
  • remove the cumbersome technological restrictions on software that limit a user's freedom
These are all benefits that I can support on principle, as I have experienced the frustration associated to each of the problems RMS proposes will be solved with free society model of software. For instance, the cumbersome restrictions on how I can consume and share an e-book limits the free and fair use right's that copyright affords me (for instance being able to loan a book or books to a friend).


He then goes on to raise some of the most common objections raised to the free software model being proposed by the GNU project.


"There will be a lack of support with free software due to its low cost"
He argues that this gap in the free software marketplace can be addressed by having businesses that offer to support and extend free software for a fee. He goes on to argue that with proprietary software, you are at the mercy of the software company to provide support and solve problems with their software package, as you don't have their source code and tools to go in and address the problem if the software company is unwilling to address your gripes. He also argues that handholding support can also be offered for a fee as well. My experience in dealing with proprietary software companies has been that the support that they offer can be limited in certain areas (such as documentation for an obscure API), and that even with paid support, the types of answers that they can provide are merely hand holding (i.e. click this button to fix this problem). I'd like to move to a model where I can solve my own problems, but I suppose an objection to this would be that if people could modify source code, who would be held liable for defects in code? With proprietary software, you know exactly who to blame, with open source, the answer isn't as cut and dry.


Another argument, "How will you advertise this? You don't have the money!", was tackled by RMS when he mentions of the possibility of having businesses that distribute GNU and related tools and use a portion of the revenue generated from the distribution to advertise free software. In fact we have seen advertisements for Free Software, namely with Ubuntu and Firefox. The former raises money to advertise its browser and gain awareness through a lucrative revenue sharing deal with Google, while the latter Ubuntu, raises money to distribute and advertise Ubuntu through its parent company Canonical which offers support and distribution of the Ubuntu Linux software.


He then goes on to state that another argument he has thought about was the, "we need a proprietary OS to give us an edge," which he rebuts by simply saying that you don't, and the purposes of GNU is to remove that edge so that the entire community can achieve mutually beneficial outcomes. In fact the argument that RMS poses to me is irrelevant. How can you get an edge from using proprietary software, if all of your competitors can also use such software? This of course is precisely why I am a believer in custom solutions for the needs of each user group as the "generic software," model of the industry means that everyone in an industry can only all receive marginal benefits from such software.


"Shouldn't developers be rewarded for their work?," was another common argument that those who are against the free society will make, according to RMS. He rebuts this arguments by stating that it is okay to make money off of software as long as it is done in a non-restrictive way and that sharing can take place amongst society. He later goes on to argue that developers may get rewarded less for their work under this system, but this means that efforts can be invested in other fruitful areas (such as usability). It is important to note that a lot of people mistake RMS as someone who wants to make software have no cost at all, which throughout these essays he has continually demonstrated that this is not his view. In fact in our current society developer's aren't being rewarded for their work when users pirate software, and so that even in a restrictive environment of acceptable uses, and no source code, people are still "stealing" from honest hardworking developers. I am interested in seeing how to create an open source venture that sells software (and redistribution), along with derivative work licensing.


"Don't people have a right to control how their creativity is used?," is yet another argument that RMS mentions and that I have also noticed many developers make. RMS argues that this argument implies that developers should have a right to have control over other people's lives (something that most libertarians and liberals would have difficulty understanding). He argues that copyright and patents are fictitious legal instruments that have no inherent value, and are enacted by law with the aim of allowing creative people some limited protection on their work, so as to encourage further innovation. I would further add that copyright,patents and other IP instruments are being merged together today to muddy the water of what was a clear IP system. Today you can combine IP instruments together to ensure that extensive protection can be granted indefinitely, or at least in the long run (when our society will be dead). This has the effect of making our culture become more and more a Read Only culture (as Lawrence Lessig notes), where we can only consume, but not extend and creative derivative works on prior art (a Read Write culture as Lawrence Lessig notes). The very use of IP laws can actually have the opposite effect of what legislators want - in preventing the legitimate creativity of many be controlled by the rights given to a few. It was the brilliant physicist Albert Einstein who was famously quoted as saying, "If I have seen farther than others, it is because I was standing on the shoulder of giants." Perhaps this is a valuable lesson that legislators can learn from the late Albert Einstein.


"Competition makes things get done better," was another argument that critics of RMS' movement might make. RMS rebuts this argument by stating that this is not always true! He argues that while in some cases competition can make more people fight for the prize, it can also create competitors who will do whatever it takes to win the prize, even if it is immoral or violates principles of society. As we move further into the 21st century, there are more opportunities for such competition to have a negative impact on our lives, as technology is advancing to the point where the financial sector, global markets and business make larger and larger impacts on our everyday lives. I therefore feel that it is important to ensure that we ensure that all that is beneficial about competition is preserved in our marketplace, while those aspects of competition that bring out the worst in us, are identified and limited so as to limit the harm on society.


"There will be no programmers without monetary incentives!" This was yet another argument those who oppose free software will make. RMS argues that programming has an irresistible fascination for many and much like other fields such as Professional Music, many practice it for no monetary incentive. In addition, there are other incentives in life such as fame and appreciation which offset the incentive of wanting to make money, such as those who worked in the MIT AI lab with RMS. I don't agree with RMS on this point, as people still should be able to make a living in software development, similar to how some musicians make a living in Professional Music. The creativity and medium for imagination that software development affords us, makes it hard to compare Software Development to Professional Music. In addition, there is a significant need for a variety of software and technology solutions to solve a wide array of the world's problems. I suspect that there will be need for paid software developers in a hundred years time. However, I still think it is possible for software developers to earn a living similar to or better than what they are making today with a free software model (something RMS discusses later).


The argument that "Users are dependent on developers and must follow what they say," is an irrelevant point, because with free software, this dependence no longer exists, and much like the previous argument RMS made, there will always be developers who will be willing to solve the world's problems through technology.


The final argument, "The Programmers Must Make a Living Somehow," is by far the most interesting answer that RMS has in the GNU Manifesto. He argues that the easiest way to sell software is also the most obvious way to sell it, which is to sell only the right to use software. However, there are other less exploited models that RMS proposes such as:
  • manufacturers paying for porting of software to their devices
  • teaching, handholding and maintenance services for software
  • donationware software (i.e. if you find this software useful, please donate)
  • user groups for software packages could form with dues payable to organizations developing such software
  • governments can charge a software tax to those buying computers and the proceed could be handed on to developers
By far the most interesting model that I have yet to see explored is the last model, where government charge a software tax to those buying computers and the proceeds be handed on to developers. Personally, I am opposed to such a system as it often results in a double dipping phenomenon where something designed to be supported by the public is also receiving money from private companies (take the CBC for example where tax payers support the organization, yet they still sell advertisements to other companies).

However, all of these other models that RMS offers seem viable, and have at least begun to be explored by industry. As always, I will be interested in learning other free software models that allow for profit. Perhaps a hybrid of several models could allow for the creation of a free software company that is as profitable and successful as other proprietary software companies are.

The Wikipedia article on Richard Stallman essentially distills his work in the free and open source world (which I have already discussed in great lengths in this posting as well as the previous day's readings comments). Rather than rehash the same details, I'd rather discuss items that the Wikipedia article mentions which hasn't yet been discussed.
I will start by giving some academic background on Richard Stallman as it was this path that he followed that made him start the free software movement. Richard Stallman studied at Harvard University graduating magna cum laude with a BA in Physics. He then went on to do graduate studies in Physics at MIT, but soon abandoned it to pursue his true interest which was programming for the MIT AI Lab. We all know what happened after that...
However, one thing that wasn't discussed in the other readings, is that besides being known for his work with GNU and the free software movement, he is also known in the AI world for pioneering a technique for intelligent backtracking in constraint satisfaction problems. The so called Sussman-Stallman method is still in use today in the AI field.
Stallman has also fought for other issues that bother him. In particular, during the early days of computing, when access to computers was being limited by many instiutions (such as his own), he would wage a campaign to make access to these systems open to all individuals. One notable example was finding a way around MIT's password system which limited access to computing resources only to those with a valid password. In essence, he intercepted and decrypted the passwords, and then sent a note to fellow users disclosing the password, and encouraging them to set the password to an empty string (i.e. blank password). As a result of not having a password, access to computing resources again could be opened up to those without credentials.
Richard Stallman is also concerned about the issue of privacy to the point of paranoia. He refuses to use a cell phone as it could theoretically be used to track the location of where he is at all times. He also avoids things like access cards which could track when he enters and exits particular rooms at MIT. Finally, he browses the web via having wget (a UNIX command that downloads a webpage), send the pages of interest that he wants to view to his mailbox, from where he reads the web page.
Richard Stallman is also a stickler for terminology, requiring interviewers and people who interact with him to use the same terminology he uses. For instance, he refers to Linux as GNU/Linux because Linux is really a combination of the Linux kernel and GNU tools.
For Want of a Printer, from the book Free as in Freedom, discusses the frustruating experience that Richard Stallman had in receiving source code for the drivers that controlled a laser printer donated to the MIT AI lab from Xerox. He mentions in this article that this event was one of the main catalysts that caused him to start the free software movement and to go against the trend towards proprietary software which he admits he would have considered being a part of had he not experienced the anger and frustration that came with not being able to have access to the source code of the printer's drivers. I will now provide a summary of the events of this defining moment, as discussed in this reading.
Richard Stallman was working at the MIT AI lab during the 1970's when a new printer donated by Xerox was being used by the lab. Like any printer it was prone to jamming and Stallman had a solution! Rather than fix the mechanical problems (which he was not an expert at), he had a software solution which was to notify users if a printer is jammed and thus affects their print job. This solution was implemented in printers used previously in the MIT AI Lab, as all hardware came with source code to allow for these useful modifications to be made, and was something that the hardware manufacturer would benefit from as they would be able to receive updated and maintained source to their drivers. However, the donated printer only included the binary code needed to make the printer run, and in fact did not include the source code. This is where the frustrutation began with Richard Stallman, and after much waiting and inquirying he finally found a professor who had access to the source. However, when he met the professor, the professor outright refused to disclose and share the source code with him, as he was bound by a NDA (nondisclosure agreement) to not share the source. The action of the professor outraged RMS and reflecting on the situation, RMS knew what to do - to begin the open source movement. He realized that he couldn't live in a proprietary world because experience proved that he would violate the golden rule (he would be forced do things that he wouldn't want to be done to himself).
Another catalyst mentioned in the reading was decision of the author of a popular text formatting program called Scribe, to include functionality that would functionality of the software from being used after it goes past its customary trial period, at which point the user would have to buy a code from the software maker to unlock the software. The software was developed by a graduate CMU student who sold the software to industry. Richard Stallman was angry about this development as this was one of the first instances of software being DRMed, or locked down by technological measures.
The wikipedia article for Richard Stallman mentions that this change in industry from a free culture, where code was being shared between interested individuals, to one where source code was not being disclosed, let alone modified by those outside the organization may have been the result of the Copyright Act of 1976, which extended copyright in terms of the length of protection, as well as to extend copyright to other meaningful arts. This act also began to usher in the era of DRM, serial numbers and other technologies to limit access to those who have been "authorized," by the software maker to use the software.
The A Fan of Freedom reading is essentially a critique of the book Free as in Freedom, written by someone who has known Richard Stallman and his family personally for decades.
His critique begins by mentioning that the biography helped him better understand aspects of Richard Stallman that he did not know about before, as well as parallels between his life and RMS's life. He argues that parts of the biography were exaggerated and that the certainty that RMS projects about the path he took, was not as certain as he projects to the biographer. He later argues that the biography passed over the many failures that Richard Stallman had and instead focused on the successes in his free software movement. He argues that during the 1970s RMS was not entirely focused, at times chasing women.
He then goes on to argue that Richard Stallman was not in fact the last hacker standing, as many free software historians may have you believe. There were hackers in the UNIX and computing culture who were interested in the concept of free software, and who experienced a world of free software before the proprietary software model was sprung on to them. Essentially he is saying that had Richard Stallman not started the free software movement, someone else would have, as this was an issue that many hackers were concerned about. To prove his point, he mentions the wide scale adoption of GNU by many in the hacker community.
He notes that it was part of the culture of the era to embrace freedom in all areas of ones life. This freedom extended to things like software if you were a hacker, but also relationships, such as practicing polygomy. The era was defined as going against the routine and mundane aspects of life. The hacker culture he mentions by nature embodies many attributes which he mentions includes rigid ethics, analytical, anti-authoritarian, idealistic, careless of normal social rewards, countersuggestable. This suggestion seems to fit in with the types of attributes that you need to have to argue so strong for a free software society in a marketplace defined by proprietary software. In fact one must take the view that the world is broken in order to have the will to want to signifcantly change it through things such as free software.
The concept of free software, however was something that many hackers at the time understood, but did not completely support. Many hackers (including the author of the AFOF article), couldn't understand a world without proprietary software would lead to starving programmers with no good result, even though the development system may be far superior to the proprietary one.
He argues that the book's statement that the GNU/free software movement is strong than ever is at best optimistic. He proves this argument by using Google to compare how many web pages on the Internet refer to "free software", "open source," and a combination of those two. What we clearly see from the data, is that open source is a more popular term than free software. This implies that the term open source carries more currency in the software market than free software, even though open source software is not the same as free software (see the previous post), meaning that RMS' push for the free software movement may not have entirely succeeded. Instead we may have gotten a society of open source software, that in some ways is inherently "unfree".
He concludes that regardless of the arguments he made, Richard Stallman has changed the software industry. Stallman's free software contributions, such as GCC, EMACS, and the GPL have changed the world. The only thing that hasn't succeeded was his rhetoric and moralizing.
The following is a brief summary of the wikipedia article for Eric S. Raymond.
Eric S. Raymond (referred to by many as ESR), is a computer programmer and open source software advocate. He is known for his contributions to fetchmail (mail client), gpsd (GPS Daemon), certain editing modes of EMACS and portions of libraries including GNU ncurses, giflib/libungif, and libpng. He is also known for his writing about the open source movment in works found in, "The Art of Unix Programming," "The Cathedral and the Bazaar," as well as maintain the jargon file, which is a dictionary for computer jargon. He cofounded the Open Source Initivative which is an organization that promotes open source software.
Eric Raymond is also known for his famous quote from the Cathedral and the Bazaar, which is "Given enough eyes, all bugs are shallow," referred to as Linus' law. The implications of this statement are that open source models which enourage more people to review code and make changes as needed means that bugs are spotted more rapidly, and corrected sooner.
While Eric Raymond agrees with the substance of the free software movement that Richard Stallman started through the GNU and FSF, he believes that the language and how Richard Stallman conveys his ideas is simply ineffective and may scare people away who would otherwise consider free software.
Bruce Perens is yet another open source figure which we had assigned reading for. This summary covers the assigned Wikipedia article for Bruce Perens.
Bruce Perens is yet another programmer and advocate in the open source community. He is known for creating the Open Source Definition, which was a document crafted in the 1990s that spells out what consititues open source software, and which has been used as a marketing tool for the free software movement (see Day 1 readings for more insight into this important document). He is a former Debian (popular Linux distribution) Project Leader, founder of Software in the Public Interest and the first project leader of the Linux Standard Base project, to name but a few of his roles in the open source community. He has also spent time educating and representing the open source cause in courts, legislatures and public forums.
Whereas Richard Stallman and Eric Raymond believe that open source and free software is important in creating a free society, which as a consequence has benefits for programmers, Bruce makes the important ecnomic and business argument for why free software should be used in his papers, "The Emerging Economic Paradigm of Open Source," and in a speech, "Innovation Goes Public". One could argue that Bruce is commercializing the free software movement, interested more in profit than in freedom. However, by pursuing this direction in marketing free software he opens the doors to a whole new breed and community of open source developers who see business value in the movement, and who contribute in meaningful ways. He has also spent time establishing several business models which can be used in developing a commercial open source operation.
Next we move on to the Wikipedia article for Linus Torvalds, perhaps one of the well known faces of the open source movement.
Linus Torvalds is a Finnish software engineering best known for having started developed of the Linux operating system and the git revision control system. He has also been involved in Transmeta a US based semiconductor company, and is now part of the the Linux Foundation.
Linus studied at the University of Helsinki from 1988 to 1996, receiving a Master for his paper titled, "Linux: a portable operating system," which became one of the predominent free UNIX like operating systems in use today. As a side note the Linux kernel was based on the Minix operating system, which Linus Torvalds received a copy of while in University.
While Linus believes that open source in the only right way to do software, he is a firm believer in using the best tool for the job, which means that occasionally he needs to use proprietary software (such as KDE or Bitkeeper).
Finally, I read the Wikipedia article for Miguel de Icaza who is a Mexican free software programmer known for being a founder of the GNOME and MONO projects.
In August of 1997 Miguel De Icaza and Federico Mena started the GNOME (GNU Network Object Model Environment) project which is a graphical user interface that runs on top of an operating system (such as Linux). As we learned in our readings so far GNOME was designed to be a free replacement to KDE which many view as being a proprietary or at least less free graphical user interface. GNOME is a large project in that it implements a wide variety of functionality through smaller subprojects, such as the GTK+ widget toolkit.
More recently, Miguel De Icaza has spent time on the MONO project which is an attempt to have Microsoft's .NET Framework supported in a variety of other operating systems and under a free license. This is a controversial project in the open source community as there are plenty of potential legal risks in using MONO as it may violate Microsoft's patents and other Intellectual Property rights, which means that there may be legal liability for people who leverage MONO. However, a potential benefit of MONO is that it removes the vendor lock-in that popular frameworks tend to introduce. For instance with the .NET Framework, you would normally have to develop software for only the Windows platform (Windows for desktop applications, Windows Server for web applications, and Windows Phone/Mobile for handheld applications developed in .NET).
This ofcourse brings up the topic of whether the free software movement should spend some of its time moving proprietary solutions to the free and open world. Rather than coming up with new innovations in the free software world, why not create free versions of wildly successful technologies from the proprietary world? As mentioned earlier, there are many legal challenges to this model (due to patents for instance), but it is a model that even Richard Stallman used in the GNU package, as he created free versions of a lot of the propreitary UNIX tools.
In any event, what is interesting about Miguel De Icaza is his support and connection to Microsoft. Early on in his career he was interviewed by Microsoft to work on the team responsible for porting Internet Explorer to UNIX. Ever since then, he has advocated for the use of Microsoft technologies and standards and in the free software world (such as through the MONO project, or the support of Microsoft's Open Office XML OOXML, standard). One has to wonder whether his closeness to Microsoft, one of the world's largest proprietary software companies impacts his view and objectivity in the free software realm.
 
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.