Forum OpenACS Q&A: pure-TCL OpenACS - first release
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.
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.