Part I - The Internet's Background

The basic concept behind the Internet is to have a distributed, decentralized communication network that can continue to function even with the loss or addition of nodes.

I A - Definitions

I B - The History of the Internet

1957 - U.S. Advanced Research Projects Agency (ARPA)


1969 - ARPANET (1965 - 1969 planning & design)


1986 - NSFNET


1991 - WWW & Gopher


1995 - NSFNET back to research


1996 - Internet2 research only network


Part II - Related Concepts

II A - Layers of Layers

Both the Internet and the systems that run it are built up in independent layers.

Network layers - Open Systems Interconnect

Open Systems Interconnect is a model which allow communication largely independent of software and hardware. Each layer of communication only needs to interact with adjacent layers making it easy to replace, modify, or upgrade any given layer without having to redo the whole stack. Or that one layer can be produced by one company, organization or consortium and another layer by a different one.

Layer Description
7. Application authentication, privacy, data syntax requirements
e.g. telnet, ftp, http, stmp, ntp
6. Presentation transforms from application to network format, and vice versa
e.g. encryption
5. Session sessions for stateful protocols
4. Transport hides lower layers, ensures complete data transfer
e.g. TCP, UDP
3. Network routing, flow control, error control
e.g. IP
2. Data link actual physical signal
e.g. Ethernet
1. Physical electrical, optical, and physical specifications
e.g. voltages, cable and connector types (RS-232, RJ-45, 10BASE-T, T3)

In theory there are 7 layers, but in application it is common that several are merged.

Simplified example:

web browser
socket
kernel
driver
peripheral
router
fiber
router
peripheral
driver
kernel
socket
web server

It is also common to joke about two or three additional, unofficial layers. The 8th, 9th and 10th layers being the financial, political and religious layers.

Layers in Unix and similar systems

Unix and similar operating systems play an integral role in the development of the Internet.

First and foremost, these are modular and designed from the beginning to operate in a networked, multi-user, multi-tasking environment. The philosophy is to create small, often simple tools, that can be combined in many ways to perform often complex tasks. A tool should be as simple as needed, no more no less.

Selected operating systems

Below is a very abridged list of some common operating systems found around the Internet.

AIX
BSD/OS
Darwin
Debian GNU/Hurd
Debian GNU/Linux
Debian GNU/NetBSD
FreeBSD
GNU
GNU-Darwin
HP-UX
IRIX

Linux
Macintosh OS X
Macintosh OS X Server
MicroBSD
Minix
NetBSD
NeXTSTEP
Open UNIX
OpenBSD
OpenServer

OPENSTEP
OS/390 Unix
Plan 9
QNX
QNX/Neutrino
Solaris
SPIX
SunOS
Triance OS
Tru64 Unix
Unicos


Because these systems are modular, it is possible to borrow good ideas or take out unneeded parts. See the Unix Timeline for more details about how some of the below have evolved. Over time, bad ideas have been dropped, and good ideas spread. In other cases, some systems have become specialized, and others have become generalized.

Or parts can be replaced. For example when most people refer to a "Linux" distribution, they usually mean all of the tools, most of which come from the GNU project. In that case, the jjj

Some systems, like QNX, specialize in reliability so with the proper hardware they can run with no restarts, reboots, or crashes (neither scheduled nor unscheduled) for 5, 10 or more years. This is what you want controlling your airplanes, subways, ships, telephone networks, hospital equipment and other essential services. There is no excuse to use these essential services for a testing ground for unfinished products, no matter how good the marketing.

The Netcraft Uptime Survey lists how long some of the more popular web sites have been running uniterrupted. It offers several views like ISP avg.

Operating System Layers

Like the OSI model, each of these operating systems is built up in layers, with the most basic, essential tasks at the center. Each layer only needs to communicate with adjacent layers, in that way any individual layer can be replaced, modified, or upgraded as desired. This also contributes to the overal robustsness of the system making it both more stable and more secure.

The kernel is the heart of the system. It can contain just barely the bare essentials or everything up to an including the end-user programs and interface, depending on the philosophy and goals of the designers. Here as elsewhere, there the fewer things there are, the less likely that one of them will go wrong. And, as with other things, the simpler it is, the less likely it is to go wrong in the first place. Thus, some systems use what is called a microkernel.

