I have made the source code (as well as a pre-loaded image) for Trax available here:

http://squeak.pairhome.net/trax

Trax is a general object versioning system for Squeak. �As of right now, I've only tried to run it in Squeak 3.9. �It also depends on the pinesoft widgets.

If anyone is interested in porting this forward to any other version of squeak, let me know. �

Regarding the extension of Trax to store Monticello packages, I had considered storing individual methods in the repository instead of MC packages, but always felt that computing the SHA-1 on potentially a large number of methods when committing a package would be prohibitively expensive (but would have clear space advantages because new versions of packages might only change a few methods). �Due to the interest in doing that by someone conversing with me off-list, I reconsidered. �Then it occurred to me that you could use the SHA-1 as the source pointer for methods and compute it at the time a method is saved. �It also means that you could discard the sources and changes files and simply use a Trax repository for storing method source code. �Furthermore, it opens up the possibility of committing objects to a repository that capture and create a content based address (a SHA-1) to the entire bundle of source code in an image. �If anyone is interested in working on such an experiment, let me know.

- Stephen