[V3dot10] Announcing new VersionsBrowser and source condensing

Andreas Raab andreas.raab at gmx.de
Thu Jul 26 03:18:10 UTC 2007


Hi Maurice,

One thing I would strongly recommend is that before you plan on adding 
any new features you make a version that *just* works like what is today 
in Squeak. I know that it's not as exciting as building the remote 
retrieval and search facility but it is something that people can test 
and debug with a known set of expectations (e.g., "this should work just 
like it did before") and help you finding bugs in the implementation.

Given the amount of time that I just spent in fixing numerous issues in 
condensing sources and changes in Croquet, the thought of having an 
untested, unproven, complete rewrite of the source code management 
system gives me major heartburn (as a matter of fact if it were up to me 
I'd be quite skeptical if there is enough time to test it enough for 
3.10). There is nothing like loosing someone else's source code to get 
people really upset...

I'd strongly recommend making a version for people to use ASAP and later 
add all the new features. If this stuff isn't solid it's going to be a 
major disaster.

Cheers,
   - Andreas

Maurice Rabb wrote:
> 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:
> 
> http://swiki.cs.uiuc.edu/cs598rej/332
> 
> 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:
> 
> http://www.squeaksource.com/VersionsBrowser2/  
> 
> 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!
> 
> Cheers,
> 
> Maurice
> 
> 
> 
> 
> On May 12, 2007, at 10:16 , Ralph Johnson wrote:
> 
> [munch]
> 
>>
>> 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 
>> <mailto:V3dot10 at lists.squeakfoundation.org>
>> http://lists.squeakfoundation.org/mailman/listinfo/v3dot10
> 
> 
> ------------------------------------------------------------------------
> 
> _______________________________________________
> V3dot10 mailing list
> V3dot10 at lists.squeakfoundation.org
> http://lists.squeakfoundation.org/mailman/listinfo/v3dot10


More information about the V3dot10 mailing list