blog

XForms spambots on the loose

A determined spambot has been submitting the XForms contact form on XForms Institute. OK, so it’s probably more Flash-aware than XForms-aware, but still. -m

The Future of XForms

Some of the recent talk on the Mozilla XForms Project's mailing list (dev-tech-xforms) has been about the winding-down in effort on the Mozilla XForms plug-in. There has been praise for the efforts of those developers involved in the project, and quite rightly so. However, some people may be seeing this as a bad sign for XForms in general. Well, not so I say and the reasons for this are three-fold...

On the Best Paper at the ACM Symposium on Document Engineering

I'm just leaving Sao Paulo after attending the ACM Symposium on Document Engineering. Great conference (people and technical content). I'd like to say more about a number of the other papers, but I'll focus here on the one that won this year's Best Paper Award: Enabling Adaptive Time-based Web Applications with SMIL State by Jack Jansen and Dick Bulterman.

The paper presents a very interesting mix of SMIL, XForms and other technologies to enable end-users to customize their experience of content where time dictates the major structure. One example given is of a video bike tour of Amsterdam created by the first author. Fragments of the video content can be identified and tagged with keywords. During run-time, an XForm is used to allow an end-user to select from the available keywords those which they find interesting, and the corresponding fragments of video are played.

This is the type of thinking that will clearly help make video content a first class citizen on the web. There is significant potential for the use of this technology for stream-lining educative experiences as well. Imagine, for example, a 2-hour audiovisual presentation that provides a thorough introduction to a topic, say CSS. But suppose the end-user really needs to know only about setting up borders on tables. By selecting the content, the user can find out what they need to know in 10 minutes. What's more, it is easy to imagine how the technology reported by Jansen and Bulterman could be refined to attenuate the video content download to the selected fragments.

A second example reported in [1] pertains to ad selection within video content. When you download free video for your favorite entertainment, you're going to get ads and you won't have the ability to skip them because otherwise how do people manage to make a living providing you with this free entertainment?? So, sprinkled through the video will be ad slots with default advertisements lined up. But, in addition there will be hotspots on the video where various product icons may appears from time to time, and if the user clicks the icon, then the default ad is replaced with an ad corresponding to the clicked icon. Thus, you could find out what's new at the electronics shop in lieu of an ad for laundry soap or some such.

It's a great example on the technical side of the need for interactive video, but this is because there's huge market potential for this idea. Not only does the user get a more pleasant ad experience with their free content, but the content provider gets to find out what their audience is most interested in, and the advertisers get to find out what content their customers are most interested in. Very Web 2.0.

I encourage you to download and read the paper.

The "Ubiquity" Strategy for Promoting W3C Standards Adoption with AJAX and Modularization

At the specification level, the W3C Forms working group is working on modularization of XForms as one means of promoting incremental adoption. This is following the simple business axiom that "embrace and extend" is economically preferable to "rip and replace". If you have existing web applications, and you want to start incorporating selected features of XForms to get at certain benefits, it helps to be able to get at just those features without having to change your entire application over to XForms in one development cycle. Modularization supports agile development.

The Forms working group is now also working on XForms 1.2, even as XForms 1.1 continues toward full W3C Recommendation status. In XForms 1.2, the second approach the Forms working group is using to promote incremental adoption is to stream-line web application authoring through emphasis on attribute decoration and exploitation of UI element nesting as a means of expressing the simpler classes of MVC applications. The attributes are attached directly to UI elements, but they imply a proper XForms MVC architecture. In other words, the XForms processor can read the attributes and auto-generate a proper model for you. To get an idea of what the stream-lined vocabulary might look like, and what canonical XForms it might correspond to, look here.

The approach of providing stream-lined syntax is simpatico with modularization for two reasons. First, it means we can provide the stream-lined vocabulary and processing model as a module separately from modules that provide the components of the core XForms engine (e.g. the instance data module, the submission module, and so forth). Second, the stream-lined syntax approach means that authors can start with attribute decoration and UI nesting, and then scale up in more complex functional areas as the need arises by adopting the core XForms modules appropriate to the problem at hand.

The stream-lined syntax approach is also interesting because techniques such as attribute decoration, UI nesting, and progressive elaboration of a document are techniques familiar to AJAX developers and made popular by AJAX libraries such as Dojo. In fact, I am really coming to the conclusion that AJAX libraries are a viable alternative to browser-maker adoption as a means of delivering the most web-centric components of the W3C technology stack. It should not be necessary for Microsoft, Mozilla, Apple, Opera and other browser makers to build a W3C technology into their browsers before it becomes widely adopted and deployed. More importantly, this means that the W3C, not the browser makers, defines the web and its standards.

A round of XForms engine performance improvements

Now that Orbeon Forms 3.7 beta 1 is out, we have committed a series of changes that intend to improve the performance of the XForms engine. These particular changes initially focused on <xforms:insert> and <xforms:delete>, but they ended up requesting a fairly major refactoring of the XForms controls code on the server. Some (probably obscure) [...]

