Abstract
The web scene has exploded in the last couple of decades, transitioning from static web pages to dynamic, responsive web applications. Facilitating that are frameworks like React, Vue, Svelte, and Angular that prioritize user experience, component-based architecture, and seamless integration with modern APIs, without sacrificing the developer experience.
Meanwhile, XForms, while powerful for data-centric applications, has for the most part fallen behind. Its development has not caught up with these rapid changes, leaving a growing gap in terms of modern UI/UX capabilities, component flexibility, and integration with the wider web development ecosystem. This disparity is not just a matter of preference; it risks XForms becoming irrelevant.
While the development of XForms 2.0 is ongoing, the progress has been undeniably slow, inviting a different approach to address these issues rather than waiting for the eventual arrival of XForms 2.0. The web is not waiting for XForms, and the momentum behind competing technologies continues to build.
We think that leveraging existing web technologies to address the most pressing limitations of current XForms might be a more beneficial approach.
The idea we came up with is to use a syntax similar to XForms (let's call it Extended XForms for now), which then will be converted to XForms code. This syntax will extend the original one in three ways:
Style extension this makes minor or no changes to the XML code, but introduces new CSS styles, mostly for layouts, but also for theming when needed.
Basic extension: the simple and concise syntax of Extended XForms is converted to regular XForms, which then can be used as any other XForms document.
These extra functionalities can be done in pure XForms but will be complex and difficult to implement and maintain.
This may also introduce extra JavaScript code for extra functionalities.
Functional extension this provides additional functionality not currently in XForms, commonly to read data directly from XForms models, write data, and listen to changes.
Functional extensions depend on the XForms renderer and will not work in the same way for all XForms implementations.