The recent explosion of social networking sites has led to a rush to tap into new markets. A case in point at ISL (Insight + Strategy + Logic) is Red Room, an online community for writers of all stripes. The project is the brainchild of entrepreneur Ivory Madison. The goal of the site is to be the premier destination for authors to congregate with fans and discuss their books and ideas. Many high profile authors including Maya Angelou, Amy Tan, Khaled Hosseini and Salman Rushdie have been on the site since day one.
While the Web has plenty of sites on which you can buy books, there is a paucity of places geared toward building dialogue about the books beyond what is necessary to move product. On many book-related sites, the authors themselves have largely been left out of the picture, leaving them to either establish their own limited Web presence or do without. This is a shame when you consider what could be on a good author website — who better to blog than someone that makes a living spinning a good tale? Red Room offers every author the opportunity to easily build a presence to interact with their readers and with each other.
The client came at us with a list of features: blogging, comments and reviews, biographies, information about published works, event listings, streaming video, and podcasts. They required a robust, moderated, and extensible backend, with tagging and search tools to allow the user to navigate the large volume of content that thousands of writers would pump into the site. Most importantly, the site’s content generation tools needed to be easy to use by authors that wouldn’t necessarily have experience using technology.
Our Solution: Drupal
Given these requirements, it was clear that executing this project effectively would require a reliable CMS. We had built many custom CMSs over the past decade but began looking at Drupal with increasing interest when Drupal 5 was released. Being an open source shop already, we decided to take the plunge.
As one would expect the main reason for using a CMS for this project was to allow us to sensibly handle large amounts of content. Drupal offered an intuitive admin backend —important so that the mostly non-technical Red Room team (and major authors!) could make large content updates. It also has modules that allow users to add content of their own. Where Drupal really stood out, though, was in its extensive community management and user registration tools. With a minimum of our own code, users could sign up for an account and be sorted into different roles (readers and authors, currently); blogs could be incorporated into author pages; all content could be moderated where needed.
While anyone is welcome to become a regular member of the site (called a reader), Red Room only gives select writers the user status of author. Users of this class are able to create an author page, which contains a biography, information about published works, and the other features listed above. The client required that author profiles be complete and of high quality before being posted, to maintain the site’s professional image.
We were able to solve the problems posed by these requirements with the help of the modr8 module. The process we devised allows a user to become an author by filling out an application form, which is sent to a moderation queue. From there, an administrator can determine if the request is valid and the author notable. By employing moderation to handle this process, we gave administrators the ability to instantly upgrade a user account by merely approving the author request application. We did this by enhancing the moderation process to carry out additional tasks when a piece of content is approved, such as assigning a new role to a user.
One Page, Multiple Views
It also proved helpful that we were able to modify Drupal’s functionality to show custom views based on both user role and moderation status. To do this required overriding the functionality of the views module using a query substitution hook. We then took advantage of this ability in the section of the site where a new author creates an author page. Even before the profile on the page is approved by an administrator, the author can view all of his or her content exactly as it will appear to users.
The modr8 module also came into play here, though in a less orthodox fashion: via the assignment of an additional function to the submit element of the module’s administrative form. This then allowed the moderation of a single piece of content (the author profile) to trigger the author page to be populated with an entire set of related content (published works and the like).
All in all, Drupal offered a great starting point for community development; though Red Room proved to have some unique requirements we were fortunately able to fulfill them on our own.
Search Engine Optimization
Optimizing the site for search engines was a priority from the start. A vital part of this process is to assign meaningful URLs to pages. Because most of the site content would be user generated, we needed to assign these URLs automatically without requiring that the authors writing the content make any decisions themselves on the matter.
Drupal was able to do much of this thanks to the pathauto module. However, many areas of the site require that the URL include the author’s real name — administrators verify this when approving an application to become an author — to give Red Room high visibility in searches. Doing this required other modules. In particular, we needed to create a custom token for the field in the user’s profile that holds the name used by the authorship module. This in turn is translated into a “clean” value for use in a URL, and a custom view allows content to be selected according to this custom profile field. All in all, our solution incorporates the pathauto, profile, token, authorship and views modules.
Low-Maintenance Code (Best Practices for Customization)
When working with many open source frameworks, a problem that often turns up is the need to make project-specific customizations by altering the framework itself. In the long run this is counterproductive, as these hacks render it difficult or impossible to apply security updates or to upgrade the software to a newer version. Fortunately, Drupal has been extensible enough to allow us to follow best practices, developing customizations that depart from Drupal’s standard functionality — sometimes radically so — without making changes to the core or contributed modules.
Built for the Future
Red Room has plans to rapidly expand its functionality and its user base. As such, it was important for us to choose a CMS that would similarly scale, minimizing the need to switch systems in the foreseeable future. The fact that Drupal is open source is very important in this regard, as it ensures that the system will continue to be extensible and usable on any platform. Among OSS projects, we singled out Drupal due to its popularity and the exceptional network of developers using it. Because it is so widely used, the servers running Drupal constitute an unusually large test bed for the system. This gives us confidence in its abilities and the speed with which bugs or vulnerabilities will be found. In turn, the large number of developers assures us that flaws will be fixed in a timely manner. And the more people use and extend the software and share their additions with the community, the more opportunities Red Room will have to extend the site’s functionality with ease.