[V3dot10] Announcing new VersionsBrowser and source condensing

Maurice Rabb m3rabb at uiuc.edu
Thu Jul 26 01:43:32 UTC 2007

Hello All,

I am 1st year PhD student at UIUC working under Ralph Johnson.  I am  
releasing a new version of the VersionsBrowser and  
ClassCommentVersionsBrowser.  This is the extra feature that Ralph  
mentioned that he wants to include in V3.10.

It is a complete refactoring of the version browsing tools as well as  
the mechanism for condensing the sources.  It enables the previous  
versions of method source and class comments to be stored in, and  
accessed from, an external archive.  Many Squeakers don't condense  
the sources or changes files because they want to maintain the  
complete record of previous versions of methods.  Unfortunately, this  
approach to development prevents one from using the changes file to  
full effect.  If one starts work with an empty changes file, the  
changes file only contains methods that are relevant to ones work.   
With my new refactoring, one can have the advantages of both worlds:  
a clean changes file, and access to the previous historical versions  
of methods and comments.

You can check out the project documentation at the following link:


The project has evolved since a bit since we first posted the above  
docs.  We wrote the VersionsBrowser first, modifying the way it  
searches for source code.  I am comfortable that is works properly as  
a replacement for the old VersionsBrowser.  However, I would  
appreciate if people would try it out and bang on it.

Even though the browser appears to work properly the "old" way, I  
couldn't be sure that it really was working properly until it was  
tested on a sources and changes file that truly referenced code  
remotely.  That involved the ugly process refactoring the source  
condensing process. This part now seems to work as well, but needs to  
be tested more thoroughly.

To get the code, use the Monticello browser to load the Tools- 
Versions-Tests package from:


It only depends on the Tools-Versions package which in turn depends  
on a bunch of other packages.

To condense the sources, look at the methods in the 'condensing'  
category in SystemDictionary.

- #condenseChanges	
	works the same way condensing the changes file only.

- #condenseCurrentSource
	is my renaming of #condenseSources but otherwise works the same way.

- #archiveSourcesPermanently
	This method empties the changes file and condense all of the current  
sources to a new source file, and moves all of the prior source  
versions to the permanent master archive.  Since we don't want random  
Squeakers to affect the master archive, this method actually only  
generate a new permanent archive locally.  Once generated locally, it  
can be copied manually to the actual FTP archive site by someone who  
has authorization.

- #archiveSourceLocally
	This method allows one to create one's own personal methods archive  
that doesn't affect the permanent master archive.

The VersionsBrowser looks for methods first in the source and changes  
file, then in the local archive, and then finally in the permanent  
archive.  Method versions from the permanent archive are stored in a  
local cache if the permanent archive is being remotely accessed.

This leads me to two areas I would really appreciate some HELP:

1)  Does anyone have write access to a publicly accessible FTP site  
that I can use to host the archives? (Possibly ftp.squeak.org ?)  I  
have been having too many firewall issues here at UIUC to be able to  
run and test the remote access.

2) I would like to build a complete permanent archive of the old  
versions of past methods.  As I understand it the prior versions were  
lost at V3.9 when the changes file got too big.  Is this so  
Stephane?  However, when I looked at V3.8 it too doesn't appear to  
have much method version history.  What is the last version of Squeak  
to have a complete record of method versions?  Do I need to go all  
the way back to V1.x and build the archive from each version in order?

Even without a "complete" method versions history, the new  
VersionsBrowser and condensing work can be released with 3.10.  We  
can swap in a more complete permanent archive as we build it.

I look forward to your comments, fixes and feedback.

Thank you!



On May 12, 2007, at 10:16 , Ralph Johnson wrote:


> One of the features of the new versions browser that doesn't yet work
> is for the history database to be remote.  Right now, the history
> database is a directory of files, one for each class in the database.
> My plan was for this to be put on a server and that people who didn't
> need to browse version history very often, or who were short on disk
> space, could just use the remote version.  That doesn't work yet,
> though it might work in a few days.  However, everything else seems to
> work, though it hasn't been tested very much.
> Here is what I am thinking.  For our final alpha image, we will
> provide a history database, a new .sources file, and a completely
> empty changes file.  During the beta process, we will keep using the
> history database and the .sources file, (unless we discover something
> wrong with them).  Then, for the final 3.10 release, we will once
> again rebuild the history database and .sources file, and have an
> empty changes file.
> The 3.9 team ran out of space in the .changes file and had to condense
> changes, losing some history.   It would be cool to go back and
> recover that history and put it in the history database.
> Even cooler, we could go back and get all the history in Squeak 1 and
> Squeak 2, so we could have a complete history of all code that had
> ever been in the Squeak image.  This would only require changing the
> history database, not changing anything in the image, so it is outside
> the official 3.10 release process.  If we don't have time to work on
> it earlier, we could work on it after 3.10 is over.
> The new versions browser has a much nicer way of representing the
> sources than what Squeak currently has.  We should considering
> refactoring Squeak to use these classes everywhere.  However, I am
> opposed to doing that in 3.10.   We should use the new versions
> browser and debug these classes.  Once these classes are mature than
> we can change other tools to use them, perhaps in 3.11 or 3.12.
> This work was done by Maurice Rabb and Navodit Kaushik as a class
> project for my course on OO programming and design.  Navodit will be
> the first to admit that Maurice was the leader on this project.  He is
> a long-time Smalltalker who is just starting grad school at UIUC and
> you can expect to hear a lot from him in the future!
> So, here is a summary of my proposal.  I want to know what you  
> think about it!
> We will make the final 3.10 alpha be to add the new versions browser,
> and the final alpha image will have a new history database, a new
> .sources file and an empty changes file.  If you update your old image
> to have all the changes then you will still have the old .sources file
> and the old .changes file and the history database won't be much use
> to you.  We might not have the remote history database working.  We
> should be able to do this within a week.
> During the beta period we will just fix bugs.  One of those bugs might
> be the fact that the remote history database doesn't work.
> The final 3.10 release will have a new .sources file and a new  
> history database.
> -Ralph
> _______________________________________________
> V3dot10 mailing list
> V3dot10 at lists.squeakfoundation.org
> http://lists.squeakfoundation.org/mailman/listinfo/v3dot10

-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.squeakfoundation.org/pipermail/v3dot10/attachments/20070725/dc3f7211/attachment-0001.htm

More information about the V3dot10 mailing list