I’ve been busy writing Drupal 7: Visual QuickStart Guide for Peachpit Press over the last couple of months. I’m pleased to say that all the main chapters are done, and most of them are already available for preview on Safari Books Online. (I’ve given the table of contents below.)

Now it’s time to write the appendices, and I’m not sure what would be most useful. We’re thinking:

  • Extending Drupal, including a list of the most popular modules, and whether they’re expected to be available for D7 (thanks to the #D7CX project)
  • Differences between D6 and D7
  • Interacting with the Drupal community
Other ideas?

Here’s what the book contains so far:

Chapter 1. Getting Drupal Up and Running

  • Fulfilling Drupal’s Requirements
  • Downloading and Unpacking Drupal
  • Creating the MySQL Database Using phpMyAdmin
  • Installing Drupal

Chapter 2. Establishing Your Drupal Site

  • Performing Common Post-Installation Tasks
  • Giving Your Site Its Identity
  • Selecting a Visual Theme
  • Monitoring Your Drupal Site
  • Packaging Your Drupal Site

Chapter 3. Creating and Managing Content

  • Gaining More Control of Individual Nodes
  • Creating Other Types of Content
  • Finding, Editing, and Deleting Content

Chapter 4. Customizing Content

  • Defining Custom Types of Content
  • Putting Images and Styled Text in Content

Chapter 5. Making Content Interactive

  • Enabling Interactive Content Types
  • Categorizing Content with Taxonomies
  • Mastering Text Formats

Chapter 6. Improving Access to Content

  • Making Content Searchable
  • Directing Traffic with Menus
  • Laying Out Your Site with Blocks

Chapter 7. Wrangling Users

  • Managing User Accounts
  • Controlling How Users Interact with Their Accounts
  • Defining User Roles and Permissions
  • Building and Protecting User Community

Chapter 8. Customizing Drupal’s Look and Feel

  • Creating a New Theme
  • Changing Theme Graphics and Typography with CSS

I’m sure I’m not the first to discover this, but…

An online dictionary search for “Drupal” says it’s a synonym for “drupaceous”: that is, “resembling, related to… [or] producing drupes“. A drupe is a fruit whose seed is covered by a tough endocarp, like the red peaches you see here.

Juicy!

Look at the top keyword searches that bring people to my site, according to Google Analytics:

  1. tom geller (O.K., that’s a gimme.)
  2. wamp drupal
  3. drupal wamp
  4. (content targeting)
  5. drupal on windows
  6. drupal windows

Further, about one in five requests for support sent through my site’s contact form is WAMP-related.

So — what’s the story? Is it that WAMP is hopelessly messed up? Is there a vacuum of relevant information out there? (My Running Drupal on Windows using WAMP article is Hit #4 on Google.) Have you had problems running Drupal on WAMP? Does the Acquia Drupal stack installer for Windows help?

At last I can announce the release of my new six-hour video series from Lynda.com, “Drupal 6: Online Presentation of Data“, which you can check out with a free one-day pass. (Of course it’s also available to anyone with a Lynda.com subscription, starting at $25/month for all-you-can-stand training in over 600 topics.)

I first talked about this course in January and was able to implement at least one suggestion from your comments (about creating calendars). There are also videos about mapping, charting, and preparing data for tabular export, all built on a foundation of CCK and Views.

Since Lynda.com’s audience is mostly graphic designers, the course starts out with an in-depth description of data structure: As you know, data planning is at least as important as implementation! And it’s an essential subject whose subtleties elude most beginners.

One wag in IRC questioned the need for such a course. “Presentation of Data?,” he said. “Isn’t that what Drupal does anyway?” He’s right — in the same way that a car is a tool for going shopping. But I believe that many people who would benefit from Drupal’s data-presentation features simply don’t know about them, because their knowledge of it stops at Stories, Pages, users, and blocks. They need a bit more information to make the leap, and could become fierce advocates for Drupal when they see all it can do in this area.

Extra bonus: For giggles, check out the Introduction video, which includes some live-action video of me looking goofy. 🙂

Thanks, as always, to the Drupal community for both helping me to understand these topics myself, and for making Drupal the Web development powerhouse it is.

First things first: I’ve you’ve ever looked at Acquia’s documentation, read this post and take the survey. You’re welcome, jam. 😉

Now, a confession: I went to the Drupal.org documentation sprint at DrupalCon. And I tried to be useful, really I did. But I found myself frustrated, unable to really engage in it, and left mid-day feeling horribly guilty. Why? I think there were two causes:

  1. The task is so immense. Drupal.org’s documentation has grown like topsy, and now useful information is dispersed throughout several unconnected areas. The search function is really all that brings them together.
  2. Quality varies wildly. The biggest sin is, as usual, too much writing. As I often say, writing is easy; editing is hard. Brevity is the soul of wit. Your mama wears combat boots. And so forth.

I wrestled with the task facing doc team lead Addison Berry: What would I do in her place? My answer surprised me: I’d burn it all down and start again.

I’m reminded of the real-estate markets of Detroit, Cleveland, and Buffalo. In those cities there are blocks full of houses that are worth less than nothing: They’re too dilapidated to restore, and the cost to demolish them (about $8,000) is greater than the land’s value. And ashes are cheaper to truck away than lumber, even if the burning dumps toxins in the soil.

What “city blocks” on Drupal.org are like that?

Such arson is unlikely to happen on Drupal.org. For one thing, it’s discouraging to sweat out a long document, and then discover that it’s disappeared. How many people would stop contributing documentation as a result? How would the community’s soil be poisoned?

I’d still recommend cutting mercilessly. I believe at least 75% of the words on Drupal.org could and should be lost. But who would do the cutting? It’s tough work, and without glory. Converting Drupal.org’s documentation into a wiki(-like) format might help “crowdsource” the task. Or maybe not. Nobody likes to cut. Editing is hard.

Which leads us back to Acquia.

Acquia is a “third-party documentation provider”, like the Lullabots and GotDrupal and DrupalTherapy and many others… and me. It’s tempting to say that we thrive because of the weaknesses in Drupal.org — that is, that they create a vacuum that we fill — but it’s not really true. After all, Apple’s documentation is pretty good, but that supports outside writers rather than cannabilizing their work. In a healthy project, there’s always a new audience to reach.

But we outside doc providers have an advantage over Drupal.org: a clear field. Arson is unnecessary, and will put no toxins in the soil. Each building we create on these virgin plots can reflect a different architecture, each fitting a distinct family of users.

That’s why I think it’s great that the Lullabots’ CCK and Views videos will be available alongside my own: Theirs reach a certain audience, while mine will reach a different audience. And both of us can only do what we do because of the base provided by Drupal.org’s documentation. Together — we outside doc providers and Drupal.org — we all grow the Drupalsphere.

I visited my site a couple of weeks ago and discovered a pile of comment spam. That’s not unusual, of course; what *was* strange was that Drupal’s Comment Notify module hadn’t told me about them. Some poking around revealed that, lo and behold, the site wasn’t sending any email. The problem’s nature meant I had gotten no notification: It was the silent site-killer.

So first off, I want to apologize to anyone who’s tried to contact me thorugh tomgeller.com or gellerguides.com and not gotten a response. Simply put, I never got your message: If you remember your query, please send it again. The fault was entirely mine, because I hadn’t instituted a simple procedure that would have prevented the problem. To wit: I should have tested the site periodically.

And so should you.

In fact, here are five areas every Web admin should test regularly:

  1. Anonymous user experience. Log out, then test your site’s appearance and function. One mis-set permission can stop visitors in their tracks.
  2. Sign-up experience. The sign-up email is your users’ first personalized encounter with your site. Are you sure it represents your current message? And do the sign-up screens lead logically from one to the next?
  3. Links and scripts. File paths sometimes change during system updates, but you’ll never know until you try to access a link or script… and have it fail. Discover the problems before your users do!
  4. Images. Ever had your images disappear after an upgrade? There are two common causes: putting image files in the wrong place (such as /files), and forgetting that you’d modified pieces of a theme when you upgrade it. Which leads us to our last test…
  5. Backup and restore. “You’re only as good as your latest backup”, they say. Further, “Your backup is only as good as your ability to restore from it”. Whether a backup is missing or unusable doesn’t matter: The result is the same.

I’m sure this isn’t a complete list, and fear the next time my site dies a silent death. So help me out: What other areas do you think site admins should test regularly?

I’ll soon be recording a video training course at Lynda.com similar to the one I created last year. To demonstrate various technical points, I’d like to show photographs of people’s faces on a fictitious Web site. So I need some headshots, and think it would be especially fun if they were of recognizable Drupal community people. Would you be willing to let me use one of yours?

If so, here’s what’s needed:

  1. Send the graphic itself by email to tom -at- tomgeller.com. It should be cropped fairly close to your face and no smaller than 400×600 pixels.
  2. Sign and return the two attached forms. You must have rights to the photograph!
  3. Prepare to become “Internet famous”! 😉

Only five days after its latest release, Acquia today released another update to its namesake Drupal distribution — and it’s a doozy. The package itself includes modules that give you the first chance to try out the company’s new search product, while a separate release (“DAMP”) will help get Drupal beginners up and running MUCH faster than before. (It also includes another gorgeous new theme from TopNotchThemes, which I might use in one of my own projects.)

Acquia has talked quite a bit about their hosted search solution, so I won’t talk much about it here. It’s based on Apache Solr, and I believe that the Drupal.org site is already using it. (To see how it works, do a simple search on that site, then notice all the ways you can “filter” the results to drill down to the ones you want. I’ve found that especially helpful when searching for modules.)

But the only reference I’ve seen to the Drupal-Apache-MySQL-PHP stack before now was in a comment by former Acquia VP of Marketing Jeff Whatcott last November. In my opinion, it should get more press: It has the potential to be a REALLY BIG DEAL for Drupal.

Why? Simply: Installing Drupal is far beyond the ability of most people. When I was a newbie, I stumbled over installation for weeks before learning to use MAMP instead of Mac OS X’s built-in AMP stack. And installation questions are overrepresented in the support queue for my Drupal video course. As soon as you tell someone they have to change permissions, or type a Unix command, or download two separate packages, you’ve lost them.

So I eagerly downloaded and tried Acquia’s new Drupal Stack Installer (on the Mac), and found that it successfully avoids all these problems. Most importantly, it installs like a Mac application. Double click it, and it goes! For end users, that’s huge.

Acquia’s DAMP is not without its faults. While it mostly behaves like a Mac program, it suffers from several “look and feel” holes. For example, the “Control Panel” application (which appears to have been adapted from MAMP) lacks an “About” box and other touches Mac users expect; you can’t tab among fields in the installer; it launches Safari instead of your preferred browser; and the log files have an inconsistent interface. I’m not sure these errors would be as noticeable on the Windows side, which I didn’t try; I’d be interested in hearing someone else’s impressions there.

But enough about that: I have to go to bed for an early flight tomorrow to DC. See you there!

TopNotchThemes just released my “How to make an online store look great with your new theme from TopNotchThemes, which I’m happy to say has gotten Ãœbercart founder Ryan Szrama’s endorsement as “helpful and thorough”. If you haven’t grabbed your copy yet, grab PDFs of it and TNT’s basic guide to give out to your Drupal-newbie friends. And please do let me (and TNT) know what you think.

TNT’s customers span the range from shopkeeps with no Web experience to experienced Drupal developers who appreciate their themes’ special features. These guides aim primarily to help the first group: that is, folks who think of themselves as something other than “Drupal people”. Helping them be successful with Drupal is crucial to whether the platform will cross the chasm to move on to mainstream success. But they’ve not gotten much love from the Drupal community before now. In short, it’s hard to point mainstream people at a single, easy-to-digest document that helps them get up and running quickly.

Before you suggest Drupal’s official site, try this experiment: Send a couple of (non-techie) friends to the site and ask them what it’s about. It’s notoriously hard to navigate — especially for beginners. The problem isn’t a lack of information: It’s too much information. As the pros know, writing is easy, but editing is hard. And organizing others’ writing is even harder.

The average Drupal user has an absurdly high technical level, which leads to the second big problem: Nearly all of drupal.org is beyond the neophyte’s abilities. That’s as it must be at this stage of Drupal’s maturity. Drupal is still a developer’s tool; does it have the potential to become usable to the average person who wants a Web presence beyond WordPress and Yahoo! SiteBuilder? Maybe. But it’s not there yet.

These two factors — Drupal’s promise for ordinary people and the disorganization of its official documentation — add up to a market opportunity for those who are able to capture it. And yet, I would argue that nobody’s really captured this market. Taken medium by medium:

  • Training: Of those people and companies listed in Drupal.org’s training directory, the best known is probably Lullabot, whose past courses have generally focused on advanced topics. (The success of their “Do It With Drupal” course stands out as an exception. I have to wonder, though: How many attendees were “beginners”?)
  • Books: I think O’Reilly’s Using Drupal reaches out to beginner/intermediate Drupal users well, while sales copy for Wrox’s new book “Leveraging Drupal” promises that it’s for “users of all levels of expertise”. And yet… The O’Reilly brand has little currency outside of hard-core tech geeks, and many people (me included) don’t know what “leveraging” is supposed to mean as Wrox uses it. Further, both books are nearly 500 pages! It takes fearlessness to dive into a book of that size, no matter how good. (Full disclosure: I have a contract with Peachpit to produce a shorter, beginner’s-level Drupal book later this year. More on that later.)
  • Videos: Obviously, I’m biased. 🙂 I’ve been impressed with the number of people who have made Drupal video screencasts — although again, most have been for highly technical topics. Frankly, production values have been very mixed: I find some of them unwatchable. One sparkling exception is Matt Petrowsky’s free GotDrupal.com lessons: They’re concise, well-made, and conveniently tagged so that beginners can easily find videos they’re likely to understand.

So there are gaps in the curriculum. Personally, I’ve bet that filling those gaps is good business — and so far that’s been an extremely winning bet. That first Lynda.com course has led to a second, the TopNotchThemes work has been both enjoyable and fruitful, the Peachpit book will come out with Drupal 7, and several other clients have asked for these sort of explanatory materials for Drupal. Professionally, it’s a good time to reach beyond Drupal’s existing circle of technologists; Drupal’s growth from such actions is a fortunate side effect.

[Graphic source: Craig Chelius on Wikimedia, based on work by Geoffrey Moore. License: Creative Commons Attribution 3.0 Unported.]

Edit: The title is now “Drupal 6: Online Presentation of Data”, and will not include a section on Panels. Funny things happen in the studio. 🙂


I’m pleased to announce a new video course that will cover Views, Panels, and ways to present data in Drupal, and should be out this summer.

Publisher Lynda.com tells me the Drupal Essential Training course has done unusually well. That’s yet another encouraging sign of Drupal’s growing popularity, for which every active member of the community can take credit. I’ve personally gotten some great encouragement since its release last September and (even beter) have heard from lots of Drupal newbies who are now up and running. It’s exciting.

But as that six-hour course became a seven-hour course, we had to leave out some material — notably, Views. Now there’s good news! Instead of merely touching on this important subject in that course, we’re working on a new series that not only covers Views in depth, but also discusses Panels, CSS, data management, and creative forms of data presentation (such as maps and timelines).

We haven’t finalized the title, but “Presenting Information Online with Drupal” describes its thrust. It’s intended to help make the information in Drupal sites more accessible, both in terms of structure and visual appeal. We’re planning to record at the end of March, with a likely release over the summer. I’m thrilled to be working with Lynda.com again, in particular with producer Kirk Werner and Lynda Weinman herself, who’s taken an interest in the project.

But now, a question for you. What topics do you think should be in this course? We’ve already written out the table of contents, but it’s still early enough to include your good ideas! So please don’t hesitate to shout ’em out in the comments, and thanks (as always) for your interest.

In Lynda.com’s Drupal Essential Training video series, I said:

“…you shouldn’t use Drupal if it’s going to be an extremely high-traffic or mission-critical site. If it’s necessary to have this site online to save lives, you should probably use something else or at least have something else as a backup. If you’re going to run something that’s going to have millions and millions and millions of page views, probably Drupal is not the right solution — although I should mention, Drupal does run very popular sites.” –“Choosing Drupal” video, timecode approx. 5:00

This assertion was questioned by Stephanie Pakrul (stephthegeek) of TopNotchThemes in her review this past September. Now it’s being discussed again in this thread on Drupal.org — although I have to say that that particular thread is throwing off more heat than light. :-/

I originally made that statement based on past criticisms of PHP and MySQL… but now am coming to think that my understanding of these bottlenecks might be obsolete. Alexa says that theonion.com — probably the highest-traffic Drupal site at the moment — hovers around the 3,000 mark in terms of most trafficked sites. Pretty impressive! Sears.com, which is solidly in the top 1,000, has only about three times as much traffic. That’s not much of a difference.

So let’s open the discussion here: How scalable is Drupal?

(Error in penultimate paragraph corrected — see comments.)

It’s been a busy few months for me, so I didn’t get around to submitting my DrupalCon session proposals until today. I’ll be repeating my two beginners’ sessions from BADCamp ’08: “First Drupal Steps: From Download to Launch” and “Second Drupal Steps: Improving Your New Site“. If you want to grow the Drupal community by supporting beginner’s sessions at DrupalCon, please vote for them!

Secondly, I’ve been doing a lot of writing for TopNotchThemes. Working so closely with Steph, Chris, Jay and Jeremy has been a real joy, and I’ve learned a tremendous amount under their leadership. I’ve also come to understand just how great the differences are between well-crafted and run-of-the-mill themes. I hope my work with TNT helps everyone take full advantage of them!

Finally, Roshan Shah of Gloscon says that the company’s just launched its Drupal-based Web site creation and hosting service, “Galaminds”. Since there was a vigorous discussion about such solutions on this blog a few months ago, I’d love to hear what you think about their newly available services — particularly if you’re a customer or potential customer.

Finallyfinally, I’m looking forward to DC’09 already! Aren’t you?

If for some reason the default exercise file username (admin) and password (booth) don’t work, you can change them in the database itself using phpMyAdmin. (This technique is demonstrated in a video from Chapter 8, “Recovering from disasters”.)

  1. Open your Drupal database with phpMyAdmin.
  2. Go to the “users” table. Click the Browse icon.
  3. For the row where uid = 1, click the Edit icon. (Note the value under the “Name” column: That’s the administrator’s username.)
  4. In the “pass” row, select “MD5” under the “Function” column
  5. In the same row, enter your new password under the “Value” column.
  6. At the bottom of the screen, click the “Go” button.

You should now be able to log in with that username and new password.

On Drupal.org, NigelFK asked:

…as far as I can tell there is no information telling the student exactly what is in each section of the DVD. I know there are headers like ‘Enabling Other Content Types’ for example but you’ve got to watch that section to find out exactly what’s in it…

Personally I’d REALLY appreciate some sort of index. Any chance you could create one?

You’re in luck! The videos are closed-captioned, and the captions are searchable. Here’s what you do:

1) On the video series’ home page, click on “Closed Captioning” to expose those controls.

2) Enter the text you’d like to search in the “find text in captions” box.

