The Best Things in Life Are Open
On the Internet, literally terabytes of Unix sources for systems
and applications software, service libraries, GUI toolkits and
hardware drivers are available for the taking. You can have most built
and running in minutes with standard tools. The mantra is
./configure; make; make install; usually you have to be root
to do the install part.
People from outside the Unix world (especially non-technical
people) are prone to think open-source (or ‘free’) software is
necessarily inferior to the commercial kind, that it's shoddily made
and unreliable and will cause more headaches than it saves. They miss
an important point: in general, open-source software is written by
people who care about it, need it, use it themselves, and are putting
their individual reputations among their peers on the line by
publishing it. They also tend to have less of their time consumed by
meetings, retroactive design changes, and bureaucratic overhead. They
are therefore both more strongly motivated and better positioned to do
excellent work than wage slaves toiling Dilbert-like to meet
impossible deadlines in the cubicles of proprietary software
houses.
Furthermore, the open-source user community (those peers) is not
shy about nailing bugs, and its standards are high. Authors who put
out substandard work experience a lot of social pressure to fix
their code or withdraw it, and can get a lot of skilled help fixing
it if they choose. As a result, mature open-source packages are
generally of high quality and often functionally superior to any
proprietary equivalent. They may lack polish and have documentation
that assumes much, but the vital parts will usually work quite
well.
Besides the peer-review effect, another reason to expect better
quality is this: in the open-source world developers are never forced
by a deadline to close their eyes, hold their noses, and ship. A
major consequent difference between open-source practice and elsewhere
is that a release level of 1.0 actually means the software is ready to
use. In fact, a version number of 0.90 or above is a fairly reliable
signal that the code is production-ready, but the developers are not
quite ready to bet their reputations on it.
If you are a programmer from outside the Unix world, you may
find this claim difficult to believe. If so, consider this: on modern
Unixes, the C
compiler itself is almost invariably open source. The Free Software
Foundation's GNU Compiler Collection (GCC) is so powerful, so well
documented, and so reliable that there is effectively no proprietary
Unix compiler market left, and it has become normal for Unix vendors
to port GCC to their platforms rather than do in-house compiler
development.
The way to evaluate an open-source package is to read its documentation and
skim some of its code. If what you see appears to be competently
written and documented with care, be encouraged. If there also is
evidence that the package has been around for a while and has
incorporated substantial user feedback, you may bet that it is quite
reliable (but test anyway).
A good gauge of maturity and the volume of user feedback is the
number of people besides the original author mentioned in the
README and project news or history files in the
source distribution. Credits to lots of people for sending in fixes
and patches are signs both of a significant user base keeping the
authors on their toes, and of a conscientious maintainer who is
responsive to feedback and will take corrections. It is also
an indication that, if early code tends to be a minefield of bugs,
there has since been a thundering herd run through it without
too many recent explosions.
It's also a good omen when the software has its own Web page,
on-line FAQ (Frequently Asked Questions) list, and an associated
mailing list or Usenet
newsgroup. These are all signs that a live and substantial community
of interest has grown up around the software. On Web pages, recent
updates and an extensive mirror list are reliable signs of a project
with a vigorous user community. Packages that are duds just don't get
this kind of continuing investment, because they can't reward
it.
Ports to multiple platforms are also a valuable indication of a
diversified user base. Project pages tend to advertise new ports
precisely because they signal credibility.
Here are some examples of what Web pages associated with
high-quality open-source software look like:
Looking at Linux distributions is another good way to find quality.
Distribution-makers for Linux and other open-source Unixes carry
a lot of specialist expertise about which projects are best-of-breed
— that's a large part of the value they add when they integrate
a release. If you are already using an open-source Unix, something
else to check is whether the package you are evaluating is already
carried by your distribution.