---
Update
sej, Perhaps I misunderstood your original
message. First you call for more reuse, then you state you
have no problem with multiple overlapping libraries as long
as they stand on their own. Well, if they overlap in
functionality then person has pretty much ignored reuse? The
balance you speak of pretty much exists. There are people,
with incredible persistence mind you, who will attempt to
understand and extend the work of others. I was once one of
these people. I assumed this huge barrier of entry to every
project was just a fact of life. And so you must carve out
your niche, choose your projects, with no hope of ever
understanding the system.
Well, since then, I've been shown that learning curve needed for every project in the system is completly unecessary. In fact a single person can have complete understanding of entire system. This is not to say the learning curve is eliminated. The learning curve is understanding the system. Every thing else builds builds upon this knowledge.
Then you go on to suggest we "educate" students to understand and fix and extend others broken software. A question we should be asking is why is practically everybodies free software ridden with bugs? Is possible to release bug free software? Indeed it is. It is a magnificent thing to see too. When someone has understood the problem thoughly, and has executed the solution flawlessly. The possibility of doing this is only within reach when the total system complexity is of a certain level, because effecively to write bug free software you must understand the system completely. If the system is buggy it is impossible to write bug free software. So, I would prefer educating the students (BTW, I am a student) to look to the future. To see the mistakes we have made (and admit to them!!), and start looking at what ways we can produce better software. I think the problem lies mostly in former, admiting that what we produce is rubish, and starting anew. Not to produce the same system, with the assumtion that somehow our previously attempt flawed. But a radically different new system which critically analyzes the flaws in the previous system and addresses these problems directly. And I maintain, if we are to seriously address the problem of reuse, this system should have one uniform space. Not arbritrary barriers between kernel, library and applicaion.