Thursday, January 31, 2013

AngularJS Form Generator: Metawidget v3.0

Version 3.0 of Metawidget, the dynamic form generator is now available!

This release was focused on:
As always, the best place to start is the Reference Documentation:

Your continued feedback is invaluable to us. Please download it and let us know what you think.

Wednesday, January 30, 2013

Metawidget wins PhD Thesis of the Year

I'm thrilled to announce my PhD thesis, Derivation of a General Purpose Architecture for Automatic User Interface Generation has won the John Makepeace Bennett Award (formerly known as the Best PhD Thesis Award) for the most Distinguished Doctoral Dissertation in Australia and New Zealand. My thesis details the research behind the Open Source project Metawidget.

The award is presented annually to the best PhD thesis in Australasia.

At my acceptance speech, I said "this thesis had a strong emphasis on applying novel and emerging technologies to resolve long-standing problems. But it had an even stronger emphasis on doing so in a way that was applicable to industry. We used practitioner interviews, case studies and adoption studies to gather observations. We also ran an Open Source project with a full technical, social and political infrastructure to encourage feedback. This created cycles of reflection and iterative development that guided our Action Research".

David Abramson, Professor of Computer Science at Monash University and Chair of the John Makepeace Bennett Award Selection Committee explained why my thesis was selected as the winner: "The committee was impressed that the research made both fundamental contributions to computer science and practice in industry".

My thanks to UTS Faculty for their support, my supervisor John Leaney for his guidance, and all the industry practitioners who posted forum messages, blogged, tweeted, wrote magazine articles and published papers about my work. Without this feedback, Metawidget could never have been a success. Also thanks to my wife and children for putting up with me during this process!

You can download the full thesis here (for free!). You can also read 'behind the scenes' of how the thesis was structured.

Other Links

Tuesday, January 1, 2013

Metawidget meets JQuery UI and AngularJS

The next release of Metawidget will be significant enough to justify a major version number bump (to 3.0). I'm excited to announce it will introduce a whole new platform to the product!

Metawidget already supports desktop (Swing, SWT), mobile (Android) and server-side Web technologies (GWT, JSF, JSP, Spring, Struts, Vaadin). But for the first time, version 3.0 will support fully client-side Web Metawidgets, with initial support for either pure JavaScript, JQuery UI and/or AngularJS.

Each JavaScript implementation will support the same five stage pipeline as the existing Metawidgets. This architecture is the result of years of developer interviews, case studies and adoption studies and has been well received. It has been adopted by companies such as Telefonica and Red Hat. It was also recently nominated for Australasian PhD of the Year.

Download The Example

For those interested in trying it out, your thoughts and feedback would be most appreciated! To get you started, I've packaged up a complete AngularJS Address Book, including end-to-end tests:

To download the example application, download the examples package for Metawidget 3.0 or above. The example is under examples/js/angular/addressbook. Run it the same way you ran the AngularJS tutorial (e.g. NodeJS, Tomcat, etc).

Welcome New Communities!

For those new to Metawidget, it's a smart User Interface widget that populates itself, either statically or at runtime, with UI components to match the properties of your business objects. Metawidget does this without introducing new technologies. It inspects your existing back-end architecture, and creates widgets native to your existing front-end framework.

For example, much of the application above is built automatically by the following HTML:

<metawidget ng-model="current" read-only="readOnly" config="metawidgetConfig.form">
   <facet name="footer">
      <metawidget ng-model="crudActions" config="metawidgetConfig.buttons"></metawidget>

Metawidget inspects the given ng-model for JSON properties and other metadata, and constructs the User Interface dynamically through a highly pluggable process.

For a complete step-by-step guide, see the tutorial here.

Look forward to hearing what you think!