The current setup with kernel and modules doesn't make any sense.
- the different modules (misc and core) are not well defined
- kernel is useless by itself and it is the only place where we can easily put things that are widely used as base classes or arguments, so having it be less convenient to contribute to doesn't make sense
- since it is so hard to patch the kernel, bug fixes take much longer (for example, it took a week for the tiny changes needed to fix the windows build to be made), the documentation is worse (see the bug tracker) and there are more outstanding bugs than in IMP.core (ditto, see the bug tracker). This is a bit silly.
- since it is such a pain to work with code in the kernel, lots of things get put into suboptimal places (such as the transforms in IMP.misc and the modifier base classes in IMP.core) where they be easily put into svn and made visible to others. The same goes for docs (for example introduction.dox is currently in core as that was the only place it could be put while still being easily modified).
- if core fails the tests, the daily build is just as broken as if the kernel fails
- the current setup increases the amount of work for Ben since only he can fix problems in the kernel and the difficulty in patching the kernel means that that average patch size he has to look at is much larger than if changes could be checked in directly.
As before, I advocate, removing acls on the kernel and docs and dividing things into clearer modules such as - kernel (base classes and things that are commonly passed as arguments to functions) - core - geometry (restraints and things which work directly on geometry, just since core is getting awfully big, we don't have to have this though- geometry could depend on CGAL if available as that provides improved functionality) - experimental (code which is just testing things) - em - domino - saxs