Sunday, October 29, 2006

My visit to the metadata library

Last night I had the strangest dream…

I was looking for a good mystery, perhaps a Sherlock Holmes book. I went to the library and an elderly lady at the front desk said “Welcome to Roy G. Biv Library. How can I help you?”

“I am looking for a Sherlock Holmes mystery. Do you have one?” I asked.

“What color of book are you looking for?” She asked.

“Well I don’t really care what color it is.” I replied.

“Well in this library, our books are sorted by color of the cover. The red covers are over there, the orange covers over there and the yellow ones right over here. You get the idea. Shelving books by color makes it very easy for us to shelve a book because the color of the cover is obvious. It also makes it easy to see when a book is miss-shelved. You can see the miss-shelved books right away.”

“Yes, I can see how that would make your work much easier. Do you know where I can find the Sherlock Holmes book?”

“Well, it would help us a lot if you could tell us what color the cover is.” She said firmly.

“I don’t know what the color of the cover is…, I just want a mystery book about Sherlock Holmes!” I said exasperated.

“Well, why don’t you just start looking at the reds, then orange, yellow, green, blue, indigo and finally violet. I am sure you will find it in a few days…”

Then I woke up and when to work. There the staff was attempting to store all the data elements in the enterprise sorted by the system name that each data element was first recorded. Then my real nightmare began.

Monday, October 23, 2006

We Declare!

Many of you may be wondering why a data architect has been spending so much time talking about XForms. I have been using XSL for many years to transform XML and I have loved the declarative aspects of XSL. My friend Arun has been challenging me to articulate the key aspects of declarative programming in the context of our join efforts to promote metadata registries. Here is my first version of a Delarative Manifesto.
  1. Declarative development is about the precise association of a programming symbol with the semantics of a design pattern
  2. Declarative approaches leverage the inherent pattern-matching structures of the human brain to allow developers to quickly recognize the underlying patterns used in a system
  3. The rapid association of a symbol in a program to previously encountered problem by a wide audience is essential for developer productivity
  4. Developer productivity is dependant on the efficiency of matching a symbol to a previously encountered approach to a problem
  5. Shared meaning happens when a community agrees that a symbol should be associated with design pattern
  6. Tools that help us quickly promote shared meaning make us all more productive
  7. Published and carefully annotated XML Schemas and formal metadata registries are ways of associating symbols with precise semantics
  8. Developers need tools that allows a new tag to be quickly associated with the semantics of the tag, history of the tag, usage of a tag and similar tags
  9. Declarative programming makes development more accessible to people that don't have a computer science background
  10. Advanced collaborative computing tools, a focus on architectures of participation, and social networking software will dramatically impact our ability to rapidly create precise semantics

Friday, October 13, 2006

The Power of Declarative Programming

This presentation by Steve Pemberton of the W3C on declarative programming is very insightful. Thanks goes to Mark Birbeck for pointing it out. I hope we can get more students exposed to technologies like XForms much earlier in their programming careers. Take this use case. Today we give 10 students a simple assignment to create a tab menu in JavaScript we would get 10 very different programs. But if we gave them the same assignment XForms they would hopefully all use similar toggle-switch structures. This has big implications for maintenance. Hopefully there would be less temptation to recode an XForms application. Since over 50% of software is maintenance this could have long-term impacts on developer productivity.