Sunday, October 29, 2006

A 16 Months Iteration

I have finally been able to release a first alpha version of jinFORM, 16 months after the project started. The title is voluntarily provocative: it was not an iteration but a slow maturation!

Why did it take so long? As explained in jinFORM news, part of the time has been spent waiting for a presentation server able to render some much needed features of XForms 1.1. Initially, Chiba was targeted as the presentation server but testing and experiments have finally pushed the project to use Orbeon Presentation Server, which offers a more stable XHTML + JavaScript rendering, a better compliance to standards (XForms, XML Pipelines...) and the much needed XForms 1.1 features mentioned before.

So, what is jinFORM 0.1.0 worth? Not much for production: you can only fill simple forms with repeating sections, but without computation or logic. The only submission that is currently supported is for saving the XML instance built by the form behind the scene.

Then, was it worth the effort and why should anyone care about this project? Well, anyone with a slight interest in the intimates of Microsoft Infopath file format (aka XSN) should be interested to see how jinFORM transforms this proprietary form definition to XForms.

Because an XSN file is simply a CAB stuffed with XML, XSL and extra files, described with a documented manifest, groking its content is fairly easy. Doing anything with it is another thing. Take the XSL for view rendering (usually named view1.xsl) that is generated by Infopath. Because this XSL relies on implicit MSXML objects for supporting many extension function calls, jinFORM has to pre-chew it and implement similar functions in order for anything to work.

When designing this XSL, Microsoft, of course, had anything but elegance or portability in mind. It is cluttered with prescriptive commands like xsl:for-each, traps like testing for the existence of a function and using another one and oddities like using a function to retrieve the current document on which this XSL applies. Surprising approach from Microsoft? After they love functions and procedural programming: why would they embrace the template concept that is underlying XSL transformation?

There are still many things to add in jinFORM to make it really usable but it is a good first step. Foundations have been laid, now let's build on it!

5 comments:

Anonymous said...

Hi,
Congra ;) Is there any substantial problem with Chiba?
-Thanks for your help and experience sharing!

David Dossot said...

Thanks!

No big problem with Chiba, I have just found the integration through XPL that you can achieve with OPS very appropriate for the purpose of jinFORM.

Alessandro Vernet said...

Hi David,

I am one of the developers on Orbeon, and I didn't know you were working on this project. This project looks very interesting! Do you have screenshots that show how a form looks like when rendered by Infopath and how it looks like when rendered by Orbeon in a browser? Do you have any plan to expand the capabilities of jinFORM?

Alex

David Dossot said...

Hi Alessandro,

Thanks for your comment.

I have uploaded a screenshot on SF.net so you can see the same form rendered on InfoPath.

As you can see there are several issues, like the fact labels are always on the left of controls while InfoPath (like Access) prefers on top.

Also, the HTML styles generated by InfoPath really work well only on IE (not surprisingly) and can sometimes conflict with the ones coming from OPS.

Yes, if time permits, I intend to keep on working on jinFORM as I think it can deliver an interesting capacity: filling InfoPath forms on the web without involving Microsoft infrastructure.

David

Alessandro Vernet said...

Hi David,

Yes, if time permits, I intend to keep on working on jinFORM as I think it can deliver an interesting capacity: filling InfoPath forms on the web without involving Microsoft infrastructure.

Yes, I fully agree. I subscribed to your blog, and I hope that you will keep us up-to-date on future developments of jinFORM here!

Alex