Mark Birbeck's picture

How formsPlayer can help take XForms to new platforms

A short while ago we made the formsPlayer source code available under an open source license, on Google Code. We didn't announce it widely because we wanted to get the infrastructure right before inviting people in, but it's something that the team behind formsPlayer have been excited about doing for a while now, for a number of reasons.

The main one is simply that in this day and age, open source is so obviously the way to go; whether it's government departments, multinational companies, educational establishments or individuals, there seems to be no barrier nowadays to people using open source software in their projects.

But perhaps just as important as 'doing the right thing' is our desire to enlist help in porting formsPlayer to new platforms. Our team is small, and would never have got formsPlayer to its current enterprise-level standard without the enormous amount of community involvement we've received, in the form of testing and bug reports (formsPlayer has been downloaded tens of thousands of times). But that means that we're missing out on a crucial asset, the involvement of developers. XForms needs to be on more platforms, and in more browsers, and we think that formsPlayer has a major contribution to make to realising that—but it will only be able to make that contribution if the code is open.

From the end-user point of view, making the code 'free' will probably have little impact; formsPlayer has had a free version available ever since it was first released, and that will obviously continue. And for those who need enterprise-level builds and priority support, we will continue to offer that service. But the team that built formsPlayer has been increasingly providing companies with world-class XForms consultancy, support and training, and in the coming period we intend to put that much more to the centre of what we offer.

So over the next few months we'll be making a number of announcements about new partnerships, new libraries, new tools, and new services. And we'll also have case-studies on our work in sectors such as the UK insurance industry and banking in the US, just as soon as we can find the time to produce them!

We believe that XForms can be central to web and desktop application development over the next decade, and we want to play our part in helping to put it there; taking formsPlayer open source was a significant step towards that.

Mark Birbeck's picture

A better XForms news service

For a long time now we've placed useful XForms links at the bottom of the page on this site. But the problem is that we don't always capture all of the useful sources of information that is available for XForms, and what links we do list are tucked away at the bottom of the page. (You might not even have known it was there!)

So I decided to set up a separate site called Planet XForms, that does nothing other than aggregate a number of XForms-related blogs, as well as various XForms-tagged resources, such as images from Flickr, presentations from SlideShare, videos from YouTube, events from Upcoming, links from Magnolia and del.icio.us, and news from Google. There is also a Feedburner feed if you want to get the whole bundle into your RSS reader in one go.

Planet XForms is completely automated, which means that if you have a screenshot that you want the XForms community to see, you don't need anyone's permission to get it onto the Planet XForms site; just upload it to Flickr, tag it with 'xforms', and it will soon show up. Similarly, if you have a useful tutorial, you could make a YouTube video or upload your slides to SlideShare, and as long as you don't forget the 'xforms' tag, your video or slideshow will quickly be available to anyone interested in XForms.

We'll leave the feeds on this site around for a little longer, but since Planet XForms is going to be so much easier to use, and includes far more material than we have here, we'll wind it down soon.

Mark Birbeck's picture

Yahoo! uses XForms for 'write once, run anywhere' mobile applications

Yahoo! recently announced their entry into the mobile web applications space, with a service that allows applications to be built and hosted using Blueprint, a purpose-built mark-up language based on XForms.

The Blueprint roadmap describes the underlying philosophy:

Much of Blueprint's philosophy and syntax comes from XForms. We opted for a full declarative language because it was the only way we could effectively run on the wide range of devices out there, some of which have no scripting at all. By using declarative syntax, we can encapsulate and hide the scripting specifics. In some cases, the code could run on the phone, in other case, such as XHTML, we can put the logic on our servers. It's the perfect way to deal with the various environments and their capabilities.

At the moment Blueprint is simply converted to XHTML plus JavaScript for delivery to devices, but the mention of XForms gives a clear indication of where they are heading. And given that Google did something similar with the launch of its Google Mashup Language, it all bodes well for a new wave of web applications that won't be built using JavaScript (or even Java and GWT) but will use straightforward, device-independent, mark-up.

Write once, run anywhere, anybody?

For more on why XForms is Ajax on steroids, see:

Mark Birbeck's picture

XForms 1.1 becomes a Candidate Recommendation

XForms 1.1 has just been advanced to Candidate Recommendation status. This is a stage in the W3C's process where the specification is regarded as stable, and all that is needed are implementations of the features. Once there are sufficient implementations the specification can advance to a Full Recommendation.

formsPlayer was the first processor to implement all of the features in XForms 1.0, and by doing so we helped advance that specification to a Full Recommendation. We intend to help the standards process again, by implementing all of XForms 1.1, and whilst we already support most of the major new features, we hope to have the entire standard supported by early next year.

XForms 1.0 Third Edition becomes a Recommendation

