Stéphane, I'll describe what I'll have done for AltBrowser processing the relevant announcement, according to what I know of the way MC maps packages and names :
System announce class category change for classA, from catB to catC. In AltBrowser / class side - Find RPackage owning catB (matching Rpackage name + tag). - Find ClassA inside RPackage/catB representation - Remove my Alt object representing ClassA from class global structure. -- Announce to all AltBrowser instances to remove their Wrapper on Alt object for ClassA - Find RPackage owning catC - Find tag catC / create if needed - Create an Alt object representing ClassA inside RPackage (and catC if package has more than one tag). -- Announce to all AltBrowser instances to add the new object if appropriate This is the core of the code I have in the browser for each announcement, more or less. I was hoping RPackage would do the right thing, which is : As long as the system still has system categories, do any operation involving system categories according to the expected semantics (and MC is, for me, the judge of what those expected semantics may be). It would be nicer to be able to scrap directly the categories; for that, I would : build a new set of tools (RPackage-based system browser) disregarding categories. Disconnect that from MC except for an initial loading (not even querying MC for the related package, hey Nautilus!). Try to work in the system by removing everything that uses categories (return to basic, new, RPackage-based browsers). Have a reverse unload to MC (propagate all changes registered in RPackage back in MC when asked for it by the developper). Have only RPackageOrganizer or MC tracking changes, but not both. Reconnect both when all is stable. If you want, I can make an AltBrowser which would be a pure RPackage / tags only System Browser, no categories. Maybe RPackage is integrating too much too early in the system. Oh, as an aside since we're tracking unwanted instances, I wonder if there isn't a leak somewhere in dependencies / announcements (which would explain the more than one RPackageOrganizer instance bug cropping up). I'm leaking, and some instances of my browser don't garbage collect. Thierry ________________________________________ De : [email protected] [[email protected]] de la part de Stéphane Ducasse [[email protected]] Date d'envoi : samedi 8 septembre 2012 08:58 À : [email protected] Objet : Re: [Pharo-project] RE : RE : RPackage, Monticello and the removal of PackageInfo Thierry one of the problem we encountered is the following one with version 1 you have your package and tags MyPackage extensions methods... tagA classA classB tagB classC Now what do we do if the user change the category of the class. So we started to think that we should change class definition template so that we get category:'' -> package:'' tag: '' but this was implying to check in a lot of places. After we will see may be we will do it. The idea of esteban was to see if we can first get rid of PackageInfo, then in the future version of categories. Stef
