Brendan wrote:Well no, a tree-like hierarchy of classes would be just plain broken.
I'd call it “massive usage of inheritance” and not exactly broken, but well…
Brendan wrote:Class diagrams are one way to make it easier for people to understand the big picture (e.g. the relationships between classes).
This might be true. I doubt it in general, but I would especially doubt it for the way you intend to use class diagrams (i.e., a single one per project) – I am however not sure whether I may do so, since you seem to have an understanding of projects which leads to them being pretty small. Thus, maybe your projects consist of less than ten classes and even I could keep track of everything when looking at their class diagrams. If that is the case, the following argumentation will obviously be not correct, since it assumes having more than a couple of classes per project.
Brendan wrote:There's no need for class diagrams (or something like it) to be hierarchical.
OK, your class diagrams will lack any kind of hierarchical structure. You'll split the whole project into all its classes and present them with equivalent importance.
Brendan wrote:I used Linux as an example of "plain text files in directories don't make it easy for people to understand the big picture".
I already argued that I think this is because of a poor choice of directory naming, but in any case this structure allows at least some kind of hierarchy.
Brendan wrote:Splitting large monolithic things into smaller separate things is a way of making sure the big picture isn't too big.
I'd like to change this to “splitting large monolithic things into not too many smaller separate things […]”. If there was a project written in an object-oriented language of similar complexity as Linux with all files contained in the root directory (where each file contains a single class) and an image containing a class diagram, I guess I'd lose my mind instantly. But if the project was split into several “subpackages” and these are in turn split into packages and so on, it would be a lot easier to understand – at least for me.¹
tl;dr: Personally, I get easily confused without any kind of hierarchy in large projects. If that is not the case for you, I greatly envy you.
Therefore, the class diagrams you intend to use will probably help me not at all.
However, you yourself admitted indirectly with that last quote that the old directory system is not inherently bad: Directories indeed
are one way of splitting large monolithic things into smaller separate things.
———
¹Maybe this is just what you'd define as a project: A thing which I'm here calling a “package”.
———
OK, I just read your next to last post and I think it clarifies some things. You don't intend to write an OS and an IDE (structuring projects through their class diagrams only) for use by others but by yourself only. Actually, I now don't see why I have been arguing with you anyway. If you like such structuring, there is of course no point in telling you that I don't like them. At least, if you don't care what others think about it. And this is obviously completely understandable: You're designing a system which you (and some or many others thinking the way you do) want to use.
This also makes clear why you don't want any of the existing e.g. image formats but create one instead which in some way unites them all. If you don't see why many people even bother to choose between JPEG, PNG, SVG and many others, there is no point in telling you to let the user choose – since that user will be you (and others thinking the same way, as said before).
(And please, don't get me wrong (because it sounds somehow ironic when I read it again): I really understand such choice.)