What is Drigg?

Drigg is a powerful Drupal module that allows you to create Digg and Pligg-like web sites.
Unlike other Drupal-based solutions, Drigg only has two dependencies:

  • user_karma -- a simple karma module Drigg is based on. user_karma was written by the same author as Drigg, Tony Mobily
  • A voting form - preferably extra_voting_forms.

Features

  • Flexible voting. Drigg works with any voting system based on VotingAPI. The default voting system Drigg uses, extra_voting_forms, The module allows you to pick from 4 different voting forms: select box, select box with negative votes only, up/down, up only (ala Digg)
  • Easy, easy theming. Drigg provides a simple theme which just work, and is very easy to customise.
  • STRONG separation between code and theme. Unlike other systems, Drigg separates the module's logic and the presentation very carefully.
  • Plays well with Drupal. You can set Drigg as your home page, or you can decide not to do that. This means that Drigg will play well with your existing web sites.
  • Good code, easy bug fixing. Feel free to browse through the source: it's neat, extremely well commented, and tidy. THismeans that finding bugs is easier.
  • Flexible voting. Using extra_voting_forms, you can have N different voting forms for the same scoop. After voting, the others will grey out. This means for example that you can have a UP/DOWN form for a scoop, and then underneath a "select - negative values only" voting form for the same scoop.
  • Flexible as hell. Drigg is just amazingly flexible. While it has fully working defaults, it allows you to customise it immensely.
  • The power of Drupal. Drupal is a fantastic CMS. Once the system is setup, you will be able to install and use other Drupal modules as you like
  • Automatic votingYou can set a number of users as the "bosses", and other users as "slaves". The system will make sure that the "slaves" assign a random number of votes to the nodes voted by the "bosses". This will make it easier to startup your site without becoming schizophrenic :-D
  • Automatic role assignment.You can assign roles to people according to their karma amount, and (more importantly) to their karma ranking.

FAQ (Frequently asked questions)

General questions

What is Drigg?

Drigg is a powerful Drupal module that allows you to create Digg and Pligg-like web sites. Unlike other Drupal-based solutions, Drigg only have very few dependencies.

What are Drigg's features?

The list is really long. Have a look at the page with Drigg's features in Drigg's web site.

Why the name Drigg

I am absolutely in love with Drigg, a small village on the coast between the Esk estuary at Ravenglass, and Seascale (Holmrook, Cumbria, United Kingdom).
The name "drigg" is also similar to "pligg", which is another great piece of free software with very similar functionalities.

How long did Drigg take to develop?

Tricky question. The karma module took 4 full weeks. That's 11 hours a day, 7 days a week of programming. The result was a powerful Karma module. The drigg module took 6 weeks, 12 hours a day, 7 days a week (from the 1st of October 2007 to the 12th of November 2007). This included coordinating Alan Sprecacenere (the web designer) and Jake McGraw (the Javascript guru).

The second stage of Drigg, the "finishing touches", took.. nearly as long. However, it wasn't as intense. Alan created a theme JUST for Drigg, so that users are able to create custom themes easily. This resulted in a much better system, as well as a delay in Drigg 1.0's release.

How on Earth did you manage to develop a full Digg/Pligg clone in under 3 months?

  1. Connect with GTalk on a Friday or Saturday night, ask Tony what he is doing, and you will understand part of the answer.
  2. Experience. Tony Mobily is a very experienced programmer who has worked with Drupal for 2 years.
  3. Drupal. A lot of code was already written. Although Drigg is extremely complex and outsize most (if not all) of Drupal's modules, there was just so much that was "already there"...

Drupal-related questions

Drupal has several modules to vote on stories and on comments Why didn't you use existing modules?

Drigg doesn't actually know which voting system you use. The favourite choice is extra_voting_forms, a module developed by Tony Mobily just for Drigg. The module extra_voting_forms happens to use Drupal's VotingAPI, which is extremely powerful.

So, Drigg plays really well with Drupal. However, some of the things are not "Drupal-ish". For example, the module doesn't use "views" for the blocks, doesn't use CCK to define a node type, etc. This is deliberate, and indeed necessary.

Can you give some examples of features that you couldn't have developed?

Absolutely.

Smart, functional navigation

Browsing http://www.drigg.org, you will notice that for example you can go to http://www.drigg.org/upcoming/mostpopular. If you click on "archived" from there, you will be taken to... http://www.drigg.org/archived/mostpopular. But it gets better. If you click on "community", you are then taken to http://www.drigg.org/archived/mostpopular/Community. The menu system is tight, and it's designed to keep the user where s/he expect to be.

A node type specifically for scoops

This is another issue where I am often told "There's CCK". The two main problems:

1) CCK is query-intensive
2) You can't have a specific "Submit" form with CCK that matches the features of Drigg's.

Drigg's "Add node" function checks in real time if the URL has been submitted. It also offers a list of "similar stories" right away. It assigns one karma point to the story (configurable). Good luck doing all that with no programming.

The ability to "kill" stories

Right now, in Drigg you can "kill" stories - that is, you can mark them as "killed" and make sure that from that moment onwards the story only ever exists if you access it directly. This is done with a rather smart rewrite_sql() function which actually affects every single query in the system.

Really, and I mean _really_ neat URLs, without a single alias

Just by adding a simple function in your settings.php, you end up with _awesome_ URLs. You don't need thousands of URL aliases. While I am there, I also alias tags and users so that you can get to them through their names.
This function does this with very, very minimal load (and in fact, having such a small load does have some drawbacks).

Powerful, Digg-like RSS feeds

RSS feeds are one of the most important features in a system like Drigg. In Drigg, people can subscribe to any category, filtering it
and only getting the published stuff, or getting anything that's being submitted. This is probably possibl

I am not convinced

That's fine. If you're not convinced, create a site as functional as http://www.drigg.org using "existing Drupal modules". It needs to do _all_ of those things above, and more. Please keep in mind that I am talking about _practice_ here. In theory, you can. In theory, you can also reach the speed of light. After 2 years of people talking about having Digg-like system in Drupal, and after spending 1300 hours on these three modules, I am as gullible as St. Thomas. Sorry.

So, you think that existing voting modules in Drupal are crap?

No! Drigg is very much voting-agnostic. You can potentially use any voting form that uses the VotingAPI.

Drigg and "the competition"

How does Drigg compare to Digg?

It doesn't. Digg is a web site. Drigg is a free software project. Digg's software has been under development for over two years, after vetting several millions in venture capitalist money. Drigg is a one-man effort to develop a piece of free software. Potentially, Drigg might end up offering all of the features Digg offers. However, the main point stays: you are comparing a web site with a free software project!

Which features are missing, compared to Pligg?

Pligg is the main free software "competition". Compared to Pligg, it lacks the "live" page (to see what is being voted on in real time) and ability to make "friends".

I have a Pligg site. Can I import it into Drigg?

Absolutely. Drigg comes with a complete Pligg importer. Two things must be noted:

  • Only run the importer on brand-new Drigg sites. The importer will wipe out a lot of information from your existing Drupal installation. If you have an existing Drupal site, do NOT run the pligg importer.
  • The importer won't be able to import Pligg's "friends". This means that 'friends' relationships will be lost.

Do you and Pligg's developers hate each other?

Drigg's main developer (Tony Mobily) and Pligg's main developer (Ash) are friends. They often talk via IM (one of them is always sleepy, for time zone differences). The are no problems what so ever between Drigg and Pligg.

Installation and configuration

How do I install Drigg?

Drigg comes as normal Drupal module. However, please read the page about How to install Drigg to know exactly what to do - a pre-configured package will make your life easier if you're not used to installing Drupal