Surveying the Open Source Landscape

Operating Systems

Linux

By far, the eight-hundred-pound gorilla of the open-source operating system community is Linux. This UNIX-like operating system is estimated to have up to 27 million users worldwide, according to the OSI, although it is practically impossible to verify exactly how many users are out there. Developed by Linus Torvald as an academic project in the early 1990s, Linux has now grown into a corporate tool used by fortune 500 companies, and distributed on servers by prominent server vendors, such as IBM.

Linux comes in many flavors, including Redhat, Mandrake, Slackware, Turbo Linux, SuSE, and others. By far, the most popular version is Redhat, which is widely distributed by commercial software vendors. This flavor of Linux, unlike some of the others, offers excellent support and documentation, and enjoys the largest following of any other Linux flavor.

Remaining true to it's MINIX roots, Linux still has a command-line interface; however, open-source desktops, such as Gnome and KDE, that provide Windows-like functionality are available.

With the advent of open-source productivity tools, such as StarOffice and OpenOffice, Linux is even beginning to penetrate the desktop market. The number of applications available for Linux is growing, attracting many who were formerly Windows users out of necessity, but who can now find the programs they need in the open source community.

One downside to Linux, according to an article in Internet Week, is the lack of quality development tools for the platform. According to a survey by research firm Evans Data Corp., 25% of developers surveyed said that critical development tools, such as compilers, are only adequate, or need work, on Linux. Despite this, Linux's stability and dependability have attracted a huge following.

BSD

BSD is a UNIX-based operating system descended from code originally written at UC Berkeley. Although it is not as popular as it once was, due to the arrival of Linux, BSD and it's many flavors are still a notable presence on the open source scene.

Various flavors of BSD still exist, including FreeBSD, NetBSD, OpenBSD, and Darwin. The momentum behind BSD has decreased sharply due to the disappearance of several of the companies that provided support and patches for the various operating systems. Also, the popularity of Linux has led more developers to write code for that operating system, leaving BSD languishing.

Web Servers and Application Servers

Apache HTTP Server

The Apache HTTP server is, by far, the most popular web server on the World Wide Web. According to a Netcraft survey (http://news.netcraft.com/archives/web_server_survey.html), Apache leads the market with over 67% of web servers running Apache. This compares with only 21% for Microsoft, 3% for the Sun One server, and 1.6% for Zeus.

Apache was originally created at the National Center for Supercomputing Applications, under a different name. When development on that HTTP server stopped in 1994, some of the major players in the project met to apply patches to the product and create a more stable release. This new release, which branched from the original NCSA server, became the most widely-used server on the web today, and is one of the open source movement's biggest success stories.

Tomcat

With the arrival of Java servlets and JSP on the scene, it was quite natural that the people who brought you the Web's most popular web server would also build a servlet engine. Tomcat, which is Sun Microsystems' acid test for the servlet and JSP specification, is a part of the Apache Jakarta Project, a project dedicated to providing open-source, Java-based software solutions. Tomcat is available as a module that is pluggable into the Apache modules framework, but may also be used for standalone servlet and JSP development. Tomcat does not support the full J2EE specification, but it is sometimes used as the default servlet container for other open-source products that do support the full spec.

JBoss

JBoss is an open-source application server that supports the full J2EE specification. As mentioned above, Jboss incorporates the Tomcat servlet container as part of its code. For a closer look at Jboss and its features, see "Jump Into Jboss" on this site, or visit http://www.jboss.org/.

Databases

Most enterprise solutions require some sort of database to store their data. However, the high licensing fees, complexity, security issues, and high cost of database administration for commercial databases, such as Oracle and MS SQL Server, have made open-source alternatives attractive to a growing number of businesses. The two major players in this arena are PostgreSQL and MySQL, which we'll examine in the following sections.

PostgreSQL

PostgreSQL is the open-source descendant of the Postgress database, created by the University of California at Berkeley. It incorporates many features found in commercial databases that developers have come to expect, such as complex queries, triggers, foreign keys, views, transactional integrity, and replication. Allowing developers to define new data types, functions, operators, aggregate functions, and even procedural languages can also extend the database. This last item is perhaps the most intriguing for developers accustomed to developing in PL/SQL, TCL, PERL, and Python, because PostgreSQL allows stored procedures to be implemented in these languages. Although all of the features of each language are not included in PostgreSQL, the feature sets for each are still powerful, familiar to those who have used them before, and, of course, always improving.

MySQL

MySQL is a powerful but simple database geared toward applications with high transaction volumes and large quantities of data. This performance and scalability, however, come at the price of feature richness. MySQL does not currently support stored procedures or triggers, although both features are slated for version 5.0 and 5.1, respectively. Also, MySQL constrains developers to the SQL-92 specification, which lacks some of the SQL capabilities found in commercial databases.

The administration for MySQL is very simple. Administration is done within the MySQL command-line client, which is similar to SQL*Plus for Oracle. Also, numerous command-line utilities exist for performing various administrative functions, such as loading data, and repairing and analyzing tables.

Although MySQL lacks some features, it is capable of handling large volumes of data. According to the latest MySQL documentation, the database has been used in production with thousands of tables and millions of records without significant performance issues.