I wanted to update everyone on the status of portable.nsd. I'm happy to report that I've reached the point with the code where more things work than don't and the useful parts are pretty solid. It's works well for running arbitrary OpenACS code outside of AOLServer and should be useful for automating installation and testing. As an example, A script to install OpenACS looks like this:
source pnsd-init.tcl; # read config file
pnsd::source_openacs
apm_source "$::pnsd::root/packages/acs-bootstrap-installer/installer.tcl"
apm_source "$::pnsd::root/packages/acs-bootstrap-installer/installer/auto-install.tcl"
The web page generation code works so-so, because the AOLServer API is just too broad and interacts with the templating library in subtlely different ways than pnsd/nstcl. For most new pages it works, but for pages that were written years ago, to different standards, they often don't. The release notes contain a list of known limitations.
I believe the biggest barriers to serving up pages via tclhttpd or Apache are currently thread safety and garbage collection. These problems should go away when pnsd can replace the OpenACS dependencies on global arrays and nssets by a slightly more stateless mechanisms (maybe autoload'ing commands and caching nsset's in the database). If someone with C coding skills were motivated to see this happen sooner, I could use some help updating Tom Poindexter's C-based FastCGI extension to work the latest tcl and fastcgi libraries. I'm reluctant to go this route because it requires a compiled extension, but it would be very slick and should have performance in the ballpark of AOLServer.
My original goal was to allow OpenACS to run easily in other web servers. After working on it a bit, I'm pursuing the slightly less ambitious goal of enabling OpenACS code to be easily ported to other web servers. More specfically, if an OpenACS package author want to write code which ran outside of AOLServer, I hope in the future to define a set of guidelines to make the porting process a trivial one.
This release adds query dispatcher support to nstcl, includes a tDOM replacement for ns_xml, and has prototyped tclhttpd and apache/fastcgi implementations.
Feel free to download the latest code and let me know what you think.