Technology Used on The Tree Form Machine Website

I thought it would be useful to talk about the building blocks and libraries used to build the Tree Form Machine website (tfdocs.com).

Drupal is used as the main CMS platform for tfdocs.com. I have a love and hate relationship with Drupal. I find much of the front-end organization of Drupal to be painfully insane, and i hate the degree to which front-end configuration options are so intricate and hard to keep track of -- I think life would be much better if most of these options were set up in code or explicit configuration files. In an effort to be super-general and flexible, there are a lot of things in Drupal that should be trivial to set up which are hugely more complicated and annoying to do than you could ever imagine. And I'm not thrilled with the speed. Having said that, the programming API for drupal that allows modules to be so non-invasive and play well with each others is a joy, and for me that has made all the difference.

In addition to my custom javascript, tfdocs.com makes use of many open source extensions.

The following Drupal modules are used:
advanced_help - nice help pages you can view from forms
community_tags - let people tag content they haven't written
contact_nocc - fix a braindead drupal decision to let people mail arbitrary email addresses from the contact form
fivestar - let people rate content
organic groups - big module that lets people create and manage groups
taxonomy_vtn - nice index display of tags
pathauto - automatically create nice aliases for content pages
tagadelic - nice tag cloud of tags in use
profile - lets user have additional fields in their profiles
views - lets you set up custom views of content (everyone raves about this, i think its a horrible way to do things -- a complicated gui configuration to do anything you could imagine; sounds like a good idea until you have to maintain these configurations; much better to do this in code you can edit).

The following javascript libraries are used:
jquery/jqueryui/etc - the famous jquery library
Dynatree - great jquery/javascript tree with checkboxes and radioboxes
bbc2html - bbcode formatting from javascript
showdown - markdown formatting from javascript
cluetip - javascript/jquery library for nice looking pop-up mouse hints
dateformat - date formatting code from http://www.mattkruse.com/
htmlentities - htmlentity escaping code from http://phpjs.org/functions/htmlentities:425
getclassbyname for ie - http://code.google.com/p/getelementsbyclassname/
UI.Layout - resizable, autosizing, dual scrolling sidebar for form trees, courtesy of - http://layout.jquery-dev.net/

Other libraries:
wkhtmltopdf - pdf creation from javascript-based html page content (http://code.google.com/p/wkhtmltopdf/)