Sunday, July 06, 2008
Convention Over Configuration, Are We Going Round in Cirlces?
Convention-over-configuration is becoming increasingly popular as a term of reference to that which is the design or usability principle. I speculate that it is picking up momentum nowadays due to the Jedi-like Force that is Rails, a bunch of hokery-pokery, voodoo and black-magic. What strikes me is that not so long ago there was similar advocation of declaritive-over-imperative, presumably for language paradigms. It therefore seems to me that we are going in cirlces: I have seen the Ruby/Rails guys I work with wave their magic-wands and it sure as hell looks like a bunch of imperative command-line stuff to me. But perhaps, generally speaking, I just have the wrong perspective, a two-dimensional perspective. What if we look at this in three-dimensions and shift the metaphor to a cone rather than a circle. And with each iteration we move toward the apex; we move up a meta-level in search for the ultimate abstraction, whatever that maybe. So what is next? Are we due a declarative-renaissance? Kind-of feels too soon for that, ay? As well as Ruby on Rails, my colleagues and I are developing Flex apps. I mention this as Flex's MXML is the closest thing I can think of, off the top of my head, that is declarative (there is Maven, but let's not go there). If we limit the space for things to consider to UI frameworks, MXML trumps all others. In fact (or at least in my opinion) it is, by design and intent, a deliberate declarative abstraction on ActionScript. Somehow this example does not quite fit the bill. It may epitomise declaritive-over-imperative but I feel it causes too little displacement, or rather too litle attention relative to Rails. It does not really exemplify something so grand as the community chorusing an opinion [as if it really ever does]. Perhaps my exploration of this idea is going to far ahead. MXML and whatever are likely residual from the last wave-of-declarative. Incidentally, I think it is safe to say we are entrenched in a configuration mess. However, continuing with the metaphor: While rising to the top of the cone, our radius and thus space for improvement is shrinking. If what we are doing is layering abstraction on absraction to make what we have been doing (OOA/D/P) easier, maybe it is time to change what we have been doing. Perhaps get behind the functional-renaissance; perhaps adopt Erlang. Perhaps we will have a new cone for what we would be doing, thus a new base and therein a greater radius to improve the common practice of what would be done.