Jackson I/O



Yet to come:

  • Linux problems and solutions
  • Available software
  • Tributes to people and organizations
  • Command-line tips and tricks
  • Lots of links

At the end of the day, open-source is a meritocracy.  Only the good do well.
        - Steven J. Vaughan-Nichols at Linux-Watch

Linux vs. GNU/Linux

Although I, like many others, use the names Linux and GNU/Linux interchangeably, the latter is more accurate.

Linux is a convenient, simple name, but technically it is just the kernel, the main program at the core of the operating system.  GNU/Linux is more accurate because it gives recoginition to the GNU Project on which people have been laboring for over twenty years writing and coordinating the writing of a great many of the pieces that make up the operating system.

Richard Stallman explains the issue eloquently and completely in why-gnu-linux.

Why I Prefer the GNU/Linux OS

GNU/Linux is my OS of choice.  Currently, I prefer Fedora Linux, though I use and experiment with other distros.  This is an attempt to explain why I go to the extra effort that GNU/Linux admittedly requires.


My computers average more than two months between reboots (I find it convenient to not turn them off).  And when I reboot, it's generally because I've upgraded the kernel or hardware or lost power.  I don't even reboot when installing or upgrading major software packages.  Any kind of crash is extremely rare.

Wealth of Software

There is a huge amount of software readily available for GNU/Linux.  It boggles the mind.  At last check, Sourceforge hosts 7478 7796 projects for Linux with status Production/Stable or Mature.  And that's only one source.  The Mandriva Linux distribution I use comes with lots and lots of software ready to install.  The difficulty is not in finding software, but in choosing among so many excellent choices.

Command Line Support

The speed, capability, power and flexibility of the CLI of the bash shell makes me productive and is enjoyable.  I realize many users aren't going to be interested in the command line no matter what I say, but that's their loss, not mine.


This characteristic cuts across several things.  First, most tasks can be done with either the GUI or CLI.  Second, essentially all graphical applications can be displayed remotely across a network.  Third, I can start any graphical application from the command line.  Taken together, these points mean that almost anything I can run sitting in front of the computer, I can run from a different computer on the network that uses the 'X' window system (not only Linux systems).


The Linux kernel and most components are licensed under the GPL or a similar free software license (free as in freedom) that specifically gives permission to use it.  You can "try it before you buy it".  I can get an old PC up and running by just copying whatever software I have and not worrying about it.  I have seen many situations where people made illegal copies of proprietary software and justified it based on convenience or reasonableness.  With the GPL it's legal.


Software for GNU/Linux is well documented.  Almost every CLI command in existence is thoroughly explained with the  man  and/or info  commands.  Most software packages that provide GUI applications also provide HTML documentation in a subdirectory of /usr/share/doc/ that can be viewed with any web browser.  In addition to the individual package documentation, the distributions generally organize overall system documentation.

All of this is local, meaning it is installed on the hard disk along with the executable software, but there is even more on the internet.  And if you get really frustrated about how something works, you can download the source code and trace through it to see for yourself.


Proprietary software, by its nature hides details of how it works to protect it from competing companies.  Often that's no problem.  But sometimes you need to know what's going on inside to solve why it doesn't work in your specific, odd case.  Openness also allows third parties to investigate problems and publish fixes or explanations on the web as is common.  Free software (free as in freedom) provides no motive to hide anything.


While Windows users must constantly take bothersome precautions to avoid being victims of the tens of thousands of Windows viruses in the wild, Linux users only have to use light caution with much less bother.  A typical firewall on a Linux box simply blocks ports.  It never pops up a query box to make the user approve some action the application is taking.  And there is simply no need for a virus scanner.  The article Linux vs. Windows Viruses is an informative read.


Consider the difference in effort required.  Acquiring an operational PC with Windows is drop-dead simple--you just buy it.  But a PC with pre-installed GNU/Linux is less common, so you probably can't get one unless you want it bad enough to install it yourself (or specifically ask for it from Dell and others now).  That bit of initiative filters out most people.  So when I meet people who use GNU/Linux, I immediately share a sense of accomplishment with them. This group feeling of camaraderie fosters a kind of mutual-help society on the web with a strong sense of community in the GNU/Linux world, and more generally, the F/OSS world.

What is Not a Reason

Cost is not a reason.  While GNU/Linux software can be acquired and legally used free-of-charge, I think I spend more on it than I would spend if I used only Windows.  There are two reasons for this: convenience and support.

There are two aspects of the convenience.  First, it's easier to receive a pack of CDs or DVDs in the mail than to download the whole kit and caboodle and burn them (though I've done that numerous times).  Second, Mandriva and others include some things in the purchased versions that they do not include (supposedly due to licensing issues) with the free download versions.  As for support, I want to support the companies that make such excellence available to me--it's only fair.

Free Software Hosts and Directories

SourceForge is well known as a huge repository and directory of free and open-source software, but there are a number of such sites.  Some host projects while others just list where you can go get them.

Here is a list of host sites for free and open-source software.

