I've seen a lot of progress for the Pharo Kernel by Pavel recently and I really appreciate his work. But I have some questions I think we should discuss. There have been quite a few changes to make code work in the Kernel and to reduce dependencies between packages. But I really have the impression that many of these changes are of bad quality :/. I do not want to offend people, but this is fairly important if we want to have a nice code base. Example: ======== UnixResolver >> nbGetEnv: str #NativeBoost asClassIfPresent: [ ^ self privNbGetEnv: str ]. ^ nil The goal of this code is to conditionally do something in the main image but continue to work in the kernel. Observations: ============= - #asClassIfPresent: and Co are bad - Why do we clutter the main image if the kernel should change? - Can't we solve these things by having proper other objects? - Is the UnixResolver really needed in the Kernel? I worked with Esteban last week on a similar case in the CommandLineHandler and we ended up introducing a minimal superclass. I guess this goes much in the direction of having proper NullObjects. I really think we should not add these little nasty changes, but rather introduce proper new classes that can be unloaded if needed. What do you think?