MoviesWithButter

There are numerous entertainment sites focusing on movies out there, but no real movie-centric aggregator when I started this project a year ago. Digg killed its movie section with its infamous redesign, and Reddit's movie section was dominated by top ten lists and link baiting articles.

I was inspired to fill this space with Movieswithbutter.com after reading an article on how haohaoreport.com migrated from Pligg to Drupal with the Drigg module.

While voting is a big part of the site, its main purpose is to let users keep up with the latest news and gossips for movies in various stages of development, particularly the big Hollywood blockbusters. The voting part is to allow the site's community to float up news stories that are important to them.

Requirements

Drigg Article Teaser

Since I want a more controlled environment than that of Digg, users can vote but are not allowed to submit stories unless they reach a certain reputation level. I believe this controlled environment can keep the site focused on its mission better than a free-for-all where everyone can submit stories. This will also help prevent spamming.

To get the stories on the site, I’m using the core Aggregator module because it’s the only one that works with Drigg, which uses it to create new nodes for each feed item.

In keeping with the site's mission about tracking movies, I want the ability to group the news stories into development phases as well as by topics. I find the core Taxonomy module to be a good solution for this.

I also want to provide a message board for users to talk about movies among themselves outside the scope of the news stories.

In summary, I need an aggregator, user voting system, user reputation system, user comments, ability to tag articles, and a message board.

Why Drupal 6

As I have said in the beginning, I was inspired to create Movieswithbutter.com after reading another site's migration from Pligg to Drupal with the Drigg module. That was about a year ago. At that time, if you were going to make a Digg-like aggregator, your best options were Pligg and Drigg.

I evaluated both and concluded that Drigg to be the better option because of everything that came with Drupal such as taxonomy, blogs, forums, aggregator, and all the community modules.

I used Drupal 6 because at the time that’s the latest version that works with Drigg, and Drupal 7 hadn’t officially launched yet.

Challenges

Drigg for Drupal 6 appears to be abandoned and is no longer supported, and it looks like there will never be a stable release of the module. This means the site will not be able to migrate to Drupal 7 or other future releases without a redesign from the ground up. If there are any bugs in the module, I'm on my own unless other Drigg users can provide the answers.

Design

Slideshow

Most of the Drigg sites follow Digg's layout almost exactly, with the the most voted stories on the left and the most popular and upcoming blocks on the right sidebar. I wanted MoviesWithButter to be different.

I went with the yellow color to evoke the feeling of popcorn and butter and to match the name and theme of the site.

For the content, I chose to use three columns. I placed all the data on the left sidebar such as box office numbers and Tomatometer. Promoted stories in the center. On the right sidebar, I used that as news rack, where users can quickly browse what are on some of the bigger movie sites.

I also added a large slide show top and center to highlight the biggest news. None of the Drigg sites that I'm aware of had this.

Performance

Aggregator Block

The site doesn't have a lot of traffic yet, so I don't really know how it will perform under heavy load, but I had to fine tune a lot of things for the site to preform well even with minimal traffic.

I employed three caching modules to help me speed up the site: Boost, Views 2 Cache and Block Cache.

Boost rendered the most accessed pages in static html and served those to anonymous users, significantly spending up the site's response time.

Views 2 Cache and Block Cache are used for authenticated users. They both stored the results of previous queries in a cache table so that they can be recalled later without having to run the queries again, which also speed up the site.

Drigg's Related Articles module doesn't scale when there are thousands of node. I had to turn that off. I also had to turn off ACL and the Forum Access modules because those slowed the site down as well.

The other major performance bottleneck was the core aggregator module, which comes with blocks listing the latest articles from each feed. The problem is the db queries produced by those blocks are not indexed accordingly. Once they’re indexed according to how the articles are sorted, performance improved dramatically.

I also had to write a couple of custom modules to customize the Nice Menus, Aggregator, and Drigg modules. The full list of modules I'm using is at the end of this article.

The Future

How the site will evolve will largely depend on how the users are using the site, but in the near future, I want to implement a message board so that users can have a place to carry on their own discussions. Whether that will be Drupal's own message board or a stand-alone solution will remain to be seen.

If the site is able to attract a lot of users, I want to open up the site so that trusted users, based on their reputation, may be able to submit news stories and have other privileges.

To further speed up the site, I want to use the Boost module on the the front page news stories as well.

Modules Used

Box Office

When I first started the project, I made a promise to myself that I would keep the number of modules to a minimum - at most, five. I end up installing and using about fifty, so don't be silly and make that kind of requirement at the start of your projects.

Main
The main modules being used for this project are Drigg, Nice Menus, Views Slideshow Dynamic Display Block, and a couple breadcrumb modules:

Others
Here's a list of other modules used to build this site. Some of the them are required for Drigg, and others are for caching, spam control, and administrative purposes.

Comments

cnergis’s picture

Hi,

Great write-up, and a great site too .. well done.

It is official now, drigg development is more or less abandoned, and from what I have read in other threads, it does seem as if it is full of custom code, and thus taking it over could be somewhat of an unrealistic goal .. It is probably better to start a new project from scratch.

I also tangled briefly with pligg, then took a hopeful look at hotarucms (which is abandoned) .. I was excited to learn that drupal has a module named drigg, but got immediately disappointed when I took a look at the status of the project. I was new to drupal at the time (about a month ago) and also relatively newish to developing with PHP (more familiar with python).

I have since furiously been working through several books, and my drupal knowledge and experience has now grown in leaps and bounds. Still doubt that I could realistically initiate a new replacement project.

I am keen to participate in a project that could reproduce the functionality of drigg using easily integratable drupal-7 modules, and thus ready for migration into drupal8 and beyond. However, I don't think I know enough about drupal to play lead contributor just yet. With your experience in this project, any chance you could play this role and generally provide me some directions .. I have seen signs of enough interest in the project to think that others could easily become interested, if there's momentum on a replacement project ..

See the following threads below to see what I mean:
-- http://drupal.org/node/367219
-- http://drupal.org/node/528518
-- http://drupal.org/node/1346862
-- http://drupal.org/node/468182
-- http://drupal.org/node/357941

So, it does seem as if there is sufficient interest in a replacement .. I will similarly post in those other threads, and see if there are others (hopefully, more experienced than me with drupal) who would consider coming together for a replacement project ..