Software has two users
I’ve been reading some Richard P. Gabriel stuff lately (mostly related to the Feyerabend project) and thoughts about code have begun to pop into my head. Gabriel often talks about how the fact that most software is closed-source results in there being virtually no “literature” available for study. “And we expect people to learn to program in exactly this context?” he asks.
I think it’s important to realize that software has two types of users. Usually, software is seen as being developed by developers and used by users; but developers are users – of the code. As for the end-user interface, the people working with this can examine other interfaces and learn: everything is open-source. For programmers, it’s so important to learn what it is that makes some programs easily maintained and others unmaintainable. This is why it would benefit the entire industry as a whole if all code was open-source. This is what Gabriel keeps talking about.
Actually, I feel that this is much more important than being able to build upon the works from the past – which is what Larry Lessig talks about when he says that copyright should be about 5 years for software, with the code being held in escrow. (Well, in a sense I guess it’s the same thing; by studying the code from the past, you are building on it, but this aspect needs to be talked about, I think.)