Not Apache, MySQL or Firefox, but lesser-known apps that serve a particular function very well – a Top Ten of open-source applications you’ve never heard of.
Thousands upon thousands of open-source applications are created and used every year, and some of them, like Firefox, become so popular that most of their users neither know nor care that they are open-source.
But there are many less stellar applications that are enormously useful in their own particular niche.
1 KeePass
Anyone who has to administer a collection of machines or applications will eventually end up with a collection of passwords. Actually, some of you might have one password and use it for everything, but those of you who are serious about staying secure will have more than one. Moreover, those passwords are going to be made up of upper-case and lower-case characters plus numerals, which not only makes them more secure but also completely impossible to remember.
There are many password managers, but we use KeePass for a variety of reasons: Windows, Mac and Linux users can use it, and it has a great interface; you can organise your passwords into groups and give each group an icon; you can search for machines and accounts; and it’s open source and secure. You can carry all your passwords with you on a USB key, and if you lose your key or a staff member leaves with theirs, you’ll know which passwords need to be changed.
 |
| KeePass has an easy-to-use GUI, in this case on Windows. The Mac and Linux versions look very similar and work in the same way. |
2 Open Flash Chart
You must have heard the old maxim that there are lies, damned lies, statistics and Excel charts – well, anyone who’s ever tried to do any kind of serious reporting of statistics on the web knows that you need to be able to produce good graphs.
For years there have been libraries such as JPGraph available that do a reasonable job of graph-drawing, but the arrival of Google Analytics raised the quality bar substantially. Suddenly everyone wanted fancy line graphs that show the numbers represented by each point when you roll the mouse along the line. And Open Flash Chart lets everyone have such interactive Flash charts on their website.
Open Flash Chart is a collection of Flash applets that you embed in your web page, and which fetch data from the web server to display. At the time of writing, Version 1 is the current release and it lets you create various types of bar chart, line chart and pie chart. Version 2, which should be out soon, introduces more sophisticated graph types such as stacked bars. In both cases you get nice little refinements as well as animated pie charts, and with a little fiddling you can customise the way your graph appears by changing its colours, fonts and size. And Open Flash Chart is British, so you’re not only encouraging open source but British open source.
3 Pidgin
Do you remember when texting was something only done by people who were too young to vote? Well nowadays everyone and their granny sends text messages, but instant messaging (IM) remains stigmatised as being the preserve of teenagers, even though it’s used by many business people (including the editorial staff of this august publication).
The problem with instant messaging is that there are many different types of platform. The three big “portal companies” – AOL, Yahoo and MSN/Live – all have their own formats; Google’s GTalk is slightly different as it’s based on the open Jabber standard and can communicate with AOL Instant Messaging (AIM), but not with the others. For this reason you’ll soon discover that if you use instant messaging regularly, you’re going to end up with more than one IM account.
However, rather than needing a separate client application for each IM network, Pidgin enables you to use just one application that can talk to all of them. I have two AIM accounts, a Yahoo account, an MSN account, a Google account and another Jabber account (via hab.la, which lets you embed an IM client into a website). Pidgin is available for both Windows and Linux, and if you use a Mac then part of it is already embedded in the native Mac application Adium.
 |
| Open Flash Chart allows you to create pie charts like this one. We've put the mouse over a segment, where it shows further information |
4 StorYBook
Like many people who write professionally, I believe I have a great novel in me somewhere, though of course I have all sorts of reasons why I haven’t written it yet. The latest of these excuses is that I use a Macintosh and no-one has a good port of StorYBook for that platform. (Actually that’s not completely true, apparently the real problem is that no-one has ported Java 6 to the Mac yet.)
But anyway, if you want to write a book then best start with StorYBook .
Why StorYBook and not an ordinary word processor like OpenOffice or even Microsoft Word? Well, a book or a play ultimately has a quite different structure from an ordinary word-processed document: there are characters who have roles that persist throughout the story, and you’ll often to want to look at them in isolation. StorYBook allows you to create character and plot outlines – it calls them strands – and enables you, the author, to modify and manage these strands separately. When you come to write the full text of your novel you’re still going to need the word processor, but hopefully with StorYBook you’ll have got all the material organised before you start that job.
5 Firebug
With my developer’s hat on I’m happy to write in almost any programming language: over the years I’ve written code in everything from Pascal, Fortran and COBOL through to ML and Prolog, taking in languages like Simula, Smalltalk, C++ and PHP along the way. However, if there’s one language I’ve always hated it’s JavaScript. It isn’t that JavaScript is a particularly bad language: its syntax is based on Java and although it’s not properly object-oriented, it doesn’t really get in the way of writing reasonably sound programs. However, what does trip you up all the time when trying to write JavaScript code are the programs that execute that code, namely web browsers. Trying to debug JavaScript programs inside most web browsers is a nightmare.
There are links between Internet Explorer and the Windows script debugger that help somewhat, and Safari has its error console, but in Firefox you can use Firebug.
Firebug is a complete debugger for JavaScript and can be embedded as an extension into Firefox. I’m not generally a great fan of debuggers – I always remember a lecturer at a well-known US university saying that if you have to use a debugger you’ve already lost the game – but JavaScript is different. In most languages you should be able to work out what an application is doing because you can log its behaviour to some medium (a file, for example) and work out what it’s doing and what’s going wrong. You can do a small amount of this using alerts in JavaScript, but it soon becomes very tedious.
With Firebug you get a complete debugging environment. Firstly, errors in your JavaScript are properly flagged, so you can see which line gave the error and set break-points so you can inspect variable values to see what happened. Moreover, in the latest version you can edit the JavaScript code from within the browser and re-run it to fix a problem. If you’re writing Ajax then you can see your requests and their responses.
6 Chandler
Chandler is one of those applications that we keep talking about in this column and it does just seem to keep getting better. Chandler is one of the best open-source projects we’ve seen that’s attempting to create a personal information manager – in other words something in which you can manage your calendar, your events and your email. You can either use the project’s own server or a hosted solution to share your calendars and tasks with other people, as well as communicating them to a group using email. One of the reasons we really like Chandler is that it’s cross-platform and runs on everything you could want it to run on. Although some of the early releases were pretty ropey, the most recent real releases have been pretty good. It may not yet be a real competitor for everything that Exchange and Outlook can do, but it soon will be.
 |
