The OpenACS and LAMP represent approaches to developing large scale web enabled database applications. Both have a very strong track record of enabling developers to quickly and efficiently build websites with complex functionality while still maintaining high performance. The are significant differences between the two, however. This artcile attempts to address these differences and why the OpenACS is a preferred approach to developing scalable, complex web applications.
Note: This article assumes the use of a Unix-oriented operating system for both toolkits such as Linux, FreeBSD or Solaris. The use of Microsoft Windows is outside the scope of the discussion.
The OpenACS is a framework for developing web applications. It is characterized by a specific set of components around which a group of developers have spent nearly 10 years developing a stable data model and a set of business logic for reuse in user-oriented, data-centric web applications. A free and open source project released under the GNU General Public License, the OpenACS can be thought of as consisting of four components:
The business logic of the OpenACS is written in Tcl, a popular scripting language that is embedded in AOLserver. Tcl is not as popular in the web development world as its "P" cousins, but it is a very well known and extensive scripting language. It is marked by a very shallow learning curve, simple syntax and excellent performance. Used, of course, by AOL for its web properties, Tcl also is heavily used in the networking world (Cisco uses it as the embedded language for its router hardware) and in the automated testing industry.
Support, training, and documentation are typical points of comparison between open-source and proprietary platforms, and rightly so. In this comparison, OpenACS comes out quite well in many areas. In some cases, users have assessed the level of support and basic documentation available for free from the community as superior to that from commercial vendors or from other open-source systems.
The LAMP approach to web development is similar in scope but a different approach than the OpenACS. While the OpenACS is a framework that has a specific standard and focus, LAMP is far more open and represents many different approaches.
The sheer number of companies, individual developers and other resources makes the LAMP platform secure in its longevity. A customer will not have a difficult time finding developers who are familiar with its components or developers who can become familiar with the components quickly.
For instance, AOL uses AOLserver in their largest properties to process requests millions of simultaneous, data intensive requests. With a very simple Tcl script calling native database APIs that can access the first available database connection in the pool, AOL can easily manage sites like Moviefone.com, DigitalCities.com and Mapquest.com
Apache plus an application server module can certainly manage a similarly large site as many have proven. However, the administrative overhead of running multiple services is not as elegant as the AOLserver architecture. There are those, however, that prefer such a separation of web and application server in what is called a "multi-tiered architecture."
The OpenACS community believes that the efficiency gains - in terms of stability, performance and administrative ease - of an integrated web application server we've never felt the attraction of migrating to Apache.
The OpenACS was originally developed for Oracle and so it relies heavily on database features that only recently MySQL has begun to address. These features include native transaction atomicity (that is, a command is either completed or it is not - there is no halfway), foreign keys (data that is related to another table is consistent and that consistency is always enforced) and a procedural language which assists in the writing of complex data queries. It has always been the opinion that these items, in addition to others, are so critical for the integrity of the data of the application that we will not use MySQL until all of them have been implemented as first class features.
However, MySQL has achieved a great deal of popularity despite what we consider to be serious limitations. This popularity is due to the fact that MySQL has performed exceedingly well when developers have written applications that compensate for such shortcomings, in cases where the data stored is transient or data integrity is not as critical a characteristic for the application as performance.
Luckily, there is another free and open source database called PostgreSQL that not only conforms to the principles that the OpenACS community considers critical but has proven to be as performant as MySQL in real world scenarios. It has native transaction atomicity, supports foreign keys and has a number of procedural languages to choose from, including one that is a clone of Oracle's (which helps us maintain support for both databases.) PostgreSQL also continues to prove itself in demanding environments, including running the .ORG and .INFO registries.
As a result, we feel that in using PostgreSQL for the OpenACS, we have the best of both worlds - a free and open source database that is high performance and flexible while providing us with first-class data security and integrity.
(As a note, MySQL does have support for transactions and foreign keys with an external module called InnoDB. But these features are not turned on by default and they are not native. MySQL 5 promises to change both flaws, but it is not suitable for production use at this time, neither does it fix the absence of a quality procedural language..)
The best comparison that can be made, then, is which approach provides the most consistency, stability and maintainability for the developers. The OpenACS is a foundation upon which complex applications can be built using a shared data model and reuse of standard components like a templating system, workflow and content repository. Most importantly, the permissioning infrastructure provides a way to design, build and administer secure data driven applications.
There are many similar applications in the LAMP world (Drupal, BinaryCloud, Midgaard, Typo3) but none of them have the track record or the fundamentally sound data model as the OpenACS. Furthermore, each only addresses part of the problem, either as a content management system, as a bulletin board application or an ecommerce package.
As a result, developers in the LAMP world often find themselves developing from first principles over and over again. This means that each time they develop a new system, they design the basic data model for user registration, authentication, content management, etc and then begin gluing different tools together. Even with excellent code repositories like CPAN for Perl for Perl or PEAR for PHP these efforts are usually ad hoc. They also lack a permissioning infrastructure that can manage the overall security of the application.
For instance, taking a content management system like Drupal, a bulletin board system like phpBB and an ecommerce package like OScommerce, each of which is extremely well built in their own right, but the developer must design a way to share each respective application's idiosyncratic data representation.
The OpenACS' shared data model, templating system and service oriented model allows for developing such a system much easier. The standard data model, presentation code and information processing facilities allows the developer to quickly cobble together a stable, powerful and maintainable application. Most importantly, the well designed and tested permissioning infrastructure allows developers to build very flexible and secure data-driven applications.
This is certainly a strength of LAMP. The fact that it is very simple to find developers who are familiar with each tool rather than a framework is something that a user should consider when selecting a software tool. The plentiful documentation is also extremely heartening.
The OpenACS community, however, is very successful and flourishing. There are over 25 international institutions that have deployed .LRN, the free and open source course management system. There are over 20 vendors listed on the OpenACS.org home page offering commercial support. The OpenACS forums and IRC channel is very active as developers discuss ways to enhance the framework.
The LAMP approach includes hundreds or thousands of different platforms. What this means for any specific LAMP solution is that it may draw from a broader library of other programs, but the list of actually tested, integrated pieces and of dedicated developers may be much smaller. LAMP developers are fragmented across many projects, but OpenACS holds the lions share of attention for its technologies and resists community splintering remarkably well.
While the LAMP community is much larger, the OpenACS has established itself in a community of users where technical proficiency and stability is most important. Due to and for this reason, the OpenACS community is vibrant and healthy.
Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.2 or any later version published by the Free Software Foundation; with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license is included in the section entitled "GNU Free Documentation License".