Free and Open Source Software

Jan 1, 2021

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; unlike most commercial software which is closed source. Open Source software tends to be more reliable and have bugs fixed more quickly compared with closed-source, because many talented developers can look at, find bugs, and submit fixes. Software that is both (free and open) is sometimes called FOSS (Free, Open Source Software).

There are a number of free software "licenses" and "copyright releases". Among the best known are the MIT/X Windows/BSD license, the GNU Public License, and the Apache Software Foundation License V2. For more information on these, please refer to The Open Source Initiative.

The intention of these licenses is to give users control over their software; if you’re a programmer you can modify and improve it yourself; if not, you can hire somebody (me?) to wreak the changes for you.

Well-known Software

Systems

Some of the best-known examples of FOSS are operating systems, smartphones, and office suites, perhaps because these are among the biggest packages that most people use.

Linux, OpenBSD, NetBSD, FreeBSD and other operating systems run on a wide range of computers. Linux has a large share of the desktop and server markets, but is also the operating system behind the Android smartphone (most of that system is open source) and Google Chromebooks. FreeBSD has a large share of the web server market (even Microsoft Hotmail ran on FreeBSD for the first several years after Microsoft bought the company). 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 macOS is based in part upon BSD and the non-windowed parts of it are available separately as "Darwin". Apple’s iOS is also based on BSD, with the result that 99% of all the smartphones in existence have some form of Unix/Linux operating system inside.

The X Window System is a portable window system that runs on all of these operating systems (though Apple primarily uses 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, with XFCE, with many others also available.

If you really like MS-Windows, there is a free open-source clone of an older version available. ReactOS is open-source but can run many closed-source programs built for MS-Windows.

If MS-DOS is more to your liking, try the Free-DOS Project, which is open source. There was also Caldera OpenDOS which was briefely open-sourced for non-commercial use, but that project no longer exists; you can find fragmentary evidence with a web search.

Major Applications

Another major item is office software. The best known FOSS office package is LibreOffice, which 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. LibreOffice is a community fork of the older OpenOffice, with more fixes and improvements.

Mozilla Firefox and Google Chrome are the world’s best web browsers. Firefox is funded by the Mozilla Foundation; Chrome, of course, by Google. There are half a dozen other major free open source browsers, all the way down to the minimalist, Javascript-free Dillo and the text-mode-only lynx.

Thunderbird is a good mail client, originally from the Mozilla Foundation. There are dozens of alternative mail clients.

Asterisk is an open source PBX or telephone system that turns a PC into a home/office telephone system ("PBX"). Asterisk includes all standard PBX features including voice mail, DISA, Call center (queueing), and much more.

Developer Tools

C, Perl, Python, Ruby, Java, Scala, Clojure, Groovy, Dart/Flutter, R and more: there are many complete programming languages and envronments 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 could build it myself back then, I couldn’t give you the version I built. As a result there arose free implementations of Java - notable Kaffe and Jikes, both now defunct.

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. I wrote about doing just that in Oracle Java Magazine.

Several major Java development environments (IDEs) are available as FOSS, including Eclipse, and Netbeans. These are also used as the basis of their originators' commercial versions, such as IBM WebSphere Studio/RAD, and various Oracle Studio products respectively. Jetbrains IntelliJ IDEA is not open source, but there is a free community edition as well as a paid supported version. IDEA is also the basis of Android Studio.

My Own Contributions to Free Software and Information

Java Cookbook Download

Looking to download the huge codebase from my Java Cookbook? You can get the main parts of it for free download from the book’s javasrc github repo. and the rest from my Darwinsys API github repo. There are some notes on it here.

Android Cookbook Download

Similarly, the source code examples for the Android Cookbook are online for free download at the Android Cookbook github repo.

jpademo: JPA/Hibernate Demos

A ton of JPA and Hibernate tutorial demos, both APIs demo’d on the same entities, available on github.

PdfShow: Present from PDF

If you only have the PDF of slides from a presentation, you want PdfShow.

PageUnit: simple web testing

Based on scripting instead of code, pageunit lets you quickly test out web pages.

TodoMore

A rudimentary TODO program is in several modules in my GitHub in multiple modules whose names begin with ToDo. The Android version features synching with the server’s database.

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.

SPDF: Simple PDF Toolkit

SPDF, the Simple PDF API originally described in my Java Cookbook, is only finished to the point where it can save simple PDF files. The source is on GitHub so feel free to git clone it, add stuff, send pull requests, and so on.

But be aware that you just want to make PDFs, you might be further ahead using one of the finished PDF toolkits such as Apache PDFBox or pdfzone.

JabaDex?

"He’s dead, Jim".

Solaris 2 FAQ (ancient history)

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. For some time it was available here.

Free Stuff Written By Others, Curated by me

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:

rnotro

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

SCCS Reimplementation

Didn’t write this one either, but David R. Galloway long ago wrote a free (BSD-licensed) reimplementation of the earliest Version Control System (VCS) for Unix, which was the Source Code Control System (SCCS). The code has been uploaded to github in case anybody can use it, like maybe, to extract a really old SCCS software archive? Has not been compiled in years so it may need updating. If you make the code better, please send a pull request!

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 d 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, NetBSD, FreeBSD, the Apache Web Server and tons of other Apache projects, the Eclipse IDE and tons of other Eclipse Software Foundation projects, The X Window System, and many others, not to mention my own contributions listed above.