It’s finally here! BADCamp 2008 will happen this weekend in Berkeley, California, with 27 informative sessions, BOFs, a job fair, networking and good times. I’m really looking forward to it.

As mentioned earlier, I’m presenting two sessions, and have posted the slides in PDF documents. They are:

See you there!

A few times during the Drupal Essential Training video series, I say to copy a Drupal installation by selecting all the files in the folder and then “dragging and dropping” them, either to a server or another location on your local computer. This is not the best way to do so, as the hidden file “.htaccess” will not be copied. Two ways to get around that problem:

  • When installing Drupal for the first time: Instead of copying files from the Drupal folder, move the entire folder to its target location and rename it. This is the easiest solution for those without experience with Unix.
  • Use the command-line interface to copy the .htaccess file.

The .htaccess file is a place to put custom directions for your Apache Web server. Failure to copy this file usually doesn’t cause problems, unless you’ve modified it in some way. If you find it missing, you can grab a fresh one from a fresh Drupal download, or (if experienced with such things) get the latest version from the CVS repository.

This one was my fault. Sorry for any inconvenience!

A few hours ago, Acquia announced public release of its first two products: Acquia Drupal (the software) and Acquia Network (the services). I plan to migrate tomgeller.com to Acquia Drupal, and will (probably) post my impressions of the products themselves then.

