Starting from scratch
What goes in a lab?
An Edubuntu lab consists of computers, a lot of cables, a room to put them in, and software to make the computers do something useful.
Most of the computers are client workstations. They're the computers that are used every day by the lab users. One or two computers, however, are servers. They are locked away and normally only accessed via the network. The classroom server is by far the most powerful computer in the lab, and does all the work.
All the equipment in an Edubuntu lab is networked. For this, all the computers need a network card, which is connected to a network switch using a length of cable.
Lastly, the computers need software to run. The software falls roughly into two categories: the operating system software, and applications. All the computers in the lab run the Linux operating system (the workstations fetch their copy from the server upon startup). This enables the server to display the applications it is running for all the workstations on the screens of the workstations themselves, using the X Windows system, the graphical windowing environment used by Linux.
The applications installed in an Edubuntu lab are focused on an educational environment, and include software that is essential for general computer literacy such as word processors, spreadsheet and web browsers, as well as educational software that allows learners to practise skills (e.g. typing, arithmetic) and knowledge (e.g. spelling, geography). See Chapter 10, Open Source Educational Software for some examples. Besides these, an Edubuntu lab contains a great variety of programming languages, tools, texts and examples that can be used to teach programming and to study how existing programs work, all the way from first principles to systems architecture. Nothing is proprietary: you may examine the source code of every component in the system.
In the following sections, we'll look much more closely at how these parts fit together.
What is an Operating System?
In the earliest days of computers, a whole machine was built to do only one thing, for example numerical integration. There was no clean distinction between hardware and software, as aspects of the program might be reflected by physical switches and jumpers set on the machine itself.
As computers became more general, the same computer could be programmed to do many different things. All these programs, however, would still have to deal with the hardware aspects of the machine, writing to the printer, reading from the magnetic drum memory, and so on. Since these jobs needed to be done over and over and over again, the bits of code that dealt with them could be shared among all the programs that run on that computer. This shared code, the code that handles the basic tasks any program needs in order to run, was the beginning of operating systems.
Today's operating systems are complex, sophisticated systems, that can schedule many different programs to run at once, and that provide such a comprehensive range of services that many programs can be compiled to run on many different operating systems, regardless of the variations in the underlying hardware.
An operating system (OS for short) is the most basic layer of the software, and if your computer is switched on, the operating system kernel is the one program that will always be executing. It provides a framework for all the subsystems that make up the computer.
Imagine, for a moment, that a computer is like a ship. The physical hardware is the steel or wooden hull that floats. The operating system is like the officers of a ship, and its subsystems are like the captain, the first mate, the engineer, the cook, and so on. They see to it that the engine is running and that the ship is on an even keel.
All the other programs that run on the computer are like the rest of the crew and the passengers. The operating system manages the resources of the computer like the captain manages the crew of the ship. He maintains discipline, sees to it that the crew don't fall all over one another, that they do things in an orderly fashion, and keep everything shipshape.
If a program does something wrong (such as writing to memory that the operating system is using for something else. In the ship example, this is like making a hole in the hull!), the operating system lets the offending program know, shutting it down completely if necessary (it gets thrown in the brig).
<img src="illustrations/ch03/os_comic1.png" />
<img src="illustrations/ch03/os_comic2.png" />
What is Linux?
Linux is an operating system consisting of a kernel as well as all the thousands of libraries, tools and utilities that make it usable as a computing environment. The kernel was developed by Linus Torvalds, using the tools and utilities of the GNU project. Together, the whole system is called GNU/Linux. Some other common operating systems are the Unix family (including members like Linux, BSD, AIX, Solaris, HP-UX, and others); DOS; Microsoft Windows; Amiga; and Mac OS. An upcoming variety of operating systems, such as Symbian and PalmOS, run on cellphones. There are special-purpose operating systems wherever you look, far more than you would have suspected.
Linux is Free Software. So, not only is it OK to make copies of Linux and give them to your friends, it's also fine to fix things while you're at it --- as long as you also freely provide your modified source code to everyone else. When you're doing this, you're not just providing a freebie to the people who get your fixes: you're also exercising your right to influence Linux, and to change the way that you want it to work. In return for this right which has been granted to you, you must allow those who come after you the same freedom in making use of your work. The issue is freedom, not price.
Charging for Free Software
How can people build businesses on software if everything must be given away? Actually, you're welcome to ask money, but then people are paying for your expertise and services, e.g. assurances of support that you may give them. You may also provide added value, such as attractive packaging and shipping. Only the source code itself must be available at nominal cost.
Which operating system is best?
Our consumer culture puts huge stress on having "the best". Usually this means wearing some fashionable brand of jeans, or driving a fancy car. Obviously this is a very superficial measurement, and we have to look deeper when trying to compare operating systems.
It's important to remember that computer science is relatively young. No operating system has been in continuous use for longer than a single human lifespan. At the dawn of the computer age, there was a great explosion of diversity, like in the Cambrian period in prehistory, when different designs and architectures proliferated. This was succeed by a period of consolidation, with the result that today, even though the details "under the hood" may be very different, a great deal of consensus has emerged about the types of services an operating system should provide.
<img src="illustrations/ch03/os_joke.png" />
At the moment, the operating systems you're likely to encounter on desktops are to some extent interchangeable. Linux, Macintosh OS X and Windows all implement the POSIX standard to some degree, and software that was written to make portable use of the operating system's services may be compiled to run on all of them.
These operating systems can all do the same jobs, and you may develop skills that apply to other operating systems on any of them. Therefore there is no quick, objective answer to the question as to which one is "best". You have to forget that one, and ask a better question: "Which operating system is best for me?"
Well, of course that depends on who you are and what you need it for. If you're interested in Edubuntu then you probably don't have lots and lots of money, and you're probably interested in learning: learning about computers, yes, but also education in general. When answering this question for yourself, here are two things to keep in mind:
How does it impact the world I live in? The software you choose can influence many aspects of your life. For example, you need to ask: "Who controls the technology?" If you teach yourself to use a product that belongs to some company, you'd better hope that they don't go out of business.
Governments are also starting to use computers for tasks such as counting votes. During the previous two elections in America, there was great controversy about the results turned in by Diebold's vote counting machines. Diebold controls the software, and expects voters to take the trustworthiness of their software on faith. For matters such as this, democracies in the digital age must use open source software.
Current technical merit is only one measure. Even if something is imperfect now, if you can get at it, you can make it better and learn in the process.
For example, the open source program called the GIMP (the GNU Image Manipulation Program) goes head-to-head with Adobe Photoshop. At the moment, Photoshop still comes out pretty far ahead, but it has been under continuous development for a decade or more. Does this mean that aspiring designers should turn their back on the GIMP? If they do, they lose the things that the GIMP already gives them which Photoshop doesn't, such as the ability to write extensions in a variety of high-level programming languages, and to build on the contributions of the entire community of users.
What is a distribution?
"Distribution" is a term that emerged from the open source way of gathering and organising software for sharing: a coherent, well-maintained, up-to-date collection of software (especially on the scale of an operating system) is called a distribution.
In the following text, you'll be learning about the Edubuntu distribution. Other distributions include Debian, K12LTSP, and RedHat Fedora (for a more complete list of available GNU/Linux distributions, see http://distrowatch.com/).
As previously mentioned, Linux is the source code of an operating system being written by hundreds of volunteers who pursue their own goals and interests. It uses tools from other projects, such as the GNU project, and is used on a very wide range of machines, for widely varying goals. From this, you may imagine that it is a hugely complex system, and you'd be right. Assembling just the subset of code that is relevant to you, and compiling it to run optimally on the hardware that you happen to have, is a major undertaking requiring deep skill and experience. Keeping your system up to date with changes in disparate parts of the whole is a major undertaking in itself.
In order to have a manageable system, well-understood and reasonably easy to customise and keep up to date, groups of users began to band together to collect just the right combinations of software, and to coordinate this job. Some people built their business around the process of gathering, labelling, testing, documenting and marketing free software, for example RedHat and SuSE. Some communities assemble distributions that conform to their ideals; Debian, for example, operates in accordance with a Social Contract which maintains the same principles of good husbandry and mutual cooperation that prompted Richard Stallman to found the Free Software Foundation.
Edubuntu actually make uses of no less than three related distributions:
- Edubuntu is a modified Ubuntu distribution suitable for classroom use;
- Ubuntu itself is based on Debian GNU/Linux;
- The thin-client components of Edubuntu are based on K12LTSP, which in turn, is built on Fedora Core.
Where it all began
Academic computer science background
The idea of free software, with source code that could be shared by everyone, started in academia. In America, it was Richard Stallman at MIT, the Massachusetts Institute of Technology, who started the ball rolling, but the person who accidentally turned it into an avalanche was Linus Torvalds, a Finnish university student.
<img src="illustrations/ch03/stallman.png" />Richard Stallman
At MIT, Stallman had been part of a community of programmers that came to an end when their work was commercialised and access to the source code was restricted. To Stallman, this felt like having the air he needed to breathe cut off. Because Stallman believed strongly that programmers should be able to help one another by sharing their source code, he set out to write a complete free operating system. He began systematically, though, first setting out to write all the supporting tools that an operating system requires to work. This is a mammoth task, and in fact they're still busy refining better and better tools.
Linus Torvalds, in Helsinki, wasn't burdened with any such a sense of responsibility or thoroughness. He just wanted to make the most of the PC he had at home, which had an Intel 80386 CPU. The 80386 contained a memory management unit, which was big news at the time. The operating systems he had at his disposal didn't take advantage of this and he dearly wanted to use it, and so he started to write his own operating system. To do this, he used many of the tools created by the GNU project. After months and months of steady work, he released a very early version of the kernel that became known as Linux to the internet. To his surprise, other people started sending him fixes and improvements for his kernel, and eventually he found himself managing and coordinating a global community of programmers. All of them were using and improving Linux, and building on each others' work.
<img src="illustrations/ch03/linus.png" />Linus Torvalds
In a sense, the free software community that Stallman had known at MIT had risen anew, on a global scale. Their rallying point was a system made up of the Linux kernel, and the GNU development environment.
Open Source Software
The first one to think of a name for the kind of software that could be shared without restrictions on how you could use it was Richard Stallman. He called it Free Software, because he wanted to emphasise the freedoms that he valued highly enough to dedicate his life to writing a free operating system.
The Free Software Foundation supports the freedoms of speech, press, and association on the internet, the right to use encryption software for private communication, and the right to write software unimpeded by private monopolies. Stallman formulated a license, the GNU Public License, which uses the mechanism of copyright to protect these freedoms, and to add the responsibility of passing them on to other users of the software.
When Linux started to be noticed by business, and when it began to be marketed as a serious IT platform, this emphasis on freedom made some people uncomfortable. The argument was that people don't run their businesses in order to advance someone's freedom of speech --- they run their business to make money!
Instead of emphasising the freedom aspects so dear to Stallman's heart, more emphasis was placed on the fact that everyone had access to the source code of Linux. The programmer and writer Eric Raymond wrote some influential papers in which he argued that the Linux style of community development produced better software than the proprietary alternative. The choice for open source software could be made on a purely pragmatic basis. The critical factor, in his view, was the availability of the source code, and therefor he coined the term Open Source to describe this kind of software.
The contrast may be summed up in the sentence: "Open source is a development methodology; free software is a social movement." FSF
Neither one of these approaches encompass the whole truth, they simply emphasise different aspects of a rich sphere of human endeavour. The pragmatic approach taken by Edubuntu labs in the selection of software for inclusion leans more toward the open source side of the debate, but the Shuttleworth Foundation's goal of "social innovation" is in line with the FSF philosophy.
Various other streams exists. The BSD license of the FreeBSD project, for example, does not specify the responsibilities of the GPL, and allows code under the BSD license to be incorporated into proprietary software. For many years, for example, the Windows TCP/IP stack (see Section 8.4) was based on BSD code right up to the period of Windows 2000--- perhaps it still is?
Open Source Culture
As the open source culture matured, the principles of mutual education, self-sufficiency and sharing were applied to many things besides software. One of the first projects to bring the wider world of culture into the open source community was Project Gutenberg, a project to make available as many as possible public domain and freely redistributable texts at no cost. Due to recent changes in American legislation (which enables copyright holders to keep works out of the public domain forever), this essentially means works created before 1923. At the moment, there are more than 13,000 books available for download.
Another open source project is the Wikipedia, an online encyclopedia read and edited entirely by volunteers. The English edition, started in 2001, already has almost half a million articles. If your Edubuntu lab includes a Wizzy internet server, the entire Wikipedia can be made available on the Edubuntu lab network.
Larry Lessig, a law professor at Stanford, noticed the need to apply the open source principles of collaboration and sharing in other domains besides software, and set about crafting a flexible set of licenses that could be used to bring music, books, movies and educational material into the open source world. Since his project has as a goal the re-establishment of a commons, a area for the use of the community as a whole, to replace the endangered public domain, these licenses are called the Creative Commons licenses.
Why do people do this? There are many reasons, but I'll mention only one. Far more expensive than the recording of a song, or the writing of a book, is the task of promoting, printing and distributing it. Unless this task can be handed over to everyone who reads or listens, only large media companies are able to afford this cost. A creative commons license allows authors to publish work that the media companies are not interested in.
Open Source in education
Free Software can be a valuable resource in education, and can also promote the values of the GNU project, namely freedom and cooperation, in schools.
There are general reasons why all computer users should insist on free software.  It gives users the freedom to control their own computers --- with proprietary software, the computer does what the software owner wants it to do, not what you want it to do. Free software also gives users the freedom to cooperate with each other, to lead an upright life. These reasons apply to schools as they do to everyone.
But there are special reasons that apply to schools.
- First, free software saves money. Even in the richest countries, schools are short of money. Free software gives schools, like other users, the freedom to copy and redistribute the software, so the school system can make copies for all the computers they have. This is essential to help close the digital divide.
- Secondly, schools should help learners to build a strong society after they leave school. They should promote the use of free software just as they promote recycling and protecting your environment. If schools teach learners about free software, then they will use free software after they leave school. This will help communities to be more self-reliant, and will make them less dependent on big corporations who repatriate their profits to other countries.
- Thirdly, free software permits learners to find out how software really works. They can go and look at the source code to find out how the operations they use were implemented, and experiment by changing it.
Proprietary software rejects their thirst for knowledge: it says, "The knowledge you want is a secret --- learning is forbidden!" Free software encourages everyone to learn. The free software community rejects the "priesthood of technology", which keeps the general public in ignorance of how technology works; we encourage students of any age and situation to read the source code and learn as much as they want to know. Schools that use free software will enable gifted programming students to advance.
Here are pointers to a few of the organisations and projects that work to further the use of free software in education:
- The Debian Jr. Project is a custom Debian distribution. It aims to make Debian an OS that children will want to use, by studying the needs expressed by the children themselves. Their initial focus is on children up to age 8. Once this goal has been accomplished, their next target age range is 7 to 12.
Tux4Kids provides some great software packages for Debian Jr.
DebianEdu is about improving Debian to make it the best distribution for educational use.
- Because they believe that free and equal access to information technology is important in modern society, the Organisation for Free Software in Education and Teaching is actively promoting and developing free software for schools.
SchoolForge is an umbrella organisation or a communication channel for different groupings with the mutual goal to advance open resources at school.
- The Open Source in Education Project (OSiE) supports and advocates the use of GNU/Linux systems in the UK. This is just one example of a local project. Others exist in Germany, Italy, Latvia, Argentina, and many other countries across the globe.
What does this let us do?
Great, now we know what we have. What can we do with it? Three things:
We can start bridging the Digital Divide. An Edubuntu lab can provide access to information, books, music, news, and myriads of other resources. It can also provide new ways to communicate with your peers, near and far, and open channels of communication to organisations that may be hard to reach because they are far away or widely distributed.
<img src="illustrations/ch03/digital_divide.png" />
In order to manage this, we must build something sustainable, unbreakable and flexible. Instead of leaping ahead, for example by accepting an expensive lab that we cannot maintain, with proprietary software that we cannot study, we must build steadily from the ground up, so that we have a foundation that will last. To do this, we have to keep some things in mind:
- The components of the Edubuntu lab must be as cheap as possible. Use what's available, and make the parts generic and interchangeable. Use standards, for example TCP/IP for networking. (See Section 8.4.)
- The Edubuntu lab shouldn't require a permanent internet connection in order to access cultural goods, and enable participation in the culture. Especially in South Africa, a high-bandwidth internet connection is incredibly expensive. Wireless service providers are just starting to appear in the big urban centres, but even they cost hundreds of Rands per month, and that's for home users.
In this way, we foster self-reliance and create local expertise, while building an international community. In one of his essays, Richard Stallman writes about the importance of free software in developing local IT expertise:
Free software permits students to learn how software works. When students reach their teens, some of them want to learn everything there is to know about their computer system and its software. That is the age when people who will be good programmers should learn it. To learn to write software well, students need to read a lot of code and write a lot of code. They need to read and understand real programs that people really use. They will be intensely curious to read the source code of the programs that they use every day. - Richard Stallman
- Lastly, we can also save money. While it's essential to spend money on education, we have to make sure that the money goes as far as possible. By using only free software in Edubuntu labs, you save money in a couple of ways:
- There are no software license fees to be paid. The Linux operating system is world wide, stable, and FREE. In addition, for every Windows software product we have included a Linux alternative that looks for all intents the same. For example, a word processor (that can read Microsoft word document files, incidentally), a spreadsheet, a publisher, an HTML editor for creating web pages, a typing tutorial, etc.
By using free software and open file formats that you can read without needing expensive software, we save money for the community.
Whether they intend to or not, teachers make their learners' families buy proprietary software if they use it at school. By using free software that learners can take home, the school helps the community to save money.