The Road to deninet 6.0 Part 2: Unabashed UI Ranting


As a departure from previous site upgrades, I'm stressing a high amount of usability in deninet 6.0. By nature, I tend to be a UI snob, preferring to tweak and tune aspects of the user experience that would make everything easier and more intuitive. While this is commendable, Drupal itself is not making this easy.

Creating a strong UI experience was a key aspect of deninet 4.0. I was able to tweak nearly everything in the experience. Form organization, buttons, site layout, and so on. At the bottom of nearly each page was a two column section labeled "Where to go", providing links or actions for the current page. Each option was explained with clearly written text. While I made the blunder of using javascript links as opposed to standard Submit and Reset form buttons, I loved the site I had created. Deninet 4.0 was a clear evolution from versions 2 and 3, and easily the most refined deninet experience yet created.

While working on deninet 6.0, I pulled up my archives and reviewed my ideas from that period. I began to think, Wouldn't it be nice if we could provide the a strong UI experience for the next version? The biggest problem, unfortunately, was that tweaking that experience is no longer a simple matter. All versions of deninet prior to 5.0r were build on a custom content manager (or no content manager at all). I had maximum control of each individual page. If I wanted to implement a particular feature or change the presentation of a page, it would simply be a matter of making the necessary code changes. 

Now that we are using Drupal, things aren't nearly as easy. For example, I recently had an idea to modify the Create Content page to be a table of icons and friendlier descriptions as opposed to the current definition list of links. To my annoyance, there appears to be no way to nicely modify this page short of ugly theme hacks or module development. Web searches show that few people have even considered such a thing. I'm not even sure it is possible to write a module to modify the page. It's possible to supplant the entire page with a custom one, but without hooks into the content types, it would be no better than a static page. 

Block and breadcrumb themeing is particular annoying, as both are provided to the theme as a scalar variable containing HTML. If I'm unhappy with the output, I have to resort to string or regular expression replacements that would execute for each page display. If that doesn't work, the only means available to me is complex string manipulations and HTML parsing. As someone experienced with PHP development, I'm sensing a serious lack of separation between the data and presentation layers.

It's possible I will have to accept what I can when it comes to UI in deninet 6.0. As long as I continue to use Drupal to power the site, I will need to continue researching just how far I can modify it.