Hi Martin,
Pedro Faria
1

I’m sorry but I’m uncertain about what you’re suggesting beyond the ability to organize how you view your code base in any fashion your available analysis tools will allow. I will attempt a couple of different answers depending on your intended meaning but I’m sorry if I miss the mark here.

If the idea is that one should do away with packages as an organizational construct and simply use a single concept (say classes) then I don’t think that’s a bad (or new) idea provided that you can use classes to contain other classes in order to construct isolated components at any granularity. But I also don’t think using classes rather than packages as components change things a whole lot from the perspective of my article.

If on the other hand you are suggesting that there should only be classes and that all classes should exists at the same level, e.g. without being nested or hidden from each other and that all units beyond that should be ad hoc and up to the viewer then I’m skeptical. I believe that the best way to reduce mental load is to managing dependencies carefully in order to limit the number of concepts (methods, classes, …) in any given unit of code and that this can best be achieved by organizing code into an hierarchy of components with clear responsibilities and interfaces. To achieve this I believe the components need to be explicit in the code, not implicitly specified in the way classes relate to each other. I have personally never seen a code base which is organized by kind spontaneously grow clear subsystems with well defined responsibilities and strong guarantees beyond the single class level.

I fundamentally don’t believe that organization into packages is a problem and burden but rather an important opportunity to manage complexity which the single level system would simply lack. I further believe that this limitation of the single level system will make it utterly dependent on sophisticated analysis tools which are largely unnecessary in a properly factored system because the complexity they are designed to analyse is simply eliminated.

And finally I believe a system organized by kind is morally akin to a single level system without the tooling you propose.