Drupal and Web Frameworks
Many of my loyal readers know that I'm into Drupal in a pretty big way. Lots of things are going well for Drupal these days, including a better-than-ever release of Drupal 6 and a community's who only major problem is handling the exponentially rapid growth. Last week, tech celebrity Chris Pirillo announced a project called Gnomepal where he encouraged developers and users to use Drupal as a core for a community platform. It's just another reason why I think Drupal is the web framework of the future and that I hope I'll be able to develop with Drupal more in the future.
First, Chris talked of Drupal as a "community platform", but what does that mean? A community platform is a website where all aspects of an online community can be attached or created. Drupal's web site calls its software a "content management platform" and "community plumbing". This is very accurate because Drupal is made up of many modules that work on top of the main core of the site. At the core of the site is the basics of managing news items and basic pages of a website, but with only a couple clicks you can add a blog for each user (or subset of your users) or a discussion forum or an RSS aggregator of a number of specified feeds. I have literally implemented all of these in a matter of minutes on basic sites to facilitate community. In this way, a website for an online community can be started in minutes and features can be easily added to accommodate growing needs.
What's so great about a community platform? On many of the sites that I build at work, we often use three or four open-source applications - sometimes a CMS that manages pages, a blog, and a discussion forum, and then there may be some custom work to tie them together or bring in custom functionality. The problem is that each application has its own administration and logins. Not only do the owners of the site have to keep track of four different accounts, but the users of the site have a disjointed experience and have to sign up multiple times as well. This type of community platform allows you to make one site with all these different parts that integrate better and all use the same login account. The only downside is that, because it does everything, it does not do everything well. For example, WordPress is perfect for a blog and exactly what I use here because the features are more specialized for a blog. But if I wanted a blog and a forum, I'd install Drupal because users only need one account and the site is better integrated by design.
Second, what is a "web framework"? A web framework is a collection of functions and libraries that speeds up the web development process. The web framework is built on top of an existing language and speeds up the web application development process. Examples of web frameworks include Ruby on Rails, Django (for Python) and Zend Framework (for PHP). We use Zend Framework at work and it really helps in making custom applications because there's a system for database abstraction as well as systems for managing URLs, templating, and much more. It takes a bit of work to understand and get used to the framework, but once you get the hang of it, it speeds up the development process a bunch and still gives you the ability to override or extend the functionality gracefully.
Although Drupal does not use an MVC pattern like most of the other frameworks, it is a powerful web framework. All extensions are written as modules, and functions for themeing, rendering and organizing forms, etc. are all available from the Drupal core. Many of the contributed modules even provide their own functions for adding your own modules on top. Although Drupal's web framework API is a bit different than the major web framework players, it is still a great development system. And, again, one of my favorite things is that this web framework comes with a extensible Content Management System from the first moment you install it, giving you a shortcut to building most applications.
In the end, though, there is a problem. I've adopted Drupal as the platform of choice for a community platform, for example, on my music website, inReview.net, as well as the basic content management system for most sites I manage. The problem I've had is figuring out how to figure out problems and learn more. Through the Drupal book and asking a question or two in IRC and on drupal.org, I have gotten a long way and been able to develop a number of custom modules. However, in the development of inReview.net, I have gotten to the point where I'm spinning my wheels a lot. I'm trying to make as much of an automated site as possible but I cannot figure out how to organize and tie in the artist data throughout the site. I know Drupal can do it, but I cannot figure out a way how. I've tried posting a question about it on drupal.org, but I've never received an answer. I need some outside help, but I'm not sure where to get it.
The free options are to just read up a lot about stuff on drupal.org, but that takes a long time of reading and does not directly answer my problem. I could try networking and learning a bit at a local Drupal group, but their meetings already overlap with a People of Praise meeting I already have. There are a couple other local groups of Drupal developers, and maybe next time a Drupal Day is organized, I will go, but there seems to be no real low-cost solutions to my problem that don't require a bunch of time I do not have. I already do other free things such as a free Drupal podcast which has given me lots of ideas.
So, I think that means I need to spend some money to figure out more about Drupal. I could hire consultants from Lullabot or Bryght or somewhere to figure out and develop a solution, but that is just investing in my site and not my own learning. Plus, hiring consultants such as these could be very expensive. The solution, I think, is the Lullabot Training series. These world-class Drupal consultants have helped Warner Bros. Records, Sony Records, MTV.co.uk, Participant Productions and many others to create great-looking sites that leverage all the benefits of Drupal. Plus, they've done week-long training sessions in most major cities and even are bringing it this week to Australia. It is almost $2,000 to get a week of training, but it seems like it may be the answer to digging into Drupal a bit more. They are spending a week next month in Minneapolis, and I'm thinking about attending. I think I'd learn a lot from the classes, and just getting a week to play around with Drupal and have some guidance will probably be exactly what I'm looking for.
What do you think? I'm leaning towards thinking $2,000 of investment in my Drupal skills is probably worth it. Should I go? Is there something else I could do? Have you been to a Lullabot training and did it help you? I'd love to hear your thoughts.