Niall Ross is talking about in place updating of an application. Here's Niall:
The fantasy scenario: "We'll port to (insert language here - could just be a new major release of something like Cincom Smalltalk), freezing development while we port". Fantasy, because no one can go through the porting period with no new features.
The reality: Frantic development continues while you port - which makes the porting task all the more difficult.
Niall recommends an agile approach: work with the pressures, not against them. So you minimize early code changes (namespaces, class definitions, etc).
Porting from single namespace Smalltalk to modern VW - create a single name that will be used, and to start with, do this:
- Build a package with only a namespace and the right resolutions
- or...
- define a "faux" namespace that actually maps to the Smalltalk namespace (which allows you to make the bigger change later).
Niall also recommends keeping the old (non-namespaced) and new (namespaced) codebases in synch, in Store. You can do this by creating rewrite rules and reconciling code between Store packages/bundles. One key tip: defer broken initialization issues until later. Loaded code is easier to fix than unloaded code.
The demo Niall is showing is pretty cool - using rewrite rules and a port of Store for Glorp to VW 3, he's replicating code from VW 3 into a Store repository, and then reconciling it in VW 7.x. Another cool thing - Niall and a few other people have extended the rewrite engine piece of the RB with menus, in order to make it easier to use.