The Apache Software Foundation, Under the Hood
Mention "Apache" to a crowd of system administrators, and group-think conjures up the well-known Web server. The one that has been No. 1 at serving Internet pages since 1995. No doubt, the Apache HTTP Server Project is both the founding and most influential work of the Apache Software Foundation (ASF).
|Mention "Apache" to a sys admin and most likely 'Web server' springs to mind. While the Apache HTTP Web server may be synonymous with the Apache Software Foundation, it is but one project in an ecosystem that includes a database server, content management tools and much more.|
But today, more than a decade later, the Web server is just one of dozens of open source software projects developed under the ASF's auspices. The same collaborative and cooperative organizational framework that encouraged a group of volunteers to improve the old NCSA Web server now incubates projects ranging from a directory server to a database server, from content management tools to the SpamAssassin spam filter.
Chances are, you've worked with or benefited from the maturity and performance of the Apache Web server. With this in mind, this article looks at the ASF's full range of open source solutions.
The Apache Organization
The non-profit ASF was among the pioneers in organizing open source development. While Apache developers are volunteers who come to projects motivated by interest and who typically work on their own time, the ASF developed an organizational framework that guides and concentrates development processes.
Although the Board of Directors steers major Foundation strategies, ASF volunteers, both member and non-member, develop individual projects themselves.
ASF members earn their place through a merit system. They contribute to a project after an existing member nominates them and the member community subsequently elects them.
Throughout the software world, open source projects can mature or stagnate myriad ways. By applying a managed, structured approach to projects under its umbrella, the ASF exerts a level of focus and quality control not always found in more casual open source development.
Notable Apache Projects
The Apache License
All software released by the ASF is licensed under the Apache License, currently version 2.0. This permissive license allows a wide range of freedom of use. All Apache software is free to acquire and may be freely used in any context or application, including personal and commercial. You can modify Apache source code freely and you can redistribute modified software, either freely or at a charge. You are not required to include Apache source code with the software, nor must you contribute modifications back to the ASF.
The obligations of the license require you to include the Apache license with any Apache-derived redistributed code, although you can license modified code under any license. You must include proper attributions that clearly credit the ASF, and you must not use any ASF trademarks improperly.
Of course, this is simply an overview and not a legally-binding account &151 for precise details, visit the ASF site for the full license text.
At present, more than 30 projects are in development within the ASF possibly many more, depending on how you count sub-projects. New projects enter the ecosystem through Apache's Incubator process, where a project with an initial codebase is proposed to the organization. An organizational evaluation determines whether the project will meet the Foundation's goals and shows a promise for successfully attracting development.
Not all Apache projects are strictly servers. Many projects are themselves development tools of one sort or another many for Java/J2EE development, some for developing Web application frameworks, plus other APIs and classes.
Let's take a look at ASF projects most relevant to back-end server operations. For a fully annotated list of all current ASF projects, see the ASF catalog.
Apache Directory: The Directory project has released version 1.0 of ApacheDS, its enterprise directory server platform. The server supports LDAP management of a variety of directory services, which can "snap in" to ApacheDS, including DNS, DHCP, SLP and Kerberos. It is currently certified as LDAPv3 compatible.
Apache DB/Derby: The DB project is an ASF initiative to create "commercial quality" open source database products, which has spawned the subproject Derby. A relational database written in Java, Derby features a small (sub-2MB) base footprint, supports SQL standards, and can be in either a client/server model or contain an embedded JDBC driver.
Apache Forrest: Forrest is a multi-channel publishing framework that can transform content from a variety of sources into unified output in multiple formats. Based on Apache's XML publishing framework Cocoon, Forrest is designed for turnkey use. Using templates and skins, publishers can feed static or dynamic data into Forrest to publish into, for example, HTML and PDF on an automated basis. While Forrest is still a pre-1.0 release, it is considered sufficiently mature for production use.
Apache HTTP: This is the king of Web servers, particularly if you measure by how much Web real-estate Apache controls 60 percent of the Web according to the latest Netcraft Survey. Then again, the king is off 10 percent from its all-time high, percentage-wise, back in 1995. As the ASF's founding project, to many the name "Apache" is synonymous with the Apache Web server.
The HTTP server continues to be offered in two major releases, version 1.3 and the newer 2.x versions. While 2.x introduces many performance improvements including a multi-threaded model, many sites prefer 1.3 to retain maximum legacy compatibility with systems running the Apache Web server for years. Both versions enjoy Apache's renowned degree of modularity, extensibility and customizability.
Apache Jakarta: The Jakarta project is a sprawling umbrella initiative to develop Java-based tools. The tools incubated within Jakarta are independent subprojects ranging from a regular expression package (Jakarta Regexp) to a WebDAV content managements system (Jakarta Slide). Several major Java-based projects that began within Jakarta, such as Lucene (full-text search) and Tomcat (see below), have since been made into stand-alone ASF projects.
Apache James: Like Jakarta, James is an umbrella project encompassing Java-based mail and news server solutions. The core product, the James server, is an SMTP/POP3 mail server and NNTP news server. An open Java API enables developers to code their own mail processing routines. Additional James subprojects, which support the main server, include a MIME message parser (mime4j), a standards-based mail filtering language (jSieve) and message authentication (jSPF).
Apache Nutch: Built on its parent text search project, Java-based Lucene, Nutch is a Web-oriented search product. Nutch supports advanced search syntaxes and can index both plain text and HTML documents out of the box. Additional modules support indexing of PowerPoint, Word, PDF, RTF, MP3 and Zip.
Apache SpamAssassin: Quickly becoming as well-known as the Apache Web server, SpamAssassin is used to score and identify spam by a wide range of mail server products, both open source and commercial. Its multi-pronged approach includes analyzing message headers and body text, Bayesian "learning" filters, DNS-based blacklists and collaborative filtering. SpamAssassin can calculate and insert spam scores into a message header, which enables mail server software to take specified action (filter, quarantine or mark) depending on configuration.
Apache Tomcat: Tomcat is the "official reference implementation" Java servlet container supporting Servlet and JavaServer Pages. Tomcat versions are designed to coordinate with corresponding Servlet/JSP specifications developed by Sun. The latest production Tomcat release, 5.5.20, supports version 2.4/2.0 of the Servlet/JSP spec.
By no means is the above a full accounting of all ASF projects. Many ASF projects may not be servers themselves but are useful in developing server applications.
The Apache Ant projects, for example, provide software build tools, including support for .NET software.
Quite a few ASF projects address XML, including a pure Java XML parser (Apache Xerces) and Java XML objects (Apache XMLBeans).
For a fully annotated list of all current ASF projects, see the ASF catalog.