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

5 comments:

Anonymous said...

"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."

3.Published and carefully annotated XML Schemas and formal metadata registries are ways of associating symbols with precise semantics.

Question: Why do you need XFORMS at all. Add Form Metadata to XML Schema. Transform to form using xslt.

All Browsers except Safari support client-side xslt. Few Browsers Support XFORMS.

Anonymous said...

"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."

3.Published and carefully annotated XML Schemas and formal metadata registries are ways of associating symbols with precise semantics.

Question: Why do you need XFORMS at all. Add Form Metadata to XML Schema. Transform to form using xslt.

All Browsers except Safari support client-side xslt. Few Browsers Support XFORMS.

Dan McCreary said...

It is true that XSL is very powerful and flexible. But XForms allows you to do many things that XSL does not. For example in a single line XForms allows you to import an XML Schema and automatically validates the fields in a form based on the rules in the XML Schema. XSL is for transforming XML from one format to another. XForms is for creating web-based applications. For more examples see my XForms cookbook at http://en.wikibooks.org/wiki/XForms. I would specifically encourage you to check out the validation examples. For example XForms can work with CSS to automatically turn required and invalid fields a different color.

Dan

Unknown said...

I think your Declarative Manifesto is a brilliant idea. What is your "declarative" (declared?) position on XQuery?

Dan McCreary said...

XQuery is a great step toward making more of programming declarative. As long as you are not writing many large complex declare functions (each with their own specific meaning to you but not to the world), you are doing much more declarative programming.

We are using the exist database and making lots of good progress at totally eliminating procedural code from our application stack. The key is to use XForms and XQuery in the transactional front-end and put the data into a data warehouse for the analytical phase.