Operating System Layer
User interface (optional)
User applications
Operating system services (optional)
System calls Kernel
Kernel services (Microkernel)
Device drivers
Hardware

Everything is a file, which makes things easy to deal with. Programs are simple enough to accomplish their task and given just enough access to be able to accomplish the task, making for a secure system.

The hardware layer - Architectures

CPUs are designed and optimized for different specialties, e.g. speed, timing, simple instructions, low power, etc. The CPU in your microwave will not need the same capability as the one in your mobile phone, nor as in your notebook, PDA, or desktop machine.

Some common, and a few once common but now famous, CPUs include 650x, Z80, x86, PPC, Itanum, SPARC, Alpha, Opteron, and ARM. As with everything else, it is a matter of finding the right tool for the job rather than a one-size-fits-all philosophy.

For example, the Debian distribution can choose to run on 11 different architectures, and can choose from either Linux, Hurd or BSD kernels. OpenBSD can run on 14 different architectures, and so on. Either can be optimized for special tasks, have unnecessary parts removed, or extra tools added.

For example:

Being able to choose to run the operating system on more than one architecture gives a lot of power through flexibility.

" Many people don't realise that when the computing age started it was just considered natural to share your source code with other people, just like the academic community shares ideas via journals and scientific collaboration. "
- Andrew Tridgell (samba / rsync)
http://www.zdnet.com.au/newstech/os/story/0,2000048630,20280072,00.htm

II B - Open and Closed

As a development methodology most work related to the Internet is done similar to traditional scientific method and scholarly publication. An idea, in the form of a program, algorithm, or routine, can be spread, used, simplified, or built upon by others. A few decades ago, this mostly went without saying. Now it is stated explicitly.

II C - Development models

Open source can also be thought of as a development model, which follows closely scholarly research and publishing. Ideas and improvements are discussed and shared freely, so that less time is spent re-inventing the wheel and more time spent making progress.

A corresponding metaphor from Finnish culture is talcoot.

Another advantage is the short turn around time for patches and bug fixes. In comparing MSIE and IIS vs Mozilla and Apache, the latter have had fewer problems and those problems have been solved faster and often are less severe. The former have had known problems for months and in some cases years without being addressed.

It is also possible to start new projects from old, or share good ideas. The *BSDs are a good example. FreeBSD, OpenBSD, and NetBSD all have a common ancestor, but different priorities. NetBSD's focuses on portability, that is having it run on every piece of hardware imaginable. FreeBSD's concentrates on performance, scalability, managability, robustness. OpenBSD specializes in security, with only two remote holes in the default install in over 7 years. When improvements and breakthroughs get established and then polished in one branch, they quickly percolate through the others.

II D - Licenses

For a while, peaking in the mid 1990's, we were starting to see many desktop applications and systems, and even a few servers, where the innerworkings were kept hidden by the creator. One of the core differences between open and closed models is the license by which people are encouraged or restricted from using, distributing, modifying, or analysing the software.

Prior to the late 1990's, the main open source licenses were the GPL, LGPL, BSD, and MIT. Since then Mozilla, Apache and dozens of others license variations.

Free Software (1984)

Free Software is a specific type of idea, stemming from the GNU project, founded in 1984 by Dr. Richard Stallman while at the MIT AI lab. The idea is to have a license that encourages collaboration.

The GNU Manifesto was written by Richard Stallman and published in Dr. Dobb's Journal of Software Tools Volume 10, Number 3, March, 1985 It outlines the goals and objectives of the GNU project.

"Free software is a matter of the users' freedom to run, copy, distribute, study, change and improve the software. More precisely, it refers to four kinds of freedom, for the users of the software:

A program is free software if users have all of these freedoms."

From The Free Software Definition

Those 4 freedoms are encoded in the GNU Public License (GPL). The main bone of contention which differentiates the GPL from other open source licenses is that if the code or modifications to the code are distributed, then the source code or modifications must be part of that distribution. Distribution is not obligatory, but if it is done, then it must include the source code.