But for now, let’s consider the business side of Acquia. A few numbers:

  • $7,000,000: Initial private investment the company received in December, 2007. (Merry Christmas!)
  • 27: Its current number of employees.
  • $260,000: The amount of initial investment per current employee — a useful figure (together with burn rate) to understand how soon Acquia needs to either become profitable or receive further funding.
  • $3,750: The median price quoted for Acquia services per site/year. Note that this doesn’t include Acquia’s top-level “Elite” services, which are priced by individual quote and are likely to go into six figures. (Guessing the true average and median sales ticket would be a fun exercise, but one whose answer we outside the company would have no way of checking.)

So: Can Acquia make it?

Well, the numbers ain’t bad. Assuming the company delivers on its promises, I have to say I’m optimistic for it. The site clearly defines its products, proposes realistic prices, and offers packages that encourage engagement — including a free “Community” level for a single-server site with “forum-based” support. At first glance, it all comprises a strong value proposition.

Just as importantly, Acquia offers a migration path to rope in people like me who want to “upgrade” an existing “Drupal.org Drupal” site to Acquia Drupal. Smart! (Put simply, the migration is done by merging your existing sites directory, .htaccess file, and robots.txt file to a special Acquia Drupal package that leaves out these pieces.)

At the moment, Acquia stands alone. If Drupal continues to grow — and particularly if it experiences breakthrough success — it will attract other commercial suitors in areas where Acquia is now treading. But from what I can see, Acquia has gained first-mover advantage with its confident and solid entry into the market.

