2010-02-26
The remaining Unixes (and their manpages)
Because I was just looking this up the other day, here is my list of the remaining Unixes that are still alive and where to find their manpages online. Of these, the ones that I think matter significantly any more as Unixes are Linux, FreeBSD, OpenBSD, Solaris (maybe not for much longer) and perhaps MacOS X (depending on what you're doing).
The list:
- Linux (yes, really)
It's a bit hard to find current Linux manpages online, although there are lots of places with somewhat out of date ones available. The man-pages project is probably the authoritative reference for system calls and glibc stuff; for manpages in general, see tldp.org's manpages section and its collection of links, especially this searchable version.(There's also man.he.net.)
- the *BSDs: FreeBSD, NetBSD, OpenBSD, and Dragonfly BSD.
All of them have manpages easily available through the documentation section of their own websites; FreeBSD manpages, NetBSD manpages, OpenBSD manpages, and DragonflyBSD manpages. - Sun's Solaris, oops, I mean Oracle's Solaris
At least until Oracle reorganizes everything, the Solaris 10 manpages are part of the Solaris 10 documentation collection, and can be found online here. - Apple's MacOS X
Online manpages are currently here, I would assume for the current version only. - IBM's AIX
The manpages for AIX 6.1 really need JavaScript, and a few previous versions seem to only be available in PDFs if you know the right 10 Mb PDF that you want. - HP's HP-UX and perhaps Tru64
HP seems to have not made up their mind about where their manpages are; online manpages for all sorts of HP-UX releases are here or less usefully here in PDF form. There's also Tru64 stuff here, all in PDF.
Sadly departed is SGI's IRIX, among many other Unixes.
For a general reference on portability, see the Single Unix Specification (background here).
(By the way, my criteria for whether an online Linux manpage collection
is sufficiently up to date is whether its ipv6 manpage mentions
IPV6_V6ONLY, since this is what I was looking up the other day.)
2010-02-22
Unix portability and scripting language versions
By and large it's not too difficult to write portable Unix shell scripts (at least once you burn your fingers a time or two, and it helps to have one of the old-fashioned Unixes around so you get that experience early). But here's something that I've been thinking about recently: the portability issue of scripting language versions.
It's not news that these days an increasing amount of programming is being done not in the Bourne shell but in the various scripting languages such as Perl, Python, and Ruby. At the same time, different Unixes can have quite divergent versions of the scripting language interpreters; consider Python's spread of versions, for example.
Well, actually, not quite. Because it looks like Python is the exception that proves the rule; both Ruby and Perl are very close to the same version across quite a number of different Unixes. Quite recent Linux distributions have Perl 5.10 instead of Perl 5.8.<something> but that seems to be about the only exception, and Ruby is remarkably stable at some patchlevel of 1.8.6 on almost everything that has it. (Solaris 10 does not yet ship with a stock version of Ruby and an old FreeBSD machine has Ruby 1.6.7.)
The one potential future issue is that at least one and perhaps all three of these languages are likely to soon have significant, not entirely backwards compatible changes in their nominal main versions. However, pragmatically I expect this to play out over the short term (say the next three to five years) as adding new scripting languages, not changing the versions of the current ones; in effect, Unixes will probably add Python 3, not change their version of Python to be Python 3.
(Python 3 exists but adoption may be slow, future version changes of Ruby are pretty solidly going to happen but I don't know when and how big of a change they will be, and who knows about Perl 6 by now.)