52 3.2 Open Source Is Not Enough by Itself
The nature of open source makes it easier for a large motivated group to
learn. Anyone who chooses has access to the code and can run it on inex-
pensive and widely available equipment. This is not true, for instance, of
Oracle, WebLogic, or Solaris. In addition to source and executable code
being freely available, it is also the nature of open source that documenta-
tion, books, and training are available very competitively and in many cases
at no cost.
While there is approximate parity now, open source is likely to gain
advantages over closed code internationally and over time.
3.2 Open Source Is Not Enough by Itself
It may be a good thing that a system is open source, but it is not sufficient.
It is commonly argued that open source generally has certain good features
by virtue of its construction—for example, that it is secure, virus free, reli-
able, or at least more so than closed code software. This certainly seems to
be true of most of the well-known open source products discussed in this
book, such as Apache and Linux. However, it is not necessarily true that all
open source products are well written, let alone that any particular product
is best suited to the purpose you have in mind. In fact, to make a point, you
or I could take a lousy piece of undocumented and poorly tested code
today, donate it to the community, and it would be on the Internet server
Freshmeat tomorrow as “open source software” ready for download.
We will want to review any open source product for openness of each
component and standard employed. Once we have an open source product
we want to use, we will want to review at least the following elements:
Platform portability (hardware, OS)
Database portability (stored procedures, APIs)
Data architecture
Software quality (modular, documented)
3.2.1 Deployment Platform
We would prefer to see applications that can be deployed on standard, scal-
able computer hardware available from several different vendors and
3.2 Open Source Is Not Enough by Itself 53
Chapter 3
employing internal standard components obtainable in an open market
We would prefer applications that can support a range of operating sys-
tems, since this will provide the most choices. Ideally, this would include at
least Linux, Windows, and other UNIX. Alternatively, we would prefer
applications that run on an operating system available on a range of hard-
ware and from multiple sources—in practice, this is Linux.
An acceptable alternative might be a widely deployed operating system
from a single very strong vendor (e.g., Microsoft Windows, IBM zOS). In
conventional practice, purchasers look for multiple sources for a key prod-
uct, not a single strong supplier. But we need to recognize reality; there are
products that run only on Windows or IBM zOS today.
As a general rule, if an application is not now available for multiple
platforms it is probably not going to be in the future. However, in some
cases, we might want to review an application for future portability. This
would depend on the language chosen and avoiding specific ties to plat-
form features.
3.2.2 Database Platform
If the application uses a database, we would like it at a minimum to use a
standards-based (SQL) database and a consistent, well-designed current
interface to that database’s APIs and stored procedures.
It would be preferable to have a choice of databases, particularly because
some databases require particular platforms for the underlying hardware
and OS. This is not always going to be possible, since the extra work of sup-
porting multiple databases is not always justified for an application.
Unfortunately, the SQL standard is not sufficient to ensure that an
application does not have dependencies on a particular database. We will
generally need to recognize the limits of SQL portability and review data-
base design and access strategy to maximize it.
3.2.3 Software Language, Architecture,
and Implementation
We want the application to be written in an open source language, prefera-
bly one that is portable between platforms. This set of languages generally
includes C/C++, Perl, Python, PHP, and UNIX shell. Java is not an open
source language. The Java specification is not open, although there are com-

Get Open Source Software: Implementation and Management now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.