The Road to deninet 7: Alpha 1

 
This has been a very, very long road. Ever since Drupal 7 went alpha three years ago I have been trying to get deninet updated to the most current version of my favorite content manager. At first, the problem was core itself. then it was the lack of updated modules. Then it was one module -- Organic Groups. That, and the lack of a theme I truly liked put off the update for almost a year. I prodded at the issue, but between the stress and busyness of my life no mockup seemed to work. It wasn't until a month ago that I decided to start fresh once more. This time, I'd focus on a few key things: A flat aesthetic, typography focused, and minimal graphics. While I was at it, I decided to ditch my plans to develop a theme from scratch.. With the increasing importance of mobile devices, I decided instead to create a subtheme of AdaptiveTheme. Over the course of a few nights, the theme came together and things began to gel. Once I had the theme running in Drupal 7, I began thinking about how to move over content. You can think of a Drupal website like a full bathtub with rubber duckies. The bathtub is the code, scripts, and modules that make up Drupal itself. The bathwater is the database. The duckies are your content such as users, tags, and nodes. The key detail in this analogy is the difference between the database and your content. While the content is in the database, the database contains more than just content. It contains log in sessions, cache information, and other information that is necessary for a Drupal website to function, but is quite separate from content. Updating a Drupal website from one major version to another is like trying to dump the entire contents of the bathtub into a new bathtub. It's chaotic, clumsy, and prone to spilling all over the place. The biggest problem is that the bathwater gets dirtier over time. Modules are installed and uninstalled. Content is created, edited, deleted. In addition to the typical daily grime, mistakes could be made that have no easy solution. Older versions of Drupal didn't even have a way to uninstall modules, leaving all sorts of dirt in the database. What would be better would be to scoop out our content rubber duckies, and place them in new bathtub with new bathwater. It turns out, that's exactly what Migrate module does. Initially, I dismissed the idea of using Migrate module as implementing the code was more work than I cared to do. When I revisited the question two weeks ago, I discovered that the task could be greatly simplified by using the "Drupal-to-Drupal" migration framework, or migrate_d2d. This module does all the grunt work when migrating content from one Drupal website to another. Within a couple of evenings, I had code that ensnared my precious content rubber duckies and place them gently in a new Drupal 7 bathtub. While migration took care of most of the issues, migrating Books proved to have a large number of complications. I spent several very frustrating evenings trying to solve it, but in the end I decided it was better to fix the issues manually. User icons were likewise imported manually. What was left was node security. Under deninet 6 (and therefore, Drupal 6), I used Organic Groups. I build deninet 6's channel mechanism around OG. Channels, however, were a dismal failure. When asked, everyone confessed they didn't know how they should have worked. It was simply too confusing. When I looked for alternatives months ago, I settled on a module I now co-maintain -- Flag Friend. In addition to a small amount of dog-fooding, Flag Friend provides a simple, user-opt-in node security. Unfortunately, there was no migration path from Organic Groups 6.x to Flag Friend 7.2. So I wrote one. It took another evening to get deninet7 up and running on the web server. Mostly it was permissions issues, but thankfully I found help on Drupal IRC channel. And with that, deninet 7 was opened to the world. Not everything works, the site isn't finalized, and many features were lost, but I'll save that for a later blog post. Welcome to deninet 7.0 alpha 1.