Steve,
I find my self in a similar position. I my new job with Praesagus, we are developing a commercial product on top of (Open)ACS. Our approach is to feed all improvements to OpenACS back to the community thereby respecting the GPL license of OpenACS.
At the same time, all custom packages build on top of OpenACS are proprietary to Praesagus. Furthermore, I've made some changes to the request processor of OpenACS to allow it to run pre-compiled Tcl code. Code pre-compiled with the ActiveState's Tcl Dev Kit is no longer readable by humans and can be used to protect the interlectual property of proprietary Tcl code. ADP, XQL and SQL pages can not be compiled but at least the business logic embeded in the Tcl code is protected.
Pre-compiled Tcl files have extension .tbc. These files could be renamed to .tcl files again but for manageability of product releases I have modified the request processor of OpenACS so that it handles .tbc files in addition to regular .tcl files.
AOLserver 4 is required to run pre-compiled code in OpenACS because each pre-compiled .tbc file starts of with:
if {[catch {package require tbcload 1.4} err] == 1} {
error "The TclPro ByteCode Loader is not available or does not support the correct version"
}
I can commit these changes to the OpenACS CVS if the community supports proprietary development on top of OpenACS.
/Bart