blogs

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

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.

Mark Birbeck's picture

XForms custom controls, using XAML and Silverlight

Silverlight clock as a custom control in XForms/formsPlayer

The title of this post may sound like an attempt to squeeze as many buzzwords as possible into one line, but I'm genuinely excited by all of the technologies mentioned. Everyone knows that Microsoft's commitment to standards such as HTML and XForms is legendarily lacking, and this is nowhere more obvious than in the quaintly kludgy XAML. But that said, there are some very interesting ideas in the language structure itself, and it's clear that they have done a very impressive job with Silverlight.

So whilst we're certainly not planning to water down our belief here at formsPlayer that standards are (usually) a good thing, we've never seen anything wrong with a pragmatic approach that uses whatever language gets the job done. Having said that, if it's possible to encapsulate non-standard languages like XAML--or even UI-specific languages like SVG--then we will always try to do that.

Which is why we've created a new section on custom controls, and added two new tutorials. The first shows how easily custom controls can be built with XAML and Silverlight, whilst still maintaining a clean separation between the forms that use the controls, and the controls themselves. A second tutorial shows how to create a simple map control, which inherits from an image control.

Using custom controls to more clearly represent different types of data is an important part of our approach to XForms, but at the same time it's important for us to ensure that exciting new technologies such as Silverlight can be used with XForms and formsPlayer. These tutorials make a start, and they'll be followed by a lot of other custom control work in the coming months.

Mark Birbeck's picture

Skimming, and an Open Source project for a GData XForms client

For me, one of the most exciting developments on the web in recent years has been the growth in services that let you manage raw data. Many of the most useful such services originate when some web-based application--such as Google calendars or spreadsheets--exposes the underlying data. For example, with Google Spreadsheets, it's possible to use ATOM to query spreadsheets for certain values, or add rows and columns, making this a very powerful way of storing data 'in the cloud'. (See Web 2.0, Copernicus and Spartacus: Moving the centre of the web.)

We're building quite a few XForms applications that make full use of this power, and it's something I'll be talking about at XTech 2007, in my session XForms, REST, XQuery...and skimming. Since the approach we use could work on any XForms processor, talking to any ATOM-based server, we've decided to create an open source project to host the forms, and document their use. If this is an area of interest to you, check out the GData XForms client project on Google Code, and its discussion forum.

Different behaviour of repeat in 1.5 and later

Forms with xf:repeat may render differently in version 1.5 and later, compared to 1.4, this is due to a change in the relationship between repeat, repeat-item, and the document.

This can best be seen where the background-color of repeat-index or repeat-item differs from the background-color of the document. This is rendered as a strip of differing background colour over the entire width of the page, rather than being constrained to the apparent width of the repeat-iteration (i.e. the width of the contained controls and text), as it is in 1.4.

Mark Birbeck's picture

A toolbar for searching the Prototype API documentation

formsPlayer toolbar for searching Prototype API docs

A recent announcement that documentation for the Prototype Ajax library was now available was followed almost immediately by a rather neat looking desktop gadget and a Firefox sidebar. Not to be outdone, I decided to put together a toolbar for Internet Explorer, and managed to do the whole thing with one XForms form control and an action handler--and of course, no script.