Today I want to announce the project I've been working on as a hobby for most of the past year: QuickUI, a framework for creating web user interface controls. The work on QuickUI has taken the place of my normal blog writing, hence the long hiatus here on flow|state.
Why create a web control framework?
I'm sure the HTML 5 team has worked long and hard to get to where they are today, but the last thing I need are new HTML tags with fixed semantics. What I want is to be able to write new tags and define their semantics. (XAML is great, and would be incredible if it weren't proprietary.)
A markup language for controls
This idea eventually took shape as QuickUI, and evolved into the release I'm announcing today. For details and examples, including a full tutorial, please see the QuickUI site. Here I'll simply mention that QuickUI currently comprises:
- The Quick markup language for defining new controls.
- A build tool for compiling a collection of Quick markup files and combining the generated output into a project-level .js and .css file.
The QuickUI compiler and build tool are themselves written in C#, and I use the tools on Windows machines and Macs (via Mono) alike. (For the time being, I've posted instructions only for Windows use, but hope to document Mac use soon.)
Adding a compile-time step to web UI design is, admittedly, a hassle—but only a minor one. A small amount of tinkering with a reasonable development environment makes it possible to automatically invoke the QuickUI build tool whenever a Quick markup file is updated. These days I prefer Aptana Studio, and have documented steps for integrating QuickUI into that environment on the QuickUI site. Other tools make similar integration possible. With that in place, working in Quick markup feels only a small step removed from working in raw .html and .css files, and the productivity gains of a modular control framework quickly outstrip the minor inconvenience of compilation.
So far, so good
I now use QuickUI almost exclusively to quickly prototype functional UI designs for Cozi. I occasionally take recourse to PhotoShop to create image assets for inclusion in specific QuickUI controls, but the vast majority of my design work is now authored in Quick markup. The tools are good enough for my everyday use that I'd never go back to working without such a framework. And, as I slowly build up a library of reusable controls, I'm spending less and less time fighting old problems, and more time moving forward.
I consider the current state of QuickUI to now be minimally interesting to others, hence this announcement. Nothing’s set in stone, and any part of it could be made better.
If you're interested, please check out QuickUI for yourself. You can post questions or comments on the discussion board there. If you like this and want to make it better, I would welcome the help.