FOSS Network Infrastructure and Security/Introduction to FOSS and GNU/Linux

Free/Open Source Software edit

Free/Open Source Software, or FOSS, is software that is liberally licensed to grant users the right to study, change and improve its design since its source code is made available. The definition of free software, as enunciated by the Free Software Foundation, states that four essential freedoms should be contained within its license:

1. The freedom to run the program for any purpose;

2. The freedom to study and modify the program;

3. The freedom to copy the program so you can help your neighbour, and

4. The freedom to improve the program and release your improvements to the public, so that the whole community benefits.

Freedoms 2 and 4 require access to the source because studying and modifying software without source code [1] is extremely difficult and highly inefficient since humans cannot usually understand machine code or object code. The Open Source definition published by the Open Source Initiative states that:

1. The license should not prohibit free redistribution;

2. The program must include source code and must allow distribution in source code as well as compiled form;

3. The license must allow modifications and derived works, and must allow them to be distributed under the same terms as the license of the original software;

4. The integrity of the author’s source code and reputation must be maintained by requiring derived works to carry a different name or version number from the original software;

5. The license must not discriminate against any person or group of persons;

6. The license must not restrict anyone from making use of the program in a specific field of endeavour;

7. The rights attached to the program must apply to all to whom the program is redistributed, without the need for execution of an additional license by those parties;

8. The rights attached to the program must not depend on the program being part of a particular software distribution;

9. The license must not place restrictions on other software that is distributed along with the licensed software; and

10. No provision of the license may be predicated on any individual technology or style of interface.

Some examples of FOSS software include: the Linux kernel, GNOME Desktop and Free Berkeley Software Distribution (FreeBSD). The most well known and popular FOSS licenses include: GNU General Public License (GPL), GNU Lesser General Public License (LGPL), BSD license, Apache License, MIT License and Mozilla Public License. For more information on FOSS, please refer to FOSS: A General Introduction by Kenneth Wong and Phet Sayo.[2]

GNU/Linux edit

GNU/Linux (also known as Linux) is a computer operating system. It is one of the most prominent examples of FOSS development. Initially, GNU/Linux was primarily developed and used by individual enthusiasts. Since then, GNU/Linux has gained the support of major corporations such as IBM, Sun Microsystems, Hewlett-Packard, and Novell for use in servers and is becoming popular in the desktop market. Proponents and analysts attribute this success to its vendor independence, low cost, security, and reliability.

In 1983, Richard Stallman founded the GNU Project. The goal of GNU was to develop a complete Unix-like operating system composed entirely of free software. By the beginning of the 1990s, GNU had produced or collected most of the necessary components – libraries, compilers, text editors, a Unix-like shell – except for the lowest level, the kernel. The GNU project began developing its own kernel, the Hurd, in 1990, based on the Mach micro-kernel. This Mach-based design subsequently proved difficult, however, and development proceeded slowly.

Meanwhile, in 1991, another kernel was begun as a hobby by Finnish university student Linus Torvalds while attending the University of Helsinki. Linux was further developed by various programmers over the Internet. In 1992, it was combined with the GNU system, resulting in a fully functional free operating system. The GNU system is most commonly encountered in this form, usually referred to as a ‘GNU/Linux system’ or a ‘Linux distribution’. This is by far the most popular variant of GNU. There are over 300 distributions based on GNU with the Linux kernel. Some of the most widely used are: Debian, Gentoo, Mandriva, Red Hat Linux, Slackware, SuSE and Ubuntu.

The Linux kernel was originally envisioned to be used on Intel 80386-based machines. While not originally intended to be portable to other architectures, Linux is now one of the most widely ported operating systems in the world, running on a diverse range of systems from the iPAQ to IBM System z9. Specialized distributions exist for less mainstream architectures. Linux is increasingly common as an operating system for supercomputers. In November 2005, the Top 500 List of supercomputers stated that the two fastest supercomputers in the world run Linux. Of the 500 systems, 74 percent run some version of Linux, including seven of the top 10.

The Linux kernel and most GNU components are licensed under the GNU GPL. The GPL requires that all source code modifications and derived works also be licensed under the GPL, and is sometimes referred to as a “share and share-alike” (or copyleft) license.

Network Operator’s Perspective on FOSS edit

All network operators need to provide a set of services for which they need reliable systems. Services such as web surfing, e-mail and Domain Name System (DNS) form the backbone of all network providers. Network operators also need scalability as the number of users grows, since they usually operate in a high volume business. This requires a reliable system which can be scaled up quickly and which can run services efficiently.

FOSS provides several advantages over proprietary software in terms of savings with regard to license fees, flexibility in installation and operation, and availability of source code that can act as reference implementations for the basic building blocks of Internet infrastructure. FOSS also reduces virus and security problems frequently associated with other software because of the possibility of public audit of source code. Finally, illegal copying of software is an increasing concern worldwide, and using FOSS ensures that you are always on the side of the law.

GNU/Linux for Networking edit

While there are other operating systems, like *BSD, and those that also provide access to source code, GNU/Linux is the most popular FOSS system in the world. From a networking perspective, the UNIX operating system is the pioneer in multi-user systems. UNIX and UNIX clones such as *BSD and GNU/Linux have been developed with network performance and security in mind.

In the past, most network systems relied on expensive hardware and proprietary UNIX platforms to get maximum benefits. With GNU/Linux, the same kind of benefits can be achieved on cheaper hardware. At the same time, the availability of the source code enables operators to create their own extensions and fine-tune the software to their own needs.

Also, most servers and programs that are required for network operations are available on GNU/Linux, and a lot of additional utilities are being developed constantly to provide added advantages.

BSD Alternatives edit

While GNU/Linux has received wide recognition in the past few years, there are alternative open source operating systems, mainly the different types of BSD: NetBSD, FreeBSD and OpenBSD. The BSD license is one of the most widely used licenses for FOSS. Many software programs are released under this license, including Apache and Berkeley Internet Name Domain (BIND). This license has few restrictions when compared to licenses such as the GNU GPL, and especially the default restrictions provided by copyright, putting it relatively closer to the public domain. Therefore, while preserving open access to the source code, the BSD license also allows the software to be used in proprietary software and products.

Footnotes edit

  1. Code written by a programmer in a high-level language and readable by people but not computers. Source code must be converted to object code or machine language before a computer can read or execute the program.