Introducing Change Type Filtering for the Package Comparison Tool
When a customer wants to upgrade to a newer version of Cincom® ObjectStudio® or Cincom® VisualWorks®, I and other members of our Smalltalk Support team here at Cincom will suggest that they review the Release Notes—not only for the version that they are upgrading to, but also for all of the releases that came after their current version. While this will give customers an overview of the things that have changed, the individual, specific changes usually can only be seen by reviewing the actual changes in the code that happened between the versions.
In Chapter 2 of our Source Code Management Guide, we suggest publishing the VisualWorks base code into a company’s Store repository.1 If that is done, the Package Comparison tool can be used during development to see if any changes or overrides have been made to the base code. As an added benefit, the Package Comparison tool can then be used to review the changes that have happened between versions of VisualWorks.
During many upgrade projects, there are phases when it is beneficial to include a review of what base code has changed, was added or removed. Focusing on just those individual types of changes at any one time can be difficult in the Package Comparison tool because it combines all of the types into one presentation.
To help reduce the friction during that phase of an upgrade project, I’m introducing the Filtered Store-Code Comparison Contributed Package for Cincom ObjectStudio 8.4 or Cincom VisualWorks 7.9 and above.
When loaded, this package adds three Checkboxes to the Package Comparison Tool that allow the user to control what types of comparisons are to be shown or hidden:
Hide: → Added → Changed → Removed
When any of these new options are turned on (checked), the comparison view will be updated so that those types of comparisons are no longer shown. The hidden comparisons can be shown again by turning off any of the options (unchecking a checked option).
The new options are made possible in part by wrapping the existing Tools.PackageComparisonTool within instances of PackageComparisonToolWithFiltering—a new ApplicationModel provided by this package. Doing this required overriding a couple of existing methods in the image, but I tried to keep the number of overrides to a minimum. The majority of the functionality was enabled by adding and keeping flags in the properties dictionary that already exists in every instance of VisualPart.2 Also, since not every kind of AbstractComparisonRollupView kept track of what kind of comparison it represented, the code has been extended so that every comparison view can answer if it represents an addition, a change or a removal.
If you wish to explore how the extensions and overrides work, additional technical details can be found in the comments for the package and in all of the added methods. I’ve done my best to explain my design decisions, along with noting any compromises, which I felt were needed.
The current version of the Filtered Store-Code Comparison package can be downloaded from the Contributed Components section of our website:
Publishing the base code is recommended in “Chapter 2 − Beginning to Use Store” of our Source Code Management Guide documentation. (Overall page 27 of 168 in the latest version of the document.)
The properties dictionary was first added as an instance variable of VisualPart in VisualWorks 7.6. For more information, see the Release Notes for 7.6 or the instance variable documentation in the class comments of VisualPart.