SourceForge SourceForge.net
SourceForge.net is the world's largest Open Source software development website and software repository, hosting more than 200,000 projects.  SourceForge.net is owned by OSTG Inc.
Launchpad Launchpad.net
Launchpad hosts over 15000 projects.  It is oriented toward The Ubuntu Linux distribution, but it tracks some other major distributions.
Savannah savannah.gnu.org
Savannah is a central point for development, distribution, and maintenance of GNU Software.  The companion site, savannah.nongnu.org hosts Free Software projects that are not part of the GNU Project, but run on free platforms.
Tigris www.tigris.org
Tigris.org is a mid-sized open source community focused on building better tools for collaborative software development.
BerliOS Developer
BerliOS Developers Site's mission is to enrich the Open Source community by providing a centralized place for Open Source Developers to control and manage Open Source Software Development.
The Gna! Project
The Gna! Project is a central point for development, distribution and maintenance of Libre Software (Free Software) projects.  This site is run by FSF France.
Hosts many hundreds of projects.
LuaForge LuaForge
Projects in the Lua language
Novell Project Hosting
Nearly 1000 projects.  Formerly Novell Forge.
New.  Only hosts a few projects.

Here is a list directory sites for free and open-source software.

Freshmeat.net freshmeat.net
freshmeat maintains the Web's largest index (thousands of applications) of Unix and cross-platform software, themes and related "eye-candy", and Palm OS software.
dmoz dmoz.org
Open Directory Project: Software
GnomeFiles GnomeFiles
This site lists apps (in source & binary) created for the GNOME X11 environment and the GTK+ multi-platform toolkit.
Over 3000 KDE applications for your KDE desktop.
Open Source Software Project.  The goal is the implementation of high-quality Unix software components, ranging from networking, multi-threading and algorithmic libraries to networking servers and development tools.
Free Software Foundation
The Free Software Directory project catalogs useful free software that runs under free operating systems -- particularly the GNU operating system and its GNU/Linux variants.  Over 5000 packages are indexed.
Ice Walkers
Software descriptions in hierarchical categories.
BerliOS SourceWell
Software descriptions, most recent first or in hierarchical categories.

Here are some other sites that fit in there somewhere.

Ohloh is an open source network that connects people through the software they create and use.
SWiK is a community driven resource for people who use open source software.
Linux Software Equivalents

Some sites maintain lists of software equivalents to replace Windows® applications for GNU/Linux or BSD or UNIX®.  Other sites list software organized by topic without reference to Windows.

Here are some links to such sites:

Directory of Symlinks

My directory of symbolic links is helpful for quick command-line access on my GNU/Linux systems.

The g directory

A symbolic link or symlink is a special type of file that contains only the name, and optionally the path, of another file.  It is used as a pointer to the file it names.  Attempts to read or write the symlink file will access the file it points to because they are transparently supported by the file system.

I always create a directory named g in the root directory of every GNU/Linux or BSD system I control.  In this directory I create symbolic links to a number of directories that I frequent.  Using the symbolic link allows faster access when typing things from the command line because the path is shorter so there are less characters to type.

For example, my CDROM is mounted on /dev/cdrom, but it is quicker to type /g/d/.  I created this symlink with these commands, executed as root:

cd /g
ln -s /dev/cdrom d

Same path, different PCs

Use of /g also allows me to use the same path for the same file regardless of which PC I am physically sitting in front of.

I have LANs both at work and at home, and I maintain an OpenVPN encrypted route between my home and work LANs.  Using this VPN, I have various directories on my computers at home and work mounted on the opposite computer using NFS.  For example, my home (default) directory at the office is /home/ken, but at my house it is mounted on /mnt/workhome.  I can access files on my office disk from my house by using the mount path, e.g. /mnt/workhome/text/stuff.txt, or I can access the same file from /g using path /g/kw/text/stuff.txt.

Further, I also have a /g/kw symlink at work, which points to /home/ken on the local machine.  This allows me to use the same path to find the same file on the same machine regardless of whether I am at home or at work.

Using relative paths

I make most symlinks to the local drive using paths relative to /g itself (meaning starting with "../") so that if I ever have to access my hard drive while it is mounted on something other than the root, it will still work.

That is, if my PC ever won't boot, and I boot it from a Linux-based CDROM rescue disk, I will probably mount the root partition on /mnt in the rescue environment.  But since the kw symlink (at work) points to ../home/ken instead of /home/ken, it will still function correctly, even in this abnormal (and possibly emotionally distracting) situation.

Other examples

Other symlinks in /g that I appreciate include these

u -> /mnt/removable
My USB FLASH drive.

j -> /mnt/sdata/users/jackson
My public directory on a local Windows 2003 server, mounted using Samba.

c -> /mnt/windows2000
The Windows 2000 partition on my dual-boot computer (abandoned now).

m -> ../usr/local/i586-pc-mingw32
The base of cross compiled software development tools including gcc.

minc -> ../usr/local/i586-pc-mingw32/include
The directory containing header files in the cross compiler environment.

lo -> ../usr/local

cw -> ../home/ken/.wine/drive_c/Program Files/Freescale/CW08 V5.0
A cross compiler that runs on Windows (or Wine in this case) and generates code for Freescale microcontrollers.

Linux Distro Timeline
Linux Distro Timeline 11.10

Here is an interesting diagram that shows the relationships between many GNU/Linux distributions vs. time.

Site Navigation
External Links:
Open Source

Get Firefox! Get GNU/Linux Validate XHTML 1.0 Strict Validate CSS Speakeasy Speed Test Linux Forums Wikipedia Project Honey Pot Morningstar Corporation ohloh software stack

These dummy email addresses are for harvesters, but they should be invisible to browsers.
Several dummy email addresses that bounce back.

Creative Commons License This work is licensed under a Creative Commons Attribution-ShareAlike 2.5 License Attribute to the URL or http://jackson.io/. nevermind

Modified Oct 29, 2011