I feel that we too often feel we have to specify a service, understand all the functional requirements, survey the community, get it right the first time. This leads to the "if we build it will they come". The "it" becomes really big, and the "coming" becomes really important. What if we built just enough to get them to start coming? If we fail, "they" don't show up, we try something else. If "they" come, we wait for them to demand services, to tell us what should come next, to help us understand the functional requirements. We build for the community that grows. More of an "if they come then we build it model," or as a colleague put it today, a "dream of fields."
I have no idea if LT really evolved this way, I'd love to know. But it sure feels like it has. I think we need to learn to evolve library systems in similarly iterative ways. I fear we will miss the boat otherwise.