Open Source Initiative (1997)

The principle is more general than those the GNU project. When developers can use, read, copy, change the source code, the software improves at a rate much faster than capable in the close source model.

From the Open Source Definition

Open Source Mimics

Looking at the code is not the same as being able to change and compile it. One cannot trust code that one did not create. This was proven and illustrated by Ken Thompson in his article "Reflections on Trusting Trust" from Communication of the ACM, Vol. 27, No. 8, August 1984. For example, in order for a government, agency, or business to guarantee that a program is free of backdoors or other compromises, not just the code must be available, but also the tools and operating system needed to compile that code must be gone over by hand.

Open Standards

Open standards are considered even more important to a good future for the Internet and computing as a whole. Open standards are very good for, but does not require, open source.

Some famous open standards

TCP/IP
Prior to TCP/IP there were many small internets. However, there were financial an bureacratic obstacles to expansion.
SMTP - simple mail transfer protocol
Allowed the growth of e-mail.
HTTP + HTML
The web developed on top of the Internet (TCP/IP), but took of not just because the sever and client were free, but because HTTP and HTML were free for anyone else to use in their programs as well.
NTP - Network Time Protocol
Kerberos - authentication protocol
Used in many universities and products. Assumes that the network itself is insecure.
LDAP - Lightweight directory access protocol
FTP - file transfer protocol
XML / SGML
Z39.50 - Search and retrieval protocol
Allows multiple library catalogs and databases to be searched at the same time. Custom clients can be made, so that a familiar interface can be used even when searching in a foreign catalog.

Relevant open standards

ogg vorbis
ogg theora
dirac

Use of Open Standards

"To attain interoperability in the context of pan-European eGovernment services, guidance needs to focus on open standards.

The following are the minimal characteristics that a specification and its attendant documents must have in order to be considered an open standard:

From the conference, Open Standards and Libre Software in Government, 18 Nov 2004, The Hague, The Netherlands.

II E - Motives

Economic Benefits

Eric S. Raymond summarizes benefits on a general level.

1. Buyers like being in a commodity market. ie. where sources of products and services are interchangeable. Sellers dislike it.
2. Commodity services and protocols are good for customers; they're less expensive, they promote competition, they generate good choices.
3. "De-commoditizing" protocols means reducing choice, raising prices, and suppressing competition.
4. Therefore, for Microsoft to win, the customer must lose.
5. Open source pushes
indeed relies upon
commodity services and protocols. It is therefore in harmony with consumer interests.

From Halloween I, 1998

Again, it is useful to point out that there were many networks in the 1960's and 1970's, but these could not take off because their protocols were proprietary.

MS on OSS:

From Halloween I, 1998

Independence

The word "Free" is usually used in the meaning of liberty rather than price. As one South African wrote in a discussion forum, that freedom is a primary benefit in and of itself. It would be ridiculous to talk of either an apartheid or free state as having a higher or lower cost.

Independence can be in the form of better licensing conditions, like Ernie Ball Guitars has done.

Or it can be independence from a given architecture.

Security

In addition to Ken Thompson's article above, there is also the issue of peer review. The more people using, examining or even auditing auditing the code (OpenBSD does that) the higher likelihood that a problem will be spotted.

And there is fast turn around time for bugs with more people. e.g. Apache has sometimes issued patches within hours of being notified of a problem, and when the issue goes for some days a temporary work around is describe.

Rapid Development

Rapid Development - e.g. OpenBSD, Cost - MS Select Flexibility -

Part III - Resources available

 

III A - Tools available

Toolkits

Programs that run on Linux, BSD, Macintosh, MS-Windows and a few others can be written using qt or gtk+.

Desktops

Overgeneralized here for the sake of simplification and lump several things into this category:

Applications

Proxy / cache
Web browsers
Calendars
Chat / instant messaging

GAIM, Jabber, ChatZilla

Drupal

Plone (Comp. Assoc.),

Zope (Computer Assoc)

Abiword

OpenOffice.org, http://www.openoffice.org/

III B - Selected Examples

Just to give an idea how much work has already been done and can be added to any of your projects, here are some selected examples:

