Global Library Redesign
Libraries to consider
The most interesting libraries in terms of reorganization and redesign are those that collect a huge number of classes that serve very different purposes. Most prominently these are svx, svtools, comphelper, tools, unotools, goodies and to some extent sfx2.
The basic idea is to group the contained classes more content oriented, not hierarchy oriented. "Hierarchically" oriented means that we grouped classes together not by content but by dependencies. Instead of putting all toolbox controllers into a common library we put those controllers using svx classes into svx and others into sfx2. This might have minimized build dependencies in the current environment but it prevented a general optimization. In a general redesign putting them into one library makes more sense.
Some of the classes in these general purpose class libraries may be moved to others that itself are not part of the general reorganization. Example: svtools contains some controls but it would perhaps make more sense to move them to vcl where all the other controls are located.
Content of svtools
Content of svx
Move all "item" related code into one library. We have to decide whether this means that the new "item" library will link against the Drawing Layer or if we shall initially exclude items using pointers to objects of the Drawing Layer. In the long run these items must be replaced by something more lightweight as they violate the basic idea what an item should be: a class transporting a bit of information, not a handle to a whole world of functionality.
Move all toolbox/menu/statusbar controllers ("generic UI") into a single library.
Move msfilter code from svx into a single library.
Move graphic filter code in svtools and goodies into an own library.
Separate UNO components in all libraries into one or more libraries. General class libraries shouldn't provide UNO factories.