Thanks.
Well, you know you're just shooting yourself in the foot - the later you join, the less easy stuff is left... and the EToy is waiting... ;-)
Daniel
Bergel Alexandre bergel@iam.unibe.ch wrote:
Hello Daniel,
I just want to say I appreciate your efforts. I am currently busy for participating actively to the modularization process. Perhaps this summer...
Regards, Alexandre
On Sat, May 25, 2002 at 04:24:45AM +0300, danielv@netvision.net.il wrote:
Someone asked a while ago for a progress report. I just finished running everything released that's supposed to unload something, while collecting some metrics. The first datum is that in this order, everything works off a clean 4857 image.
What was unloaded?
These are small modules, removed based on my work of the last couple of weekends. #(Squeak Network Applications MailReader) #(Squeak Network Applications IRCChat) #(Squeak Technology Benchmarks) #(Squeak Morphic Demo Games) #(Squeak Technology Archives Applications) #(Squeak Language Exceptions Tests)
The big ones by Henrik: #(Squeak VMConstruction) #(Squeak Media Balloon3D)
At this point, these are modules had no incoming dependencies and could be removed (I don't know if Henrik worked on this explicitly, I didn't). #(Image StandardRelease) #(Squeak EToy Imported) #(Squeak EToy Outliner) #(Squeak EToy UserObjects) #(Squeak Development Test TextEditing) #(Squeak Development Test SUnit UI) #(Squeak Development Test SUnit Tests) #(Squeak Development FileList Test) #(Squeak Network Applications PluggableWebServer) #(Squeak Network UUID) #(Squeak Morphic Tests) #(Squeak Morphic Widgets) #(Squeak Morphic Applications Media) #(Squeak Morphic Applications PDA) #(Squeak Morphic Library Models) #(Squeak Morphic Demo Components Built) #(Squeak MVC Symbols) #(Squeak Media Movies Player) #(Squeak Media Speech PhonemeRecognizer) #(Squeak Media Speech Klatt KlattResonatorIndices) #(Squeak Media Speech TTS) #(Squeak Media Speech) #(Squeak Media Balloon TrueType) #(Squeak Media Graphics Tools Simplification) #(Squeak Media Graphics Tools Triangulation) #(Squeak Media Graphics Tools Intersection) #(Squeak Media Graphics Tools) #(Squeak Media Graphics External) #(Squeak Technology FFI Examples X11) #(Squeak Technology FFI Examples Win32) #(Squeak Technology FFI Examples MacOS) #(Squeak Technology FFI Examples) #(Squeak Technology FFI Plugin) #(Squeak Technology SerialPort) #(Squeak Technology Files Tests) #(Squeak Language Modules Analysis) #(Squeak Language Modules Tests) #(Squeak Language Modules Refactorings) #(Squeak Language Collections Tests) #(Squeak Language Core Tests) #(Squeak Language Core Magnitudes Tests)
How far are we? Before the unload, we had 1805 classes under Squeak.
After the unload we have 1229 classes under Squeak, of which 804 are still strung up in various loops according to a strong connected components. That's 804 classes Object is indirectly dependent on - quite a lot awaits removal.
Analyzing by major categories, these are the numbers of classes that exist: Before: an OrderedCollection( Squeak Language)->208 Squeak Technology)->136 Squeak Media)->451 Squeak MVC)->74 Squeak Morphic)->329 Squeak Network)->189 Squeak Development)->87 Squeak VMConstruction)->99 Squeak EToy)->232)
And after: Squeak Language)->187 Squeak Technology)->113 Squeak Media)->194 Squeak MVC)->72 Squeak Morphic)->279 Squeak Network)->131 Squeak Development)->76 Squeak EToy)->175)
This is the script I've used in order to do this (I think I've sent up everything except for MoreAnalysis.1.cs which matters only for the SCC data, and I haven't yet cleaned up):
ChangeSorter fileIntoNewChangeSet: '/home/danielv/offLoadNoteBook/squeak/MovingClasses.cs'. ChangeSorter fileIntoNewChangeSet: '/home/danielv/offLoadNoteBook/squeak/MoreAnalysis.1.cs'. ChangeSorter fileIntoNewChangeSet: '/home/danielv/offLoadNoteBook/squeak/CarefulModule.2.cs'.
Preferences disable: #accessOnlineModuleRepositories.
{'plugin-rename.4.cs'. 'makeVMConstrReloadable.5.cs'. 'dependencyFix.4.cs'. 'poolsFix.1.cs'. 'fasterModuleSaving-hg.1.cs'. 'fixChessPool.3.cs'. 'refactoringToolsRefactoring.cs'. 'codegeneratorModuleFix.1.cs'} do: [:name | |fileName | fileName _ '/home/danielv/offLoadNoteBook/squeak/', name. ChangeSorter fileIntoNewChangeSet: fileName].
{'CelesteRemoval.8.cs'. 'MailComposition.st'. 'RefactoredCeleste.5.cs'. 'UnloadingDemos.1.cs'. 'DynamicWorldMenu.4.cs'} do: [:name | |fileName | fileName _ '/home/danielv/offLoadNoteBook/squeak/', name. ChangeSorter fileIntoNewChangeSet: fileName].
ParserRemovedUnusedTemps moveTo: Module @ #(Squeak Language Exceptions Core). FileList removeSelector: #addFileToZip. Benchmarks moveTo: (Module fromPath: #(Squeak Technology Benchmarks) forceCreate: true).
| module nextRound | #( (Squeak Network Applications MailReader) (Squeak Network Applications IRCChat) (Squeak Technology Benchmarks) (Squeak Morphic Demo Games) (Squeak Technology Archives Applications) (Squeak Language Exceptions Tests) ) do: [:path | module _ Module @ path. module deepDeclareExternalRefs. nextRound _ (module importedModules, {module parentModule}) asSet. module repository beStandalone. ModuleInstaller upload: module. Transcript show: 'About to remove'; show: module; cr. ModuleInstaller unload: module. Transcript show: 'Now have: '; show: (Module root Squeak submodules collect: [:e | e -> e deepClasses size]). Transcript show: 'candidates '; show: (nextRound select: [:e | e valid and: [(e deepIncomingRefsFromOutside: e) size = 0]])]
| module | module := Module @ #(Squeak VMConstruction). module defineClassExtensionsOutside: module. ModuleInstaller unload: module
| module | (module _ Module @ #(Squeak Media Balloon3D)) defineClassExtensionsOutside: module. ModuleInstaller unload: module
-- _,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._ Bergel Alexandre http://www.iam.unibe.ch/~bergel ^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^
squeak-dev@lists.squeakfoundation.org