This seems really fundamental in large-scale software engineering, and perhaps in information 'economics' generally.
It is about the right use of both design and evolution.
You can only design with/for information you have in front of you (that is what design means really). So you should put effort into design only for things you clearly know are wanted.
But on the other hand, distribution of designed software is practically free. That should obviously be done freely (ideally) because then the value of the software can be most fully realised. But there is something beside that. It also allows the unpredictable value of the software -- in reuse, adaptation, rewriting, etc. -- to be fully realised too. What design is unable to cover, evolution is given free range to take on.
( http://www.hxa.name/notes/note-hxa7241-20111218T1151Z.html )