By Jon Griffin
I have added my documents related to ArsDigita, OpenACS and ACS (ArsDigita Community System). They are relevant for anyone wanting to understand OpenACS, it’s history and why some design decisions were made. There are also some pearls of database programming (specifically Oracle) in these documents.

Originally ACS was only meant to run on Oracle and AOLserver (formerly naviserver). When ACS changed to it’s new version (4.0) back in 2000 (if I remember correctly), they added a hook for multiple database backends. Originally this was for the ACS/pg (later OpenACS) project.

In historical context, there was no Ruby on Rails, Python had just started really getting some momentum and Apache was still in version 1. This database independence was fairly revolutionary at the time and even though only Oracle and Postgresql run on OpenACS, there is no technical reason that any database that supports transactions, subselects and an internal scripting language like plsql or PL/pgSQL should work. In fact, if you used only postgres you could probably use PL/Tcl. There have been several attempts to run versions that used other databases, but the general consensus is that PostgreSQL has gotten so good that most of the community is happily running this. There are still people using Oracle, and the kernel is always guaranteed to run these two database systems by default.

Another discussion about the database abstraction layer warrants an explanation. Unlike most generic multi-database programming layers, OpenACS takes advantage of the underlying strengths of every database. In other words, it is not a dumbing down to the least common denominator like ROR and DBI. Especially in the use of procedures, you can write what makes the most sense for the database you are using. The downside is that to support more than one database, you need to almost double your database query and procedure calls for two databases. I say almost because any standards compliant query is handled for all databases.

Another major feature of ACS was the concept of packages. In the early ACS days, code was written and copy/pasted into other projects. There were some libraries of course, but also there was a lot of duplication, especially as the company grew geographically more diverse. ACS 4 added the concept of packages. This allowed for easier upgrades, consistent base features (i.e. search, permissions & etc) among other things, and the start of a templating system, which is still a killer feature of OpenACS.

If you read Michael Yoons Account, I left the company right at the beginning of the java craze. I was much older than most everyone in the company and luckily I saw the writing on the wall. I am happy to say I don’t think I have coded more than 100 lines of Java in my life. I will continue this story at a later date.


About Jon Griffin

Jon Griffin has been playing music since he was 7 years old. He is also an avid cook and expert in beer, brewing and other beverages. He owns salsablanca.com and jongriffin.com as well as other sites

He went to Grove School of Music where he studied songwriting and composing and arranging (yes it was fun doing a big band chart every week!).

He then started studying Cuban music and went on to study with Richard Egües, Julian Fernandez, Emilo Vega and Pancho Amat.

He has recorded several CD’s in Cuba in various styles, including Traditional Son, Nueva Trova and Cha cha cha. Recording with such giants as Richard Egües, Jose Antonio Rodriguez, Ban Rarra, and Enrique Pla.

Jon Griffin also teaches about beer at the William F. Harrah College of Hotel Administration, Food & Beverage Management Department at University of Nevada Las Vegas.He is an avid homebrewer, an active member of SNAFU and the former owner of brew-kits.com in Las Vegas Nevada.