Forum OpenACS Development: Tools for building a from-scratch OpenACS competitor

Collapse
Posted by Andrew Piskorski on
If I was going to build something like either OpenACS or a complex OpenACS-based application from scratch, I certainly would not choose to use Java for it. Gah. Although if for some reason I really needed to operate in a Java-centric world, I'd look into Rich Hickey's Clojure.

I'd say OpenACS, AOLserver, and Tcl have held up pretty well over time. I've been very pleased with how well Tcl works with AOLserver, and in particular with how productive a programming environment multi-threaded Tcl is. (Not perfect certainly, but much, much better than most.) And, PostgreSQL and Oracle and were and still are obviously good choices for the RDBMS.

However, there are certainly some interesting and potentially very powerful tools out there now which simply weren't available back when OpenACS got its start.

The number one tool I'd seriously investigate is Erlang, its OTP libraries, and associated ecosystem. From what I've read over the last 7 years or so, Erlang is probably the best environment available for doing (asynchronous, pattern matched) message-passing, massively parallel shared-nothing concurrency, failure recovery, live code update, and high reliability.

The only programming language I know of that may well be better for embedding than Tcl is Lua. Lua's community also has some very interesting technology, particularly Mike Pall's LuaJIT 2.0. If I needed simple, lightweight, high-level, fast programming language, I'd strongly consider it.

There is currently lots of activity - seemingly dozens of startups - in massively-parallel shared nothing RDBMSs. Nothing yet really open source though, and AFAIK the commercial systems (Teradata, etc.) tend to be very expensive. So these databases definitely bear watching, but don't seem like a practical approach for a general purpose web toolkit yet. I'd stick with PostgreSQL (and Oracle).

The opposite end of the database spectrum is also interesting, namely very small and simple databases like SQLite. D. Richard Hipp has himself done some interesting work on using SQLite to build a self-contained, SourceForge-equivalent website which installs trivially and runs from one of the lowest-cost hosting providers like Hurricane Electric. That sort of tightly focused DB-backed website design is interesting, and might actually make for a better product if you're selling the software, but may be less applicable to a general purpose, more sprawling toolkit like OpenACS.

Oh, and from the limited info available, Dave Fayram's Katamari, (which is based on his older fuzed project sounds like an interesting tool for managing and scaling a bunch of websites or services written in N different programming languages. I personally wonder to what extent it would also naturally extend to operating as a more flexible cluster job scheduler/manager, in place of Sun Grid Engine, SLURM, or the like.

Notice that above I've basically just listed various nifty new programming languages, tools, and applications which, if you were starting today, might be very helpful in designing and building an OpenACS-class toolkit for complex interactive web sites and services. That's because those are the main areas I see where new stuff is likely to be a significant win. AFAICT, the basic data models and design of OpenACS are still quite sound, and I'd likely adopt them more or less wholesale.

Of course, there probably are at least vaguely OpenACS-like systems out there using some of these tools. Obviously there are smart people out there doing dynamic websites with Erlang, Ruby, etc. etc.; not everyone is using PHP and MySQL, nor Java J2EE. Others here are probably familiar with some of those communities' approaches and solutions.