| Chandler in Windows, showing excellent task management veiw. |
7 FUSE
When the laser was first invented, someone described it as a “solution looking for a problem”, and at first glance FUSE is one of those projects that fits the same description. FUSE stands for Filesystem in User Space ; in other words, it lets anyone who can write a program and run it on a Linux machine create a new filesystem. At first glance this may seem a pretty esoteric application but, like the laser, consider the various ways it could be used. For example, a really simple application is to enable an archive – such as a ZIP file – to be accessed as a collection of files. This way you can mount the ZIP file somewhere in your filesystem, change directory to it and use normal file-management commands to list its contents or delete files from that ZIP archive.
FUSE can also be used to change where and how files are stored. For example, there are a number of filesystems that work with FUSE to store the contents of files in relational databases. For certain operations this may be faster than
a normal filesystem, but it has the extra advantage of enabling the user to apply database operations to search for files. For example, if you were to use MySQL as a back end, you could use full-text indexing to search for files.
Obviously if you can store your files in a database then you can also store them on different machines, and so there are a number of distributed replicating filesystems that mean whenever a file gets stored onto one machine it gets copied to other machines automatically. Other people have used FUSE to enable non-Linux filesystems such as Windows NTFS and Solaris ZFS to be mounted and accessed by Linux machines.
FUSE has also been used to build various more esoteric kinds of filesystem, one of the main variants being versioning filesystems. In such a system, each time you change a file, a copy of the old version is kept: in its simplest form this may be a full copy of the original but in some implementations only the differences are stored in some way. The power and applications of versioning filesystems, especially for developers and document archives, should be obvious to all. Other people have written modules for FUSE that allow multiple filesystems to be merged into one filesystem (a so-called union filesystem) and monitor for file changes in a filesystem. These systems work rather like triggers in a database, so that when a file in the filesystem gets changed an entry can be written to a log file or some other program automatically executed.
8 PowerDNS
A domain name server (DNS) is one of those applications that sits in your network and does the very boring job of mapping names to numeric IP addresses. Generally, no-one gives these programs a great deal of thought until something happens like the recent security flaw in DNS servers being exposed. As everyone now knows, the widely-used name servers for Unix and Windows were subject to this exploit, but there were other less well-known ones that were not. PowerDNS was one such name server that wasn’t affected, but that’s not our only reason for mentioning it here.
PowerDNS () comes in two forms, in acknowledgement of the fact that there are two types of DNS server. Most DNS servers handle what are called recursive requests – that’s when you query your local DNS server and it makes requests to other, authoritative servers that know about the requested domain. For example if your machine wants to know the IP address of www.pcpro.co.uk, it will make a request to the name servers mentioned in your machine’s setup. To implement this type of name server you would use the PowerDNS recursor, an extremely efficient and fast-caching name server that was also immune to the flaw that affected other name servers.
 |
| Scriptaculous at its best - in this case we're implementing a grag - and - drop system that could not be used for a shopping cart. |
If you need to serve authoritative domains yourself – in other words, if you own some domain names and manage their name servers – then the main PowerDNS is the one you want. One of the big advantages of PowerDNS is that it has a number of back ends that can be used to store domain data. In particular there are a number of SQL database back ends that can be accessed by various web-based front ends, which lets you manage domain names from a web browser rather than editing files by hand.
9 Scriptaculous JavaScript library
Having complained about JavaScript when mentioning Firebug, it’s now necessary to praise it for what it can do these days. Only a few years ago its main use was for producing a few cute special effects that no-one really liked or wanted, and for implementing elementary form-checking functions. Now websites use JavaScript to implement animation and useful interface features like light boxes for viewing multiple images.
To implement such features on your website you really don’t want to have to reinvent the wheel each time, and that’s where the Scriptaculous JavaScript library comes in. This great collection of libraries, which builds on another open-source library called Prototype, implements an enormous collection of effects. Visit the homepage and you’ll get a flavour of what can be done: notice how the bubbles on the front page appear, and try mousing over the advert in the top right-hand corner. Virtually every site that deploys animations, completions, incremental searching and all those Web 2.0/Ajax features people talk about uses Scriptaculous and Prototype to implement them.
10 OpenVPN
OpenVPN is another app we’ve mentioned here before, but as it’s just had a version bump to 2.1, it’s worth another look. OpenVPN is a very flexible VPN client and server that builds on simple internet communication infrastructure. For example, rather than the complex IPSEC system, which may not pass through all routers, it employs the Secure Socket Layer (SSL) protocols used by secure web servers and so can easily pass through routers. The server can run on virtually any machine – Windows, Linux, Mac OS X – and there are clients for all these systems that come with an easy-to-use GUI that can be used to set up both clients and servers.