2007-Jun-22 10:54:02 UTC – one of the most mature, widespread, beloved and best maintained applications from the OpenPKG software distribution, the Apache 1 Web server, has been dispunged from the repository. Check-in 35737 heralds a new world order where Apache 1 is ultimately replaced by it’s designated successor, the Apache 2 HTTP Server. A minute of silence in commemoration for the passing Apache 1.3.37, please.
When the world began to upgrade from Apache 1 to Apache 2 HTTPD, the openpkg-team adhered to the proven and mature version 1. One of the most important enhancement of the successor was the introduction of the Apache Portable Runtime (APR), a library to enhance portability. The other highlight was the ability to run HTTPD in mulithreaded configurations. Apache 1 was always highly portable across all flavors of Unix and exactly the same statement applies to OpenPKG. Reaching out to non-Unix operating systems was never the goal of OpenPKG, nor Apache 1, a perfect match. The mulithreaded configurations made early HTTPD earning bad reputation, also, to be honest, instabilities were often caused by third party modules. Anyway, multithreading brings little advantages to the average Web server configuration but it can easily become the case of big stability problems. That’s why even the new OpenPKG package for Apache 2 HTTPD has multithreading disabled by default.
So far, it seems the Apache 2 HTTPD has no advantage for OpenPKG. Why the upgrade? The reason is simply that because the rest of the world has already kicked Apache 1, the developers improving the code base and writing additional modules are rapidly dropping support for Apache 1. It happened more than once that modules and new features are simply not available for the old server. I remember features from mod_ldap and mod_proxy. In order not to fall behind we were forced to upgrade some day. We deferred for years. Now it’s time to ban Apache 1 from harddisk.
Because the package we are talking about kept the name “apache” you’ll receive it automatically with the next update “openpkg build -U apache”. However, the technical change is huge and it is unlikely that this update will work out unattended.
One big technical change which has only little effect for the package users is that major parts of the Apache 2 HTTPD are offloaded to APR, which is an extra package and you guess it, apache-2 requires apr.
Much more different is the handling of certain modules, most notably mod_php and mod_perl. Unlike the early days they no longer ship as parts of apache, they are separate packages. We called them apache-php and apache-perl, others are likely to follow. There is a technical reason for that. These packages require an installed apr and apache at built-time and that means these prerequisites must belong to a package and this package must be installed at built-time of apache-* modules. No big deal from the package users perspective.
Notice we now have apache, perl, apache-perl and perl-apache! Weird? No, apache-perl is the new “apache mod_perl module” and “perl-apache” is a collection of “perl modules for apache”.
The biggest manual work is the distribution of package options. The old apache-1 had php built-in, leading to options like “with_mod_php_mysql”. These have been relocated into the apache-php package and consequently renamed to “with_mysql”. There are dozens of options which need to be carried out.
Before we decided to rip off apache-1 we reviewed the OpenPKG registry to see what’s out in the field. I have to admit our initial apache-* packages do not cover the full range of installations in the field but we caught almost 95%.
Finally, there are differences between apache-1 and apache-2.2 by design of the application. Some configuration directives were renamed, some formerly optional modules are now included, some are missing etc. These are not OpenPKG specific issues but we’ll face them.