No, Acquia’s greatest challenges won’t come from competitors, but rather from two other places. First, the company could have misjudged market need — an easy thing to do when you’re defining a new market. Second, it’s in that tender stage when relatively small mistakes can affect them in big ways. To act boldly under such circumstances takes courage, making the strength of its first steps all the more impressive.

So congratulations to the Acquia team! I can’t wait to see what’s next.

At the risk of saying “I told you so”, I predicted FNMA/FHMLC problems in 2004 and suggested solutions. Here’s the relevant text: The second part is the most valid.

Here are two possibilities:

  • The government re-absorbs Fannie Mae and Freddie Mac. I rather like this idea, believing they should never have been privatized in the first place. A secondary mortgage market is a “public good” that requires extensive regulation — exactly the sort of thing governments do well, and private companies do poorly. The down side is that re-absorption would probably go with a huge financial “prop” to finance the transition. That money would come from the general fund, forcing the poor (renters) to pay once more for follies of the rich.
  • New secondary mortgage markets emerge. Other financial markets (such as stocks) have become commoditized through electronic markets and small players. Why not mortgage-backed securities? The two big players really serve two roles: First, they set packaging rules to make loans more consistent and saleable. That needs a single, big player to set the standards — a role suited for government. Second, they act as matchmakers between buyers and sellers. This latter role is better suited to the electronic marketplace’s light touch than to a sasquatch like Fannie Mae.