Orbeon Forms 3.7 beta 1 is available

We have just made Orbeon Forms 3.7 beta 1 available for download. This release contains about 200 issues addressed since Orbeon Forms 3.6.

There are still a few blockers to address before we can release 3.7 final. Here are useful links to see what’s left to do:

Issues by highest priority

Recently open issues

Recently closed issues

Enjoy!

What we have been up to

In the last few months, we have been regularly posting updates to Twitter so we have had less of a need to write full blog entries. But now we feel that owe the followers of this blog a higher-level update:

Form Builder and Form Runner. A big priority is our continued work on Form Builder and [...]

XML Data Interaction for All via XForms Modularization

The XForms team finished our face-to-face meeting in Amsterdam last week. A major focus of the work on XForms 1.2 is called modularization.

The rationale for this work is the observation that the set of XML data processing problems which may have first arisen in the electronic form space are really more generally applicable to the XML data processing needs of RIAs and web applications. On the other hand, those who hear the word "form" may think they do not have a form problem because they still think of a "form" as a simple or static application like those for ordering pizza or flowers. However, XForms has solved numerous problems that keep coming up again and again throughout the W3C standards stack as well as the web application stack. By modularizing the components of XForms, we believe we can increase adoption of the components in other technologies which may not have need of all aspects of XForms.

The current view of the XForms 1.2 modularization can be viewed here. As an example of the rationale above, consider an application that may want to use the submission capability from XForms in a regular web application. The application would import the instance data module, but it might have an application-specific way of populating a data instance with data. The submission module would reference a data instance for the upload data and another instance for the submission results. An application-specific method would then be invoked to consume the submission result into the application, but the means of invoking that method could be an event handler for the xforms-submit-done event. The key issue here is that submission could be consumed by a non-XForms application without needing to incorporate the XForms recalculation engine, user interface controls and so forth.

The full elaboration of this modularization will allow applications to consume pieces of XForms incrementally, including the notion of data validation, data relevance, declarative data calculations, event-drive action scripting, repeats, switches, groups, basic user interface controls, and of course submissions.

The Finch and the Raccoon

The blogs on xml.com are down so I have reposed this here.

Have you ever wondered if the laws of evolution apply to computer languages? When you walk down the isle at your favorite bookstore, does it seam like there are actually more computer languages than last year? What forces are driving each of these new languages to evolve?

In 1835 Charles Darwin visited the Galapagos Islands. There he collected what he thought were about a dozen distinct species of birds. Upon returning to England he discovered that each of these species had evolved from a single species of finches. On the various Galapagos Islands the requirements for food gathering was different, but consistent over hundreds of thousands of years. Enough time for a single species to adapt to meet consistent requirements.

Consider the Raccoon: omnivores that have proved to be one of the most adaptable mammals on Earth. The Raccoon’s range has rapidly expanded into urban areas due to their ability to quickly adapt to new requirements before other animals have had time for the wheels of evolution to turn.

So goes it with computer languages. Some procedural languages can be quickly adapted to fill in the needs for a new niche. When the web was young, procedural languages like Java and JavaScript quickly filled in the need for a variety of tasks. As the requirements for building web applications stabilized, declarative systems like CSS, XForms and XQuery started to push procedural languages back into niche-areas. As these declarative languages stabilize and become worldwide standards, graphical tools are being created to allow non-programmers to create, manipulate and extend these systems.

This is why many of us believe their will always be some need for procedural programming, but certainly not for building standard web applications that are controlled by style sheets and user interaction forms. Like the finch, declarative languages need a little longer to evolve. It sometimes takes years for a small vocabulary of functional specification patterns to emerge and be given labels. Additionally, it can takes years for the standards bodies to agree on the best way to deliver these new languages in a set of semantically precise data elements that have unambiguous interpretations. Finally, it may take another few years for IT managers to realized that they really do lower costs if they avoid vendor-specific implementations and adopt worldwide standards.

When CSS first came out you may have been a little reluctant to let web designers play with a rules engine. As XForms becomes ubiquitous you may be resisting change because you have invested so much time and energy learning how to debug JavaScript (without a debugger). You can not hold back the forces of evolution…and now we all need to adapt to the declarative world or risk our own extinction.

If you are interested in more on this topic see my Presentation from the 2007 Semantic Technology Conference The Semantics of Declarative Systems

XRX

Bumped into XRX today. XForms + REST + XQuery. I like the sound of this, and XForms on the client just got a whole bunch easier…
I’m seeing multiple signs that the confluence of XForms and XQuery has legs. (And REST just plain makes sense in any situation). -m

XForms Validator on Google App Engine?

I registered ‘xfv’ on Google App Engine. Too bad there doesn’t appear to be any significant XML libraries supported. I have XPath covered by my pure-python WebPath, but what about Relax NG? Anyone know of anything in pure python? -m

XRX: Simple, Elegant, Disruptive