For more, see Freshmeat or recently released GNU software.


Part IV - The Internet as a tool in libraries

So, what was the meaning of parts I - III?

Their meaning is to show that there is the option to use and combine many pre-existing peices to solve library problems and create new services. There is also the liberty to copy, customize or improve these pieces.

Knowing about the tools is more important for librians than knowing how to build with them. These tasks would require collaboration with colleagues in computer science or similar fields.

These seemingly complex results are built of modular building blocks. It's possible to hire someone or a project to complete a task you don't have the time or skill for and that there are many other options beyond the ones below.

Q: Web server

Combine an OS (e.g. BSD or Linux) and install a web server (e.g. Apache or other, smaller ones)

Q: Web interface to library catalog

Add a Z39.50 client to your web server, like YAZ from Indexdata.

Q: Kiosk or public terminal on a really old/cheap machine

Install a desktop system (KDE, Gnome, Fluxbox, etc.) and strip out all the parts that aren't used or needed.

Q: Need a customized catalog

Modify Koha or Greenstone.

Q: Need an online reference service

Customize RT (Request Tracker) or a similar tool. Or write a new one.

Q: Need to hide subscription database passwords from public

Use a proxy like Squid.

Q: Restrict access to logged in users

Use OpenLDAP + Kerberos

Q: Share work files on a server

Look at Samba, AFS, or Netware (not OSS ... yet)

Q: Personal web pages

Combine the last example, file sharing, with the first one, a web server. i.e. the web server and the web server where they have access to eachother.


References

Brooks, Frederick P. The Mythical Man-Month, Anniversary Edition : Essays on Software Engineering. 2nd edition. Addison-Wesley Pub Co (1995). ISBN-0201835959
Note: See especially Chapter 2 "The Mythical Man Month", Chapter 3 "The Surgical Team", Chapter 11 "Plan to Throw One Away", Chapter 14 "Hatching a Catastrophe"

Daffara, Carlo (ed.) & González-Barahona, Jesús M. (ed.) Free Software / Open Source: Information Society Opportunities for Europe? Working group on Libre Software. April 2000. Version 1.2
URL: http://eu.conecta.it/paper/paper.html

Culture

The September that Never Ended
http://www.catb.org/~esr/jargon/html/S/September-that-never-ended.html

Patrick Maslen Control, Change and the Internet. Honors Thesis. Final draft, Oct 1996.
URL: http://home.vicnet.net.au/~qbird/cci-intr.htm

Goals

Himanen, Pekka. The Hacker Ethic and the Spirit of the Information Age. (2001) New York: Random House. ISBN 0-375-50566-0.

Moody, Glyn. Rebel Code: Linux and the Open Source Revolution. (2001) London, UK: Allen Lane The Penguin Press. ISBN 0-713-99520-3.

Raymond, Eric S. The Cathedral and the Bazaar. (1997/2000)
URL: http://www.tuxedo.org/~esr/writings/cathedral-bazaar/

Stallman, Richard M. GNU Manifesto
http://www.gnu.org/gnu/manifesto.html

History

Adam Gaffin with Jörg Heitkötter. Big Dummy's Guide to the Internet Texinfo Edition 1.04, Apple Computer & The Electronic Frontier Foundation. Jan 1994.
URL: http://www.math.fu-berlin.de/bdgtti-1.04-htmlroot/bdgtti-1.04_toc.html

Henry Edward Hardy. The History of the Net. Master's Thesis School of Communications. Grand Valley State University. Allendale, MI 49401, USA. v 8.5 28 Sep 1993.
URL: http://www.vrx.net/usenet/history/hardy/

Christopher Koch Your Open Source Plan CIO Magazine. 15 Mar 2003.
http://www.cio.com/archive/031503/opensource.html

Robert H'obbes' Zakon. Hobbes' Internet Timeline. v7.0 1993-2004.
URL: http://www.zakon.org/robert/internet/timeline/

Technical

The 7 Layers of the OSI Model. Webopedia.
http://webopedia.internet.com/quick_ref/OSI_Layers.asp



Valid XHTML 1.0! Valid CSS!