In Nick Gall's OSCON keynote this morning, he pointed out the common features of TCP/IP and shipping containers. He claims that software architectures have failed to sustain the open source ideal of "freedom to change." On average, enterprise application software (EAS) systems decay from easy-to-change to hard-to-change with a half-life o five years.
The Internet architecture, on the other hand, still delivers decentralized innovation after 20 years. Four internetworked architectures exemplify decentralized innovation: IP, email, Web, and intermodal containerized shipping. I can hear you say "huh?" Keep reading.
In a paper called "Interoperation, Open Interfaces, and Protocol Architectures", David Clark puts forth an hour glass model of internetworked architectures with a spanning layer as a key point at the bottle neck. In the Internet, the IP protocol is th spanning layer, for example.
Internetworked architectures should be interoperable, composable, extensible, generic, federated, and simple. Achieving these characteristics in an architecture requires that you create three standards:
- Identifier (address, reference, name)
- Format (document, message, packet)
- Protocol (interaction, behavior, request/reply)
Email, Web, and containerized shipping have all of these in their own form. The hourglass in containerized shipping is takes multiple goods (grain, chairs, umbrellas) and stuffs them all into standard intermodal container (the spanning layer in Clark's terms) and then these get put on any kind of transport (ship, rail, truck).
Web 1.0 made a three compromises. It was read-only, one-way links, and macroformated (page-level granularity). Gall says that search engines are an example of something that's been layered onto Web 1.0 to deal, in part, with one of these compromises (back-links). Web 2.0 fixes these three compromises.
There will be unintended consequences of architectures in internetworked architectures. These can result in serendipity (like mash-ups, RSS, and podcasting) as well as perverse effects (like viruses, spam, and phishing).
In summary: slapping the GPL on a petrified hair-ball does not make it truly free. To make it truly free, you must also make it easy to change. Open source systems that are not designed, as much as possible, to use an internetworked architecture, won't be easy to change and, hence, won't be truly free.
Also, David Hannson, the originator of Ruby on Rails gave a presentation in the plenary session with a simple message: flexibility it overrated. This is, in general, the message of any framework to some extent. Reducing choice speeds development. Rails is aimed at reducing all the choices developers have to make in getting start to increase their velocity in the real goal: creating the application.