I recently started writing for O’Reilly Media. I posted an article on XRX.

Here is the link:


http://www.oreillynet.com/xml/blog/2008/05/xrx_a_simple_elegant_disruptiv_1.html


We are just getting started moving to a new MoveableType (MT) system so not all of the features (like keywords and feedback) are working.


If you have problems commenting on the site, please feel free to post your comments here.


Here is a comment from Arun Batchu:


An elegant introduction to an elegant architecture, Dan. Thank you. The essential takeaway from what you describe is the exploitation of XML from one end to the other end - especially from the Developer's perspective, for, how XRX actually manifests in runtime could be left to implementation technologies. Thus the logical architecture of XRX could be realized by a few variations of concrete technology - which is great. The XForms could be realized by XForms server technology (such as the excellent Orbeon stack), the ReST could be realized by any middle tier and the XQuery could be realized by an XQuery engine (such as Data Direct) that may actually be driving any one or a combination of datastores (XML, SQL, file system or ...) . The symmetrical and consistent leverage of XML as a data model from creation to transport to rest and back eliminates a whole lot of wasteful work. Like you point out, XPath is one of the most powerful query systems I have encountered; you can pack so much in so little and reuse it across the board with little if any change from the drawing board to production. In such a system as you describe, a business rule expressed once can be reused anywhere - from one end-to-end , however long the travel, as long as the architecture is XRX, like you have described. Thanks for expressing it so well. A few of your readers will not get it - it is one of those things that once you experience it, you are left wondering why this did not happen before. Oh, well!




You are welcome! Thank for your feedback Arun!

XForms Ubiquity

I just found out about a nice little XForms engine called Ubiquity. (Having dinner with Mark Birbeck, TV Raman, and Leigh Klotz certainly helps one find out about such things) :-)
It’s a JavaScript implementation done right. Open source under the Apache 2.0 license. Seems like a nice fit with, oh maybe MarkLogic Server? -m

XQuery Annoyances…

If you are used to XSLT 1.0 and XForms, you see { $book/bk:title } and think nothing of it. XSLT 1.0 calls the curly-brace construct an Attribute Value Template, which is pretty descriptive of where it’s used. Always in an attribute, always converted into a string, even if you are actually pointing to an element.
In [...]

Announcing Orbeon Form Builder

It is with great pleasure that we are announcing Orbeon Form Builder. Form Builder allows you to build forms right from your browser and aims at taking the pain out of building forms. It is 100% open source, standards-based, and built on top of the Orbeon Forms XForms implementation, which we have been refining for [...]

See You Next Year, JavaOne!

That’s it, JavaOne 2008 is over! We were on the OW2 booth for three days last week, busy demoing the latest in Orbeon Forms.

We got a few good contacts during the conference, which also provided us with the opportunity of knowing the rest of OW2 guys better. Go check out the web site, you will [...]

Lotus Forms and ODF under Notes Platform at the Biztech Showcase

Within IBM, there is an "Extreme Blue for Employees" program called Biztech, which promotes innovative development within IBM by funding special projects developed by teams that can come from all across IBM. Today, the 6th Biztech Showcase is being held at the IBM T.J. Watson Research Lab, Yorktown. It consists of 12 projects including ours.

Our project, which will be presented this afternoon, is called Dual Forms. To understand the basic business problem, suppose you have a complex office document such as a contract, a patent filing or a new supplier agreement. It will have many sections to fill out, some with precise information like names, supply codes, dates, milestones, deadlines, and payment amounts. These are things that need to be validated in order to prevent errors, or which may need to match with data stored elsewhere. However, other parts of the document will contain free flowing text, such as special terms and conditions. The document may also contain pie charts, bar graphs, or other rich content that serves as visual aids. The key here is that the document is complicated and hard to complete, which frustrates those who must collaborate to complete and results in costly delays in completion.

Now imagine you had a technology that could augment the office document completion experience with:

  • wizard behaviors that take the user step-by-step through the fill process and help correct errors immediately
  • automatically invoke web services of an SOA to obtain data during the fill experience, rather than making the user responsible to type in matching data.
  • digital signature security so that the legally binding agreement can be made electronically rather than having to print, sign, fax, scan and store document images.
  • automatic submission of completed documents to the back-end workflow system or the repository of executed legal agreements.

This is the domain of Dual Forms. The Lotus Forms technology provides the above benefits as well as the ability to enclose any other files within a Lotus Form. One such enclosure can be an ODF office document. Lotus Symphony is an implementation that runs under the Lotus Notes application platform as well as the underlying Lotus Expeditor application platform. In this project, we've created a Lotus Notes composite application that allows the Lotus Forms Viewer to run under Notes, including read/write access to the running form. The composite application also hosts the Lotus Symphony ODF editors at the same time.

Using this project, the end-user can get access within a single application to the capabilities of office documents AND the capabilities of Lotus Forms (wizards, help, web services, signatures, document submission to the business process). The underlying technology that allows the two rich document formats to interoperate is... XForms.