Brainiacs and MulleIDE
I am making as much progress on the MulleIDE, as time permits. The general idea behind this IDE is, that I want to do the least amount of work, yet get the optimal result. The only way to achieve this is through a community process, where other people write the stuff for me :). The MulleIDE isn't even close to any alpha stage, but yet I have to make all the provisions to it being extendable.
For that I am using Brainiacs all over the place. The Brainiac is a little class, that uses NSNotification to figure out suitable subclasses for handling some unspecified stuff. There is a priority scheme involved, there maybe user selection, and there is NSUserDefaults also somewhere in the mix.
One kind of Brainiac, the FilesystemGenericBraniac for example is used on files, to edit them or retrieve icons of a particular file. The MulleIDE supplies the FilesystemGenericBraniac which offloads the work to the operating system :). More specialized Brainiacs can be written that do more.
Another type of Brainiac are RenderBraniacs, that are used to write the internal representation into Make, JAM or Antfiles. MulleIDE will just supply a MakeRenderBrainiac. In the distant future it would be nice to also have an import Brainiac, that imports regular Makefile into the internal representation.
There will be very little subclassing for subclass writers in this environment, possibly none, except maybe for Brainiac classes.