O'Reilly Android Cookbook

Get legal. Get OpenOffice.org

Humour: XKCD PHD

Best viewed with
Any Browser!

Free and Open Source Software

Free Software is software that you can use without paying for it. Open Source software is software that you can get the source code for. Open Source software tends to be more reliable and have bugs fixed more quickly, because many talented developers can access it. Software that is both (free and open) is called FOSS (Free, Open Source Software).

Licenses, Copyright, and more

There are a number of free software "licenses" and "copyright releases". Among the best known are the MIT/X Windows/BSD license and the GNU Public License. For more information on these, please refer to The Open Source Initiative. I plan to comment on these licenses in an update to this page.

Well-known Software

Two of the best-known examples of FOSS are operating systems and office suites, perhaps because these are among the biggest packages that most people need when using computers. Linux, OpenBSD, NetBSD, FreeBSD and other operating systems run on a wide range of computers. Linux has a large share of the desktop market; FreeBSD has a large share of the web server market (even Microsoft Hotmail ran on FreeBSD until about 2004). OpenBSD is the most secure. NetBSD is the most portable. Each has its claim to fame, but they are all good general-purpose UNIX-like systems; the user-level commands are largely the same across all of them (and across commercial unixes) due to standardization. Apple's Mac OS X is based in part upon BSD, and the non-windowed parts of it are available separately as "Darwin". Even Sun's Solaris is now available in open source. The X Window System is a portable window system that runs on all of these (though Apple also provides the Mac window system) and more. X has been available in open source since the mid-1980's. Many toolkits and desktops are available for X; the best known and most complete are KDE and GNOME.

If MS-DOS is more to your liking, try the Free-DOS Project or Caldera OpenDOS (link not currently available; open source but not free).

OpenOffice.org offers a very large and comprehensive office suite. It provides word processing, presentations, spreadsheet, drawing, and even database access - all for free! It reads and writes both a standardized "open" format - Open Document - as well as Microsoft and other office formats.

Mozilla Firefox and Google Chrome are the world's best web browsers. Thunderbird is a good mail client that goes with Firefox There are dozens of alternative mail clients.

Asterisk is an open source PBX or telephone system; it includes all standard PBX features including voice mail, DISA, Call center (queueing), and much more.

C, Perl, Python, Ruby, Java, Groovy and more. There are many complete programming languages available in open source form. Each of these has in turn lead to a large body of free and/or open source software in each of these language.

Java is an interesting case: Sun originally released the source for the Java language and runtime, but did not make it free, so while I can build it myself, I couldn't give you the version I built. As a result there are free implementations of Java - see Kaffe and (once upon a time) Jikes - but not from Sun. In 2007 Sun put the entire Java SE source code under the GPL, except for a few parts they couldn't get third-party suppliers to free up. But it took them ages to finish replacing these non-free parts. In the meantime, Oracle took over Sun. At any rate, OpenJDK is now a complete implementation of the Java Standard Edition that you can get and build from source.

Several major Java development environments (IDEs) are available as FOSS: Eclipse, Netbeans, and IntelliJ IDea. These are also used as the basis of their originators' commercial versions, such as IBM WebSphere Studio and Sun Java Studio respectively. IntelliJ is also the basis of Android Studio.

Where to find more

Use the following information sources:

My Own Contributions to Free Software and Information

Java Cookbook Download

Looking to download the huge codebase from my Java Cookbook? It's over here.

You can get most of it by Anonymous CVS.

The File Command

Ian Darwin is the original author of the free implementation of the file(1) command used on UNIX, Linux, etc.

JabaDex, an unfinished Java PIM

I see that despite my efforts to kill this off, a number of freeware ad sites still link here. Just let me say this:

"He's dead, Jim".

That is, it's not in any sort of state that people can use it. And I'm not doing any further development on it now, though I'm using one of the four modules (TODO) myself. None of it is worth downloading; it's one of my incomplete projects that should probably never have been announced.

JabberPoint, the Java Presentation Program

Far from any threat to MS PowerPoint, this was first written as a tiny demo of how to structure a Model-View-Controller application. JabberPoint is a rather toy slideshow program, but has been used to deliver a few presentations. It does feature import and export of tab-indented text slides as well as XML; the XML can be imported using either DOM or JDOM (a feature I added for an XML presentation). There is no slide editing yet - this would be good to add, maybe using Swing's EditorKit facility? JabberPoint source code

Note: JabberPoint was named before the Jabber Instant Messaging protocol, and has no relationship to it, other than the jab (at people who jabber too much) implied by both programs' names.

Diff/Compare in Java

The source code for a highly portable text file comparison/diff program in Java has been moved into the "textproc" subdirectory of the online source collection associated with the Java Cookbook.

More Diff Stuff

Since we're talking about diff, here are some favorite friends:


I didn't write this one, but I did arrange (back around 1984) for the release of a DEC Runoff to UNIX troff converter written at UofT.

Solaris 2 FAQ

I wrote the first version of the Solaris 2 Frequently Asked Questions and maintained it for a few years before handing maintainership to Casper Dik of Sun. It may still be available online.


Note: the above Java software needs the Java Development Kit from Sun Microsystems, or equivalent Java Runtime Environment. Here, too, is my overview of Java and related technologies.

Free Software is Nothing GNU

I have supported and been part of the Free Software community since long before there was a "Free Software Foundation". As far back as the early 1970's, and maybe earlier, there were many flourishing freeware communities around MIT, around other universities, and even amongst commercial users of IBM mainframes. As a single example, we at the University of Toronto used - and contributed to - the freeware library supported and maintained by SHARE, the organization of IBM mainframe users. Meanwhile, back at the Bay, Berkeley UNIX was coalescing, the original free-software movement, while Richard Stallman in the MIT AI lab was still to learn his biggest lesson, that some programmers like to get paid well for their efforts.

While I empathize with many of the friends of the FSF, I oppose its hidden political agenda. It's no coincidence that "The GNU Manifesto" was named after "The Communist Manifesto"... although Stallman now denies this, and the records have been obliterated, I'm sure he was once quoted as saying it was not a coincidence.

I also object to the FSF's attempts attempts to equate "free software" with GnuWare - it reminds one too much of Microsoft getting a trademark on the word "Windows" when Macs, UNIXes (with X11, GL, Mgr and others) and even 3270's have windows too. There is plenty of good software-in-source that is not covered by the GPL, including 4.4BSD-Lite, OpenBSD (also NetBSD, FreeBSD), the Apache Web Server, The X Window System, and many others, not to mention my own contributions listed above.