FOSS Education/Teaching IT with FOSS
In the earlier sections we looked at the use of FOSS in the setting up of the IT infrastructure of educational institutions and its use in administrative functions. In this section, we examine the role of FOSS in the teaching of Information Technology. Most software currently used in teaching IT, including basic productivity software for teaching computer literacy, compilers for programming courses and relational database management systems, are proprietary. However, there are FOSS equivalents available that can be suitable replacements. In addition to the cost savings, there are other advantages to using FOSS in teaching IT.
Computer Literacy 
At the very basic level, teaching IT involves imparting computer literacy. Computer literacy means having acquired the skills to make use of a computer for common tasks. It implies competency in using common desktop applications such as a word processor, spreadsheet, email client and Web browser. The skills in Table 1 are considered essential.The order of the skills in the list is not indicative of their importance and will change with time as technologies change.The relative importance of skills also varies, depending on individuals.
Computer literacy should be taught not only to students in schools but also to university students, who may not have acquired these skills during earlier schooling. It is a common assumption that university students today should be computer literate and have the skills to use desktop applications for their academic work regardless of their field of study. In some universities, computer literacy courses are offered to ensure that the students have these skills. In others, there may not be formal courses and students are expected to learn on their own.Whatever the case, computer literacy programmes usually use the dominant proprietary software. Even at the lower education levels it is not uncommon to find students being taught to use Microsoft Windows and Office as a part of computer literacy courses.
|Table 1 IT Skills|
|1.||Setting up a personal computer|
|2.||Using basic operating system features|
|3.||Using a word processor|
|4.||Using a graphics and/or artwork package|
|5.||Connecting a computer to a network|
|6.||Using the Internet|
|7.||Using a computer to communicate|
|8.||Using a spreadsheet|
|9.||Using a database system|
|10.||Using instructional materials for new applications|
(Source: US National Research Council's Committee on Information Technology report) 
However, there are two problems with this method of teaching computer literacy. First, the skill in the use of a particular version of proprietary software is usually short lived. Even though it will be easier to learn how to use a new version of the software from the same vendor (relative to learning an entirely new software), re-training will still be necessary unless the user has the ability to self-learn. A different approach to teaching computer literacy should be used in order to equip students with the ability to learn, unlearn and relearn. The emphasis should be on generic skills that should not be dependent on software from a specific vendor.
The second problem with using specific proprietary software in the computer literacy curriculum is that it encourages illegal copying of software. Students need to use the same software which is available in their schools or universities for doing their homework and assignments, leading many of them to use illegal copies at home or on their laptops. Schools and institutions with financial constraints may even use illegal copies of proprietary software in their enthusiasm to provide computer literacy training to their students.
In teaching computer literacy it is not important which operating system, word processor, email client, Web browser and spreadsheet are used. GNU/Linux, together with appropriate Graphical User Interface (GUI) such as GNOME or KDE, is a FOSS operating system that can be used to teach the basics of operating system features.
OpenOffice has word processor, spreadsheet, presentation and drawing programs that can replace the proprietary equivalents. It should be sufficient for teaching the basic features available in office productivity software. Other FOSS such as the Abiword word processor or the Gnumeric spreadsheet can also be used in a computer literacy curriculum if necessary.
To teach students how to access the Web or to use email, the FOSS application Mozilla can be used. Again, the features of Mozilla are comparable to the browser and email client that come together with Windows and should be sufficient for use in a computer literacy curriculum.
The FOSS database systems MySQL and PostgreSQL are full-featured and can certainly be used to teach the basics of database systems. The GUI available for these databases may not be as user-friendly as the proprietary equivalent but it should not be an obstacle to learning the basic principles.
Michael Surran, a Computer Science teacher in the US, states the following:
People sometimes ask me, "Is teaching our students Linux preparing them for the workplace?" This question is based on the fact that Microsoft is the current dominating presence in operating systems and office software. It is a question I have thought over a long time, and the answer I always come up with is, "Yes, most definitely." The basic principles of any type of operating system, office application or other similarly grouped software are the same. A student who becomes proficient in Linux will not find themselves (sic) lost in a Windows environment.I have found Linux to be the more advanced of the two operating systems, yet our students are very quickly and easily learning it. The process of copying a file or formatting a paragraph is not so different between one operating system and the other.
Using FOSS software as the basis of the computer literacy curriculum also results in cost savings for the school or university. It obviates the need to ensure that sufficient licenses are purchased as FOSS software can be legally installed in as many computers as necessary. Students can also install the FOSS software in their own computers without restrictions, and illegal copying of proprietary software is not necessary for their academic work outside the school or university's premises.More importantly, it would encourage placing emphasis on the teaching of the basic principles and concepts and avoid narrow exposure to proprietary software from specific vendors.
However, it may be necessary to train teachers and lecturers in the use of Linux and FOSS before they can be competent to conduct classes using these software. Modification of the curriculum is necessary and some effort will have to be put into developing suitable teaching materials.
Computer literacy is usually the main focus of teaching IT to students in schools. This would equip them with the ability to use computers to enhance their learning, access the Internet, use email, and so on.
But as emphasized earlier, this should not be confined to teaching students to use specific proprietary software.Students who have not been exposed to computers are likely to be more receptive to Linux and FOSS and it would be desirable to start using FOSS as early as possible.
For example, for pedagogical reasons FOSS was introduced in some non-governmental schools in Australia. The students in these schools developed the ability to use IT without assuming that computing can be based only on one predominant computing platform. Teachers at the Sydney Church of England Girls Grammar School deliberately expose students to more than one suite of office applications, giving them the opportunity to use both FOSS and proprietary software and increase their understanding of the principles of these applications. 
Apart from using FOSS for teaching IT, there is a lot of FOSS available that can be used to teach non-IT subjects in schools. Some of these have been mentioned in Chapter 2 and the online resources for such educational software are also given.
Higher Education 
Learning how to write computer programs is invariably a part of Computer Science or Information Technology programmes. It is often taught to students in other disciplines as well, since it may be necessary for them to develop some computer programs for their projects or research work.
At a fundamental level, the choice of programming language to be used as the basis for teaching programming concepts is not important. There are numerous computer languages available on the Linux platform that can be used for this purpose. The GNU Compiler Collection (GCC) is a collection of programming language compilers that is included in most Linux distributions. It currently supports computer languages such as C, C++ and Java. Work is in progress to include other languages such as Pascal and Cobol. There are also other computer language compilers available, for example, dialects of BASIC language.
Many educational institutions currently base their programming courses on the Windows platform, resulting in a dependence on proprietary programming tools. These tools are usually in the form of an Integrated Development Environment (IDE) that simplifies some of the tasks involved in programming. However, there are IDEs available for the FOSS platforms such as KDevelop ( http://www.kdevelop.org ), and these can be used instead of the proprietary tools.
Availability of Source Code 
At the more advanced level, the teaching of programming will be facilitated by the availability of source code of FOSS. The best way to learn how to write good computer programs is to study what has been written by others, especially real-life high quality programs. Take writing a novel: a writer cannot be expected to write a good novel if he/she has not read numerous works of others. In contrast, programmers are expected to write programs by just mastering the syntax and construction of a particular computer language without having much opportunity to study good code written by others.
In the past there was a lack of real-life high quality source code available for all to look at and to study.The source code of proprietary software is protected as a trade secret and is seldom released publicly. FOSS has made available the source code of thousands of programs, some of which are market leaders in their particular segment. The importance of the availability of source code of FOSS and its vital role in building capacity in software development is still not widely recognized.
Most users of FOSS do not have an interest in looking at the source code and neither is it necessary for them to do so. However,where students are being taught programming,the availability of the source code should be utilized to enhance teaching and learning. For example, in programming projects undertaken for IT courses, students can be encouraged to study the available source code and to build on it by adding features or making improvements. If they are sufficiently prepared, they can even participate in various FOSS projects such as those hosted on Sourceforge.net by submitting their code contributions.
Programming Languages Used in FOSS 
Although at the basic level it is not important which programming language is used as the basis of teaching, at the more advanced level institutions should teach students languages relevant to their future work. If there is a likelihood that students who take up a career in software development will be involved in FOSS projects, then the curriculum should be designed to take this into consideration.
|Table 2 Computer languages used in FOSS projects|
|Programming language||Number of projects||Percentage of projects|
(Source: http://sourceforge.net )
Many more languages are being used to develop FOSS. We have included only the top few in the list above. C and C++ are predominantly used in FOSS projects. However, the use of Java, PHP, Perl and Python is growing. C and C++ are already commonly taught in the traditional Computer Science curriculum.With the growing importance of Java, PHP, Perl and Python, there should be an increased effort to include these in the IT curriculum.
Software Engineering 
FOSS Development Methodology 
With the increased importance of FOSS, the teaching of software engineering should be modified to take into account the processes and methodology used in developing FOSS.
In his essay "The Cathedral and the Bazaar", Eric Raymond describes the characteristics of FOSS development and explains the metaphors he used to compare the methodologies used in traditional software development (cathedral model) and FOSS development (bazaar model) as follows:
I believed that the most important software (operating systems and really large tools like the Emacs programming editor) needed to be built like cathedrals, carefully crafted by individual wizards or small bands of mages working in splendid isolation, with no beta to be released before its time.
Linus Torvalds's style of development-release early and often, delegate everything you can, be open to the point of promiscuity-came as a surprise. No quiet, reverent cathedral-building here-rather, the Linux community seemed to resemble a great babbling bazaar of differing agendas and approaches (aptly symbolized by the Linux archive sites, who'd take submissions from anyone) out of which a coherent and stable system could seemingly emerge only by a succession of miracles.
A FOSS project tends to be initiated as a result of the needs of the developers. They will then develop the software to a stage where it is usable with the basic functionalities before releasing it to the community as an Open Source project. The programme may be bug-ridden, incomplete and poorly documented.But it must at least run and convince potential contributors that it has the promise of evolving into a good piece of software in the near future. This will attract other developers interested in solving the same problem to contribute to the project.However, it is not always the case that the development starts from scratch. In fact, many of the successful projects such as Apache are built on existing partial solutions. It should be noted that a project cannot be initiated from scratch in the bazaar mode.
Unlike a proprietary software project, a FOSS project is released as soon as it is usable. Updated versions are released whenever there are modifications to the software. "Release early, release often" is an important characteristic of a FOSS project. By doing so,many more users can participate in the testing of the software under varying conditions. If there are any bugs, they will be quickly discovered and fixed. The availability of the source code allows the users to be co-developers in the sense that they can fix the bugs instead of only reporting them. In contrast, for proprietary software it takes much longer for the small group of paid developers to fix the reported bugs through a beta-testing process.
This model of development is not entirely without structure, especially for the larger projects. For example, Linux has a hierarchical structure based on the delegation of responsibilities by Linus Torvalds to different people.They each have the responsibility and authority for different parts of Linux, although Linus Torvalds will always have the last word.The high degree of modularity of FOSS projects has given rise to a specific organizational and decision-making process. Generally, the FOSS development model tends to be more informal, since the developers perform their tasks voluntarily and for no direct financial gain.
It is now quite common for FOSS projects to rely on tools for issue tracking, source code management, design, automated testing and packaging and deployment. The concurrent versions system (CVS) is the most widely used version control system in open source projects. Its features include a central server containing the latest versions of the software that makes them accessible to anyone over the Internet. The CVS can be configured to send email notifications to project developers whenever changes are made so that the new source code can be tested and reviewed. Bugzilla was developed for use in the Mozilla project for issue tracking and technical support. It is now used in many FOSS projects.
The FOSS development methodology is different from traditional software engineering in many ways. Some researchers who are studying it have found that FOSS development methodology "can be faster, better and cheaper than the textbook software engineering often used in corporate settings." However, they have not concluded that very large and complex software applications customized for a small market, for example, the aviation industry, can be developed using the FOSS model; for these the traditional software engineering approaches may still be required.
- "Being Fluent with Information Technology", U.S. National Research Council,Committee on Information Technology,National Academy of Sciences, 1999.
- Surran, M.,"Linux from Kindergarten to High School", Linux Journal, February 2003; available from www.linuxjournal.com/article.php?sid=6349.
- Moyle, K., "Open source software and Australian school education", August 2003; available from www.educationau.edu.au/papers/open_source.pdf.
- Raymond, E., "The Cathedral and the Bazaar", 2000; available from http://catb.org/~esr/writings/cathedral-bazaar/cathedral-bazaar/ .
- Hart, D., "Faster, Better, Cheaper: Open-Source Practices May Help Improve Software Engineering", NSF press release, NSF PR 03-132, December 2003.