KCP To Dos
Last updated at 1:16 am UTC on 17 January 2006
Thsi page refers to next stuff to do.
Major Next Tasks:
- Always build a good test suite
- Look and clean the classBuilder
- Look and clean the systemOrganization (Currently under progress)
- Remove fileoutasHTML from Class
- Move fileout functionality out of the kernel in another layer
- Coherent and simple funnel for changes notification and access to changes
- Coherent and simple funnel for access to the compiler from the classes (fixes classParser and classScanner as role always complained about them been wrong)
- Cleaning and splitting SystemDictionary (there are too much responsibilities in SystemDictionary around 8 different. However some parts of SystemDictionary are used in the VM so it will take more time and we should be carefull about this one).
- Add automatic initialization + introduction of allocate/initialize (as lot of people will be afraid by this one we will have to prove it with numbers and tutorial as andreas suggested long long time ago).
List of Suggestions (please sign so that we can ask you)
- First Analysis of SystemDictionary
- Squat classes This can give an idea of the core we could have and the cleaning should support.
- PointOrNilFrom: http://lists.squeakfoundation.org/pipermail/squeak-dev/2003-June/060086.html
- Move CharRecog out of SystemSupport.
- It looks to me like SystemDictionary>fileOutAndRemove: is incomplete since I can't see where it removes anything. Its brethren #fileOutAndRemove:retainingRoots: and #fileOutAndRemove:withOtherClasses:andOtherMessages: seem more complete but have no senders. Not sure if they should stay or go. Anyone got any ideas? (tim)
- Look at the builder problem: http://swiki.gsug.org:8080/sqbugs/751.html and the proposed fix http://swiki.gsug.org:8080/sqfixes/3182.html
- Would like to get rid of all the self inform: in the class classes because this relies on having PopUpMenu in Object which is not really good too if one day people decide to clean Object.
- Would like to remove inspect call from the class because in the long run we should do Inspector on: and not self inspect on Object. Inspecting result of certain messages could be moved into SystemNavigation.
- Instead of removing #inform:, #inspect as above, make them throw exceptions. These can be caught by morphic or mvc or seaside etc and treated properly - but the kernel isn't coupled to a particular UI (avi) We should look at TIm idea Tim Exception for UI approach (sd: I never programmed something big with exceptions so may be we should ask for an expert)
- Behavior>>isObsolete has a strange definition (sd & ab) should check senders.
- Behavior>>typeOfClass contains a lot of magic numbers that are also used in ClassBuilder. Should be defined in one place (ClassBuilder) and not as magic number.
- The "Weakness weakness" bug relates directly to Behavior>>typeOfClass [bkv]
- It would be really helpful if ClassBuilder defined an API for discovering the relationship between these class-types (i.e., an #implies: API for class-types )
- The way the code is saved 1 or 2 to indicate source or change is a magic number that should be hidden and replace by method invocations.
- Behavior>>sourceCodeTemplate (should be moved into browser or at least in ClassDescription. Should a class has the responsibility to display its own template or should it be the browser. Note that this is not a real problem.) (ab & sd)
- Behavior methodDict iv should be renamed methodDictionary (ab & sd)
- Behavior>>withAllSubclasses (is the order mentioned garanty?. Note this can have a lot of implication while recompiling the system.) (ab & sd)
- Behavior>>changeRecordsAt: refers to VersionBrowser (ab & sd)
- functionality of Behavior>>firstCommentAt: should be moved into compiled method or method dictionary (ab & sd)
- functionality of Behavior>>formalParametersAt: should be moved into compiled method or method dictionary (ab & sd)
- Behavior>>firstPrecodeCommentFor: should be moved into CompiledMethod or MethodDictionary.
(MessageSet isPseudoSelector: selector)
ifTrue: ["Not really a selector"
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)
- Behavior>>kindOfSubclass should be pushed down as behavior should not be aware of definition related information. (ab & sd)
- Behavior>>allUnsentMessages should be moved into systemNavigation (ab & sd)
- Make the way easier for using Environment (Namespace) with the kernel (ab)
- Draw clear limits to "what is kernel" (dvf): Class, ClassDescription, Metaclass, Behavior, SystemDictionary, eventually Object, a Bit of Compiler, CompiledMethod.
- Liberally use DVS convention to mark as "Class Extensions" methods that shouldn't be in the kernel. This will soon allow SpT to let us really know how much of a mess remains, and doesn't break anything (dvf)
- fix and tests provided by the list Missing File (/squeak/uploads/BCCMTestCase.st) to look at
- run SmallLint (sd)
- check the code in VW and in GNU Smalltalk (sd)
- lot of Behavior methods are using class/classDescription (sd)
- remove fileOutAsHTML -> HtmlClassWriter (sd)
- remove reference to Transcript (sd)
- Utilities noteMethodSubmission: #Comment forClass: self theNonMetaClass (sd)
- Make sure notification of all kinds of code changes are noted, and complete information provided, to make sure computed models of code can be cached. And this doesn't belong in Utilities. (dvf) Exact we should have a simple and single funnel to arrive to changes logs.
- remove all the method ClassDescription>>ChoosePopUpMenu references (sd)
- create a class for all the navigation queries and move browse code there. (sd)
- Do we want to have all these references to FileStream (sd)
- Code formatting, return inside ifTrue... (sd)
- Check all the fixes nathanael did for the traits (sd)
- Redefine classOrganization as nathanael did for the traits (sd)
- Move functionality that are defined in the browser into the kernel classes and vice versa (PopUpMenu...)
- Recompilation of Array breaks: ArrayedCollection variableSubclass: #Array instanceVariableNames: '' classVariableNames: '' poolDictionaries: ''category: 'Collections-Arrayed'
- Tim Exception for UI approach
- Tim Bug and Fix for Browser allCallOn: does not find pluging references
- Tim and Andreas discussion on Pools
- Questions for the future: the class Class should not reference explicitly Changeset. The solution is to have the class has a model and that different tools register to get notified.
- PositionStream>>checkForPreamble: chunk refers to ChangeSet !!!!