On October 29th, the W3C released XForms 1.0 Third Edition as a Recommendation. The main changes are some important clarifications of how parts of XForms work, although there is one new feature--authors can now indicate which version of XForms their forms are targeting.

One clarification concerns more detail on how the rebuild and refresh events should behave, which closes off a few grey areas. Another comprises important information about how controls with an @id should be handled inside repeat; the issue of how triggers, for example, should behave in repeat has been undefined for a long time, so this marks a useful development.

There is also one new feature, which gives authors the ability to indicate which version of XForms their form requires. The new version attribute on the model element can be set to values such as "1.0", "1.1", and so on. If a processor doesn't support the version of XForms that the author has indicated then the xforms-version-error event should be dispatched.

Whilst the key features for web application support will come in XForms 1.1, the Third Edition of XForms 1.0 still contains some welcome refinements.

Mark Birbeck's picture

Server move and Drupal upgrade complete

On Monday we completed the move of formsPlayer.com from a Windows box sitting in a rack at a hosting company, to a Linux instance running in the virtual world of Amazon's EC2. Along the way we discovered RightScale, which builds on Amazon's excellent product to create something quite revolutionary.

During the course of the move we also upgraded Drupal to 5.2, which should give us more control over projects and releases. There are a number of things that are done differently in this version of Drupal, so please bear with us whilst we iron out the glitches.

How to harness the power of XHTML and XForms in your .NET applications

Code Project

Recently, we've had a number of enquiries about embedding formsPlayer inside third-party applications, as more people are realising the benefits of using XForms as a dynamic UI framework. Fortunately, formsPlayer exposes a set of COM interfaces explicitly for this purpose and a number of commercial solutions exist that are currently relying on them. With this in mind, I've posted a tutorial article to The Code Project, one of the leading .NET developer resources, which demonstrates integration of these interfaces in a simple C# browser-like application.

Although the tutorial is by no means comprehensive, I hope it provides enough detail for anyone interested in this area to quickly get themselves up and running. In due course, I'm hoping to expand the tutorial much further to encompass some of the cooler features we've implemented, including event-based communication with rendered documents and serialisation of rendered documents in their live state. To view the tutorial, click here.

Mark Birbeck's picture

Clarification on formsPlayer CE 1.5.4 and 1.5.5

Over in the Upgrade forum Jozef Aerts has asked for clarification on versions 1.5.4 and 1.5.5. As he rightly points out, the 1.5.4 builds of formsPlayer Community Edition are newer than the 1.5.5 ones, which is a problem if you have installed any 1.5.5 builds--you can't upgrade to the newer software, because the version number you are trying to install is lower.

The problem stems from not having made clear in the past which builds are 'previews' (only recommended for brave developers wanting to have a look at new features that are coming down the line) and which builds are part of the main development path.

We've been working for a while on making future developer previews completely separate, to avoid confusion, and whilst we finish this process we've put on hold the new features from 1.5.5 (custom controls based on select and select1 will be easier to create). This means that for 1.5.6 we'll be concentrating on finishing the last few items from XForms 1.1, and resolving any outstanding bugs.

For further information see the formsPlayer Community Edition 1.5 roadmap.

formsPlayer Community Edition 1.5.4 beta now available

We'd like to invite developers to start using and testing the latest build of formsPlayer 1.5.4.

Version 1.5 is not quite complete, but is already much faster than 1.4, thanks to significant improvements in repeat handling, major changes to switch and case, faster loading of data into select and select1 controls when a form starts, and a move from MSXML 4 to MSXML 6 (which also improves memory usage).

We've also continued to implement more of XForms 1.1, so that authors have greater control over data submission, can use output to render images, and much more. A full test-suite is being prepared to both test and demonstrate the full range of available features, so you'll soon get a good idea of exactly what's available. And to make it easier to build tests for your own XForms applications we've also made some important improvements to our Selenium support.

Finally, there are a number of bug fixes, the most important being resolutions to a couple of crashes. They've been difficult to reproduce because they occurred in code that handles the asynchronous processing, but we think we have them nailed now. If you come across others that we haven't seen, we would really appreciate feedback.

Mark Birbeck's picture

Using formsPlayer with server-side XForms processors

Since XForms can run on many different devices then it's obviously important for server-based systems such as Orbeon, Chiba and Intalio to be able to use any client-side XForms processor. This means that even if developers are aiming to avoid any installation requirement on the part of their users, it is still possible to make use of an XForms processor such as formsPlayer or the Firefox extension, if it is found to be already present on a user's machine.

To try to make this as easy as possible, we've released a GPL script that can be placed in an HTML or XHTML document, and which tries to assist in the use of client-side XForms processors if they are installed. The script will also help the user to install a processor if necessary.

The key point is to place control over whether or not to use a client-side processor in the hands of the user. When building HTML sites we try to make sure that browser choice is irrelevant, and the goal is to do the same for XForms. In this section we look at how we can do that.