Analyst Nick Gall, in a podcast at IT Conversations, on precepts that make systems modular and extensible. His basic point is an old one, but well made: In order to have freedom for extensibility, you need a solid, but basic underlying architecture. Too much architecture in the framework, and you’re locked in, without sufficient freedom. Too little, and you have neither interoperability nor room to improvise.
Gall compares the simplicity of the lowly IP packet — source and destination addresses, protocol identifier, a TTL, and a payload — to the similarly internationalized system of modular shipping containers, which move so easily from train to truck to ship, can slide quickly between countries, arriving easily at their destination without ever having been opened. TCP/IP and the meatspace shipping container system form near-perfect mirror images of one another. The shipping container, in essence, is a 20-ton packet.
The balance between simple, formalized, underlying structure with a high degree of overlying freedom, applies to so many things. Thinking now of a thread we had here a while back on the fact that HTML standards are not enforced, while TCP/IP standards are.
And of a Drupal users group meeting I attended today, where developers referred to the balance they try to strike between creating enough structure to let you get things done easily in the CMS, but not so much that the system isn’t infinitely extensible.
And of jazz: Too little structure = inaccessible, chaotic (not necessarily a bad thing, but generally not successful). Too much structure = rigid, soulless, boring.