Having said that, it’s essential that this market remain heavily regulated. The credit-card field — wildly underregulated — is a cesspool of scams and fraud, as is the phone-card field. The last thing we need is people losing their homes to oily salespeople with offshore mailing addresses and no accountability. I believe that anyone facilitating a secondary mortgage market should be licensed and bonded, with background checks, audits, unannounced site visits, and compulsory education. The cost for failure is too great.

Note: The store closed in October 2009, so this program is no longer active. I’m leaving the blog post up for historical reasons.


I recently posted about my new store for Drupal-related items, which gives 10% of the price of all purchases to Drupal Assocation. Here’s why I think it’s important to support DA:

  • To continue — and improve — Drupal’s infrastructure. The Drupal.org site gets millions of hits per year, and that number is growing. Drupalcon likewise gets bigger every year, as do demands on volunteers like you and me. By supporting Drupal Association, you help the project grow to accommodate these pressures.
  • To enable new initiatives. Would you like to help talented Drupal developers attend Drupalcon? Accelerate funding of a much-needed (but commercially uninteresting) module? Have Drupal representatives acting as media and industry liaisons full-time? While Drupal Association doesn’t currently do these things, it could — with your support.
  • To fulfill functions best served by a non-profit authority. While I find commercial interest in Drupal exciting and encouraging, some functions — such as certification and trademark protection — are best served by a neutral party with interests beyond the purely financial. Drupal Association is that authority.
  • To provide continuity to the Drupal project. Drupal’s growing popularity means that long-time contributors will be an ever-shrinking percentage of the community. Drupal Association serves as an institutional memory to help us stay true to Drupal’s design and avoid repeating past mistakes.
  • Because it’s time to give back. Many of us — me included — have Drupal to thank not only for the software, but also for the opportunity to learn career-enriching skills in CSS, HTML, PHP, design, social media, and many other areas. As with other free and open-source software, Drupal democratizes such education. All you need is time, interest, and a way to download the code.

Regardless of whether you visit the store, I encourage you to learn more about Drupal Association and become a member today to help further these goals.

— Tom Geller, Drupal Association member #898