links to this page:    
View this PageEdit this PageUploads to this PageHistory of this PageTop of the SwikiRecent ChangesSearch the SwikiHelp Guide
Kernel Cleaning Project (KCP) for Squeak 3.5
Last updated at 7:18 pm UTC on 4 December 2007
The new and official page of the Kernel Cleanup Project is Documentation


Currently we are focusing now on having the smallest core for Class, Behaviour, ClassDescription, and Metaclasses. We are also cleaning SystemDictionary. Soon we will start to clean Class and SystemOrganization, and the class API related to the compiler invocations to be a bit consistent

The idea is to move away from the kernel the dependency to UI, to move methods in the place they should be (for example, from class to method dictionary when this is behavior of method). No magic no new features just cleaning code and building layers around the core.

The first design changes introduced is the introduction of a class named SystemNavigation that should contain all the navigation code (browseAll...). Note that all the browse methods defined in the class SystemDictionary should be moved into this class too to avoid duplicated code and logic. But for now we will not touch SystemDictionary (yet) which has far too much responsibility. For the moment we focus on applying good OO practices on the core Class, ClassDescription, Behavior and Metaclass


Download (KCP-0000-name-initial.cs.gz)

Behavior>>confirmRemovalOf: moved from Behavior to SystemNavigation (sd)
Behavior>>classThatUnderstands: and Behavior>>whichClassIncludesSelector: were the same: these changesets remove classThatUnderstands: because it was alone while there are a collection of which... methods. (sd)

Simple Cleaning of System Dictionary starts.

Move all the browse methods from SystemDictionary to SystemNavigation plus fixes some glitches from the move from Behavior to SystemNavigation
To have the current change set always clean when running the tests (specially with tests creating new classes)
Move all the allMethod from SystemDictionary plus fixes some errors of the previous changeset. Thsi changeset is manually edited because the order of the changes are important to be able to load it (and the changesorter does not keep the order in which the changes have been done when fileouting).
Remove an obsolete method from system Dictionary
Empty changeset just for not having a hole in the numbering
Test KCP-0052
Move sort classCategories to classOrganizer
Move power management methods to PowerManagement class
Fix allSelector on SystemNavigation (sm and trivial)
Fix SystemNavigation>>allClassesImplementing: (sm and trivial) – nb
Update senders of allClassesImplementing: to use SystemNavigation instead of SystemDictionary (sm) – nb

Below the changesets have not been approved yet

Mark as deprecated the method imagerReader, GifReader and JPEGReaderClass from SystemDictionary

Introduce a new way to test whether a method is deprecated based on the cs of Brent (0063)
Remove the beep method from systemDictionary and follow the suggestion of andreas to have beep caling the sound system when present. Pay attention to call beepPrimitive in certain location to avoid to call the sound system.
Deprecate the ImageImports related methods of SystemDictionary, introduce a class called Imports, and clean one Dictionary method and improve the instance creation interface of GraphicalDictionaryMenu and FormInspectView. Dictionary is then less dependent of UI. (yes again). Not tested in MVC.
Fix a reference to smalltalk instead of self systemNavigation in ChangeSorter
Fix a Smalltalk reference in Browser that is then replaced by self systemNavigation
Move the method defaultSelector from the class Behavior on the class CompiledMethod
Deprecate beep, beep:, playSoundNamed: from Object and create a Beeper class

Move SystemChanges functionality from SystemDictionary to ChangeSet class
Pay attention the two Changesets should be loaded one after the one. When loading them you will get a SystemChanges is still referenced. This is normal. We get rid of it after. So do not move it to Undeclared (I should retry because I always forget). Then you will have a deprecated method opening a debugger, proceed and the rest will work. You deserve an explanation: because this is a bit tricky. We cannot avoid that since we are modifying the system that produces the call to the deprecated method itself. During the load the method is changed to be deprecated, its callers too but the code currently executing the load is still the old one. When the changeset is loaded the old code is used. This is only at the end of the load that the new code is in place and that the next time the deprecated method won't be called again.

Some fixes for our tools
Move fullScreenOn from SystemDictionary to DisplayScreen

Deprecated one missing method related to the changeSet migration (KCP-0084 KCP-0085)

TAGS convention

List of Suggestions (please sign so that we can ask you)

 (MessageSet isPseudoSelector: selector)
		ifTrue: ["Not really a selector"
			^ nil].
What is really strange is that MessageSet isPseudoSelector just checks whether the symbol is one of the symbol used by the browser to know in which state it is #Comment, #Hierarchy,... (ab & sd)

Assigned Tasks

Stef is now cleaning SystemDictionary

Other Possible Stuff To Check And Fix


KCP Team

Interested parties