There are a couple of statements concerning XoTcl, that i have to address here. i had yesterday an operation, so i can address these points only shortly.
Tom:
If the original code works, why would it need refactoring to xoTcl, why not refactor to Java or LAMP?
Why not refactoring in Java or LAMP? Wasn't there a project trying to refactor ACS in Java, which failed badly? XoTcl is a Tcl extension which integrates therefore nicely with pre-existing code, which is not the case for LAMP alternatives.
There are a couple of reasons for refactoring "working" code in xotcl
- Make applications reusable through subclassing
- Improve flexibility and maintainability
- Improve orthogonality (why is argument passing and checking in ad-procs, page contracts, widgets and for adp includes different?)
- Reduce the need for the notorious upvar/uplevel necessity by using objects.
- Last but not least: improve speed (invocation overhead of an XoTcl method is significantly less than the invocation overhead of an ad_proc) and reduce memory consumption (for every ad-proc two tcl procs are added to the blueprint; that is not the case for xotcl based ad-procs and ad-instprocs)
Furthermore, through higher reusability, xotcl code is typically much shorter than tcl-only code. For example xotcl-core and xowiki are together significantly smaller than e.g. assessment, just by counting the number of lines:
assessment: 49.000 lines
xotcl-core: 6.900 lines
xowiki: 29.000 lines (4 of the 5 largest files are javascript libraries used by xowiki)
I doubt very much that a change in the OACS core or changing to xoTcl would somehow help write the eventual killer app
The only openacs application currently available with some killer-app potential is xowiki, which can be easily configured as a collaborative wiki, a blog, an announcement system, an faq module, a collaborative networking tool, a slide presenter, a podcaster, etc.