Forum OpenACS Q&A: pure-TCL OpenACS - first release

Posted by John Sequeira on
I've uploaded a development snapshot of my pure-tcl OpenACS ("portable.nsd") code to file-storage ( link).

Installation of the acs-kernel is working, and although I haven't tested with every single package all of core ones appear to install correctly.

I've reimplemented ns_xml, nsv's, ns_cache, query dispatching and in general have rewired OpenACS's AOLServer dependencies to their nstcl equivalents. I'm stuck on ns_parse_adp at the moment, so web page generation is not functional.

Right now the portable.nsd code is useful for people who want to hack on headless (tclsh-based) installation routines, write unit tests for their TCL API's using nstest, and possibly see what openacs looks like when running in a visual IDE like TclPro or Komodo (which I've found illuminating).

Once I get the adp parsing corrected, my plan is to move on to serving web pages via tclsh and tclhttpd for debugging, then via fastcgi/iis and mod_dtcl/apache for more serious production deployments.

I would definitely like to hear from people with an interest in seeing these deployment options available to OpenACS'rs and some time to help out. I don't think there's too much left to do but I've hit a bit of a resource wall at the moment. Of course patches and suggestions are _extremely_ welcome.

Posted by Patrick Giagnocavo on
John, does this package require the use of a tclsh compiled with --threadenable (as I think the option is called)?  Or does it run with the "stock" tclsh?
Posted by John Sequeira on

Currently it's a stock tclsh installation - I'm using ActiveTCL 8.3 on W2K ... since it just runs the installer code (no web pages),  it's basically just a big shell script without any multithreaded dependencies.

I'll need to worry about threading with apache/mod_dtcl and potentially with tclHTTPD,  but not with FastCGI.  The idea behind FastCGI is that you can have a bunch of CGI scripts potentially reliant on non-multithreaded libraries,  but your web server pre-spawns them into multiple waiting processes to eliminate the normal CGI startup overhead.  Each waiting process only handles one request at a time,  so you don't have threading issues.

Because of this,  I'm operating under the assumption that I can ignore threading and still have OpenACS running under tclHTTPD for development and FastCGI as a reasonable deployment option.