«By Alec Couros Spring/Summer 2004 Foreword: re: Content To have written ‘comprehensively’ on any subject is difficult with or without limits. ...»
The Open Source Movement: Implications for Education
By Alec Couros
To have written ‘comprehensively’ on any subject is difficult with or without limits.
Similarly, to write comprehensive papers regarding such complex and diverse
topics as I have before me, and to limit myself to 20 pages per topic, is certainly
a formidable task. Obviously, I have had to make choices on what content I should include, and what I should not. And these choices were never easy.
However, I am hoping that these essays will serve as a launching point into describing what I know now, and what I hope to learn in the future.
The state of the open source movement and the activities that arise from it have shifted and continue to shift before me as I write these essays. While these ideas seem to be constantly reshaping, they are no less interesting to me than they were at the beginning of this journey. The open source movement has become more than just a better way of writing software. The open source movement can be seen as a culture, an ideology and a better way for humans to work together on shared pursuits.
re: Format This entire paper was written using open source and free software. Open Office Write (part of the Open Office Suite) was used as an alternative word processor to Microsoft Word. LaTex was used as the typesetting tool for the purpose of transforming the raw, unformatted document into a consistent format and in converting the finished text into PDF form. Additionally, open source tools are being used to serve this document to an online audience at http://www.educationaltechnology.ca/couros. The operating system of the host server is Linux-based, the web server is Apache and the content management system is driven by Moveable Type. Again, all of these tools are either open source or available for free.
However, I don’t believe that these facts alone should be utterly remarkable. In the past several years, open source tools have become more widely accepted by business groups, educational organizations and consumers, and open source thought is slowly emerging into mainstream culture. Yet, what I do believe to be remarkable is the process in which such tools came to be. Through often informal and spontaneous cooperation, viable alternatives to the products of proprietary giants (e.g., Microsoft, Novell, Oracle) have brought forth a revolution of choice, quality and customizability. And, what is perhaps more important here is the understanding and acknowledgment of the collaborative and creative processes, and spirit, that brought about these changes. It is my hope that in better understanding the complexities of the open source movement, insight can be drawn for the purpose of developing collaborative, innovative communities within the educational context.
b) Describe the sources and nature of the data that might be collected regarding this movement that might be found on publicly accessible listservs, discussion groups and other Internet-based communities.
Starting at the “Source” Before the term “open source” can be understood as the foundational idea behind a socio-political movement, it should be first described at the fundamental technical level. It is my assumption that before one can begin to understand open source in the larger context, it is important to have a basic comprehension of the term “source” and to understand other essential terms such as hardware, software and programming languages. While one may argue that such information is best left for an appendix, I believe that a basic understanding of the technical aspects of open source will allow readers to better understand the context and history of the open source movement.
In acknowledging the technical characteristics of a movement which originates from early computing, there is an important distinction to be made between the terms ‘hardware’ and ‘software’. Hardware is typically described as including the physical components of a computer (e.g., keyboards, monitors, hard drives, etc.). These items are usually fixed and less modifiable (by end users) than software. Software, in contrast, includes programs, codes and routines that control the overall operation of the hardware components. Software programs, which include subsets of codes and routines, are most easily written through the assistance of programming languages. A programming language is an artificial language that assists in enabling programmers (human software developers) to write instructions or codes that, once compiled, will be executed by the hardware. Examples of today’s popular programming languages include C++, Java and PERL.
The relationship between hardware and software is also important.
Programming languages allow a bridge between the human developer and the control of the hardware, but written code from any programming language must be compiled or translated to binary machine code (0’s and 1’s) for the hardware to ‘understand’ and execute the commands. In other words, code written by human programmers must be converted to binary code, and once this conversion is complete, the code is only readable by computers.
Source or source code includes the actual text written by programmers in any number of programming languages. To other programmers, this code is readable and understandable. When code is in the source form, programmers are best able to understand how code works, how code may be improved or as often the case, how errors in code can be addressed. However, once the source code is compiled to machine language, it is very difficult or impossible to work with the code to make alterations or improvements to software (see Figure 1 below).
Figure 1: Steps in the conversion of human thought to machine code. Unless developers make source code available, the code is almost always impossible to retrieve, modify or improve.
Today, most software is either developed as proprietary (closed source) or as open source. For instance, Microsoft Windows XP (and all other previous versions of Windows) is completely closed source. Only developers at Microsoft (or Microsoft designated third parties) are able to make any modifications to this operating system (software). Alternately, many distributions of the increasingly popular Linux operating system are available free of charge by download from various Internet sources. Due to the potentially drastic reduction in cost of systems running open source operating systems (e.g., Linux) versus proprietary operating systems (e.g., Microsoft XP), the open source economic model has begun to find favour with educators in both small and large-scale initiatives (see examples of School Division initiatives, notably the State of Maine and Kamloops School Division #73 at http://www.canopener.ca) Origins of the Free/Open Source Movement Although the term “Open Source Software” has only recently claimed widespread use, this phrasing originates in the American “hacker” culture of the 1960’s and 70’s. More specifically, the practices behind the term are attributed to key individuals working in the computer science laboratories of Stanford, Berkeley, Carnegie Mellon and MIT. Such individuals include Eric Allman, the inventor of “sendmail”, the open source program that is in part responsible for email to move from sender to receiver (you may not have heard of Allman, but if you’ve used email, you’ve used his invention). Ken Thompson, who moved from Berkeley to work with Bell Labs in 1969, is also another key individual and the inventor of Unix.1 Dennis Ritchie, who worked with Ken Thompson on the Unix project, is attributed to developing C, one of the most widely used programming languages. While these individuals may not be household names, their work in computer science paved the way for the modern day connectivity we experience in our personal, academic and business class computing.
These individuals represent a few major developments of the era which hold continuing effects on modern computing. Yet, such advancements may not have been possible had it not been for the collaborative nature of the developing community. This pioneering community of programmers was small and closeUnix is still the most common multi-user operating system in the world and the basis for Linux and other popular open source (e.g., BSD-based Unix varieties) and proprietary (e.g., SCO Unix) operating systems.
knit. Throughout the software development process, code (source) passed freely between members on various projects. If an improvement was made to code, there was an expectation that this information was to be passed along to other members of the entire programming community. To withhold code was considered gauche, as it was to everyone’s benefit in the collaborative culture that the code was improved (Stallman 2000). However, the nature of this collaborative protocol was to take a turn by the end of the 1970’s as many developers were enticed to join commercial firms producing proprietary software.
Certainly the most profound and outspoken member of the Open Source Movement is Richard Stallman who began his computer science career as a Graduate student at MIT in 1971. While Stallman’s career began in an environment of collaboration, sharing and collegiality (as described above), his surroundings began to change in the early 1980’s as many of his former colleagues began to work for commercial companies, which sold primarily proprietary systems. In an interview with David Bennahum, Richard Stallman spoke about the origins of this practice as he recalled the actions of student programmer Brian Reed from Carnegie Mellon University in 1980. Reed, a computer science student who wrote a text-formatting program named Scribe, “surprised everyone by selling it to a company, instead of sharing it with the community. The company was very proprietary about it, and very obnoxiously put time bombs into it” (Bennahum, 1996, online). “The problem was that nobody censured or punished this student for what he did. He got away with it. The result was other people got tempted to follow his example” (King, 1999, online).
As ranks of programmers moved toward commercial pursuits, Stallman struggled to maintain a community of collaboration. Stallman disclosed, “I was faced with a choice. One: join the proprietary software world, sign the
nondisclosure agreements and promise not to help my fellow hackers. Two:
leave the computer field altogether. Or three: look for a way that a programmer could do something for the good. I asked myself, was there a program or programs I could write, so as to make a community possible again?” (King, 1999, online). It seems that Stallman chose to follow his third choice as he left MIT in 1985.
Shortly after leaving MIT, Stallman pursued his lost community and formed the Free Software Foundation (FSF). The foundations’ website (http://www.gnu.org) hosts community-developed, freely available software. In 1985, Stallman authored the GNU manifesto2, which called for other programmers/hackers to join a new project, which could potentially champion the benefits of sharing source code. GNU, perhaps Stallman’s most famous initiative3, is the most revered/used software package available from the foundation. GNU, a recursive acronym, stands for “GNU’s not Unix”. GNU is not one program but a collection of many complementary programs (e.g., compilers, editors, text formatters, mail applications, etc.) created through the GNU project.
GNU is the combined work of many programmers and developers, and was developed to be upwardly compatible with Unix. However, GNU was missing one key component to make it a complete operating system; the kernel. In other http://www.gnu.org/gnu/manifesto.html http://www.gnu.org/ words, GNU had all the separate components of a complete operating system, but was missing the central component that would mesh these parts together.
Enter Linus Torvalds and Linux.
The Rise of Linux and Other Open Source Giants In 1991, Linus Torvalds, a 21-year-old computer science student at the University of Helsinki posted the following message to the Internet newsgroup comp.os.minix.
From: torvalds@klaava.Helsinki.FI (Linus Benedict Torvalds) Newsgroups: comp.os.minix Subject: What would you like to see most in minix?
Summary: small poll for my new operating system Message-ID: 1991Aug25.205708.9541@klaava.Helsinki.FI Date: 25 Aug 91 20:57:08 GMT Organization: University of Helsinki
Hello everybody out there using minix -
I'm doing a (free) operating system (just a hobby, won't be big and professional like gnu) for 386(486) AT clones. This has been brewing since april, and is starting to get ready. I'd like any feedback on things people like/dislike in minix, as my OS resembles it somewhat (same physical layout of the file-system (due to practical reasons) among other things).
Although seemingly an insignificant request, Torvald’s posting, and others like it that followed, spurred the collaborative creation of what was to become the Linux kernel, the central component of the Linux/GNU operating system.4 Although Linux, as software, has been revered as a viable (and free) alternative to Windows, what I believe to be more significant lies in the collaborative manner in which Linux was developed. Raymond (1999) writes, “The most important feature Note: Technically, Linux is not a complete operating system in itself, but refers to the kernel. The kernel is an essential part of the operating system, however, and is the core that provides basic services for all other parts of the operating system. Without the Linux Kernel, GNU was an incomplete operating system.
For an excellent technical description of how Linux and GNU coexist, see Fink, 2003, Chapter Two.