Note: This post assumes that you are aware of the Google Highly Open Participation Contest. If not, see that link.


As of right now, since the contest's inception on November 28, 2007:

  • We've had participation from 42 students, of which 27 (64%) have completed one or more tasks.
  • We've had a total of 36 tasks completed so far, in areas such as code, documentation, quality assurance, user interface, outreach, training, research, and translation.
  • Of the students who have completed tasks, 60% are *new* contributors who came to Drupal because of this program. Of those, two have already completed 4 tasks and are on their 5th!
  • We have over 100 task slots available; we currently have used up 73 out of 200.
  • We are desperately short on task contributions from the community. There are currently only 8 remaining tasks for students to choose from!! Unless we can turn this situation around within about 24 hours, students are going to end up going with projects like Joomla! and Python once they finish what they're working on. Yay!! Thanks SO much for your help! Please keep those great task proposals coming! Now what we really need are people to review and improve the existing task ideas so we can get them added to the queue!

Read on for more info on how these students are completely rockin' and how you can help them continue to do so.

So what are all of these students working on, anyway?

Code Improvements






Woah, this sounds awesome! How can I help?

I'm so glad you asked! ;) There are three main ways to help, but the one we need the most help with at the moment is proposing new task ideas (and of course the subsequent mentoring/review of the results of those tasks).

This is a tremendous opportunity both for our community members to get small (~1 week-long) but important tasks looked after that often fall through the cracks due to other things, and for we as an open source community to help enrich a student's life by giving them the opportunity to work along side us in the open source world.

So, please. Please:

  • read the "how to write a good task" guideines (synopsis: let's make these fun/interesting/creative/important tasks rather than boring monkey work tasks).
  • Take the time to write up your task proposal to sufficient detail. Doing this "right" actually takes a good bit of time; please note that mere task "ideas" aren't very helpful.
  • Find a couple of co-mentors for the task to help stay on top of task reviews and such.
  • And then, propose your task idea and we'll get it added "officially" once it's approved.

We can also definitely always use help monitoring the GHOP tasks that need review and in #drupal-ghop on to answer student questions, if you don't have the time available to mentor a task.

And finally, winter holidays are coming up, when students are likely to have all kinds of time, and adults are likely to be completely swamped. If you have availability over this time (~Dec. 19 - Jan. 2) please get involved to help pick up some of the slack.

Thank you!!


In a series of haikus, can you please explain what the qualities are of a good task?

Fun, interesting
High importance to Drupal
Nice on a C.V.

Detailed descriptions
Clear expectations with no

Mentors are lined up
To turn task around quickly
So more can be claimed

I'm interested in writing up a GHOP task! Can you point me to past successful tasks, so I can, er, "borrow" from their task descriptions?

Absolutely! :)

There have obviously been too many great tasks to list them all, but here is one from some of the major categories, so you can get an idea of the level of detail we're after.

  • Code: Citation input filter: Task gives clear example of expected input and expected output, so the student has a "spec" to work from. It's also nice and compartmentalized so it won't "creep" into something large and tangly.
  • Documentation: Improve documentation for the imagecache module: Task is both against a module used on thousands of Drupal sites, and also provides an outline of what the expected documentation should contain, so that there's no ambiguity about whether not the entire thing's been covered.
  • Usability: Improve initial user experience: Contains both a list of things to check for as part of the user experience research, as well as a clear target to shoot for in terms of expected results.
  • Videos: Create a video showing how to install and use TortoiseCVS: Covers all of the material the video should show, sets up guidelines on the length and format of the video, etc. Also is something that will be helpful to a large segment of the Drupal community (developers on Windows).

How about a task like "Go fix some documentation" or "Go port some module to 6.x"?

These are generally referred to as "wildcard" tasks, and are sub-optimal for the following reasons:

  • We have no idea what documentation or module they're going to choose and whether or not we'll have enough expertise in the community to adequately review the work.
  • We have a limited number of task slots available. We want to ensure that these slots are allocated to high-impact needs that can benefit the larger community.
  • They can attract students who are simply after low-hanging fruit so that they can quickly move on to the next task and claim more prizes, rather than those who are interested in becoming long-term contributors in the community.

So, rather than tasks like this, please choose _specific_ documentation that needs fixing or _specific_ modules that need porting and write your tasks around that.

Oh, I've got it! Let's just make 500 copies of the $foo task. Problem solved!

While we could do this, please consider the consequences:

  • We only have 200 task slots in total (and now, thanks to everyone's help, only around 100 left un-filled. w00t!). If we use up 20 of them on one area, we're directly taking away from the number of tasks we can spend in another. We really need to decide whether that thing is really worth using up 20% of our remaining slots.
  • Remember that each task takes someone to mentor it (or preferably several someones) in order to ensure prompt turnaround on reviews so that students can take more tasks! Creating 20 "Create SimpleTest coverage for X module" tasks is no good if we don't have at least that many people (and preferably more like 50) who are up to speed on SimpleTest and are able to guide students through these tasks.
  • If our task list essentially looks like a big copy/paste job, we're going to give the strong impression that we are lazy and aren't putting proper effort into the program. Students are likely, in turn, to not put a lot of effort into us.

Hey, why don't you guys make a task about..?

No. There is no "us guys." The "us guys" administering the program are already tapped at maximum capacity keeping the "plumbing" on the contest side of things running. There are about 5 of us, and over 200,000 of you. In order to scale this program, we need _your_ help.


iandickson’s picture

One key issue is that for a lot of contributed Modules the help documentation is poor and assumes Drupal familarity. E.g. to get Tiny MCE to work you have to edit the Filtered HTML Input Type to include all the tags you want to allow, always adding IMG.

A suitable task , or series of tasks, could be based around "For a Contributed Module with which you are familiar, write a Handbook page covering the main issues, esp re config and conflicts. You should look through first to identify common requests for help for that module."

The aim will be to either replace an existing page, (if existing very poor/outdated) or provide a useful addendum (if existing good, but limited).

This doesn't require php or code skills, just familiarity with Drupal and the Module. As a writing/communication task it is of clear educational value :-)

Ian Dickson

webchick’s picture

These kinds of "wildcard" tasks are best avoided. The results are pretty unpredictable, and if they choose some kind of odd-ball module that no one's used before, it's difficult to find reviewers for the results.

It's better to find a specific widely-used module that's lacking documentation, and identify that as a task. We've had great results with the imagecache documentation task, for example. That way we help ensure that the results are used by a wide spectrum of people, as opposed to being something that was quick to do, but not overly helpful.

So if TinyMCE specifically is lacking documentation, and you know enough about TinyMCE to be able to come up with an outline of what the docs ought to look like and tell if the resulting documentation is correct, this would be a great task to write up!

Here's the imagecache task you can use as a template. Please post it as a task suggestion when you're ready.

The imagecache module is a very cool module that manipulates images
uploaded in various ways. It is widely used and very powerful but is not
very intuitive to configure and use.  The existing documentation is very
sparse and needs to be expanded and improved.

This task will require installing and learning to use the imagecache module
and reading the existing documentation.  Then write step-by-step
instructions, including screenshots, for three imagecache tasks:

   1. how to configure presets
   2. how to set a CCK image field to display different size images and
   3. how to manually call the theme_imagecache function in a theme

The task will be complete upon adding the new documentation to the handbook
page as well as creating a documentation patch to include with the module.


    * Project page:
    * Handbook page:
Dublin Drupaller’s picture

Hi Webchick,

Just a quick note to say thanks for the detailed update on the GHOP initiative and kudos you yourself, Crell et al, for driving that inspired idea forward.

How you find time to plough so much time and ideas back into Drupal, contribute to the excellent Lullabot Drupal podcast as well as the odd media interview, is beyond me.

It's not going un-noticed.

In my opinion (and I imagine many others would agree) you should be called Woachick instead of Webchick!



Currently in Switzerland working as an Application Developer with UBS Investment Bank...using Drupal 7 and lots of swiss chocolate

webchick’s picture

It's quite easy actually. I just don't sleep. :D I've trained my body to be powered by Drupal instead. ;)

bonobo’s picture

Could you release the code for that?




Tools for Teachers

Fred Domminik’s picture

Please instruct me how do you do this?
I need to sleep 2-3 hours per day :)

alaa’s picture

how about views integration? views is a powerful module and all contrib modules should have views integration but some might not. implementing views integration is relatively simple yet involves some fun explorations of the guts of drupal, views and funky sql/

now I know this is a wildcard idea, if someone suggests a couple of modules that desperately need views integration I promise to write a proper task and would be happy to help mentoring them.

the same idea can be applied for other foundational modules like token and nodeimport.


dman’s picture

My GOD this looks fantastic.
Great write-up, great visibility on lots of stuff.
So I've randomly added to the noise on a dozen tasks so far.
Now I want to propose something byte-sized...
Yep, I've got two itches that need scratching. And I like mentoring.

How to troubleshoot Drupal |

Thomasr976’s picture

The existing Adsense module does a fine job of allowing Drupal website owners to place Adsense content ads in drupal nodes. However, Google is continuing to add new ad units like Video and Referral units which are not in the existing Adense module. The Adsense Module needs to be updated to allow users to add this content.

Also equally important is the Adsense Injector Module Currently the module allows placement of content ads above the teaser and below node content. However, Google Adsense claims that ads placed in the middle of node content or below the teaser have better returns. Why not try to integrate the Adsense Injector with what Google adsense recommends. Seems to me that Google might contribute some manpower since it benefits them as well.

I read over the documentation but unfortunately I don't have the php skills to sponsor or oversea the work of a student. I can help with documentation so if there is a skilled php drupaler who does want to suggest this count me in on reviewing the documentation.

dexpert’s picture

Adsense and Adsense_Injectors are good modules but I think Google Adsense doesnt allow using Revenue sharing using these modules.

I would like to create at task where some of the students can start work on Revenue sharing module using the Adsense API. There are many drupal users/sites which would like to implement this feature.

The current adsense modules allows this, but I had asked in Adsense groups and they had advised to use Adsense API instead of this module.


Drupal Expert
I am available for Drupal Consultation, Drupal Theming and Module Development.
Have good experience in Developing Social Networking Websites on Drupal.

pyutaros’s picture

But I'd wager that a lot of folks (read module maintainers) don't even know that this is going on. I'm thinking the best way to rectify that, would be to place an issue in every module's queue to ask the maintainer to farm out some work. I would be personally be fine with doing something quite as mundane as that, but I'm going to wait until I get some feedback on this before I trounce into a tirade of poorly thought out machinations. I will press the red button if I have heard nothing in one hour....

Drupal's so easy, even I could do it.

webchick’s picture

I've posted on the front page (twice), the devel (twice), docs, and consultants mailing lists, my blog (which showed up in Drupal planet), the front page of, and mention it in #drupal daily (several times).

We are also assigning various tasks to the module queues to which they're most appropriate (where applicable; e.g. imagecache docs to the Imagecache module's queue, not the Docs queue), so that's helping raise awareness too. And because these are all taking place in Drupal issues, there is almost constantly a GHOP task somewhere on the first page of

I'm not crazy about the idea of spamming each individual issue queue (that's going too overboard, imo), but if you have other bright, but less "spammy" ;) ideas as to where we could spread the word, then please let me know!

pyutaros’s picture

But less spammy. How about leaving comments on some of the oldest issues in project queues? Then it's more like a service... "Got this old issue that you just haven't had time to resolve? Here's GHOP!" We've got a page that displays issues by age don't we? Yes we do. And looking at it, I see Simpletest just created three tasks for GHOP. On the other hand, there are tasks in the queues that are up to 3 years old. I don't think there'd be a maintainer out that would mind a comment on an old issue asking if they'd like someone to try tackling it. I'll wait for your comment back before pressing that big red button.
Drupal's so easy, even I could do it.

webchick’s picture

The idea is not to get just any old issue worked on, though. If an issue is _that_ old, it's probably because no one cares about it or needs it enough to have it be a priority.

We want the opposite here.

We want students working on tasks we /really/ need, and also things that are fun/interesting for them to do, and furthermore have a high probability of someone (preferably a large group of someones) taking an interest in reviewing/mentoring on the task.

So we should instead be going after things that are glaringly missing and a constant source of headaches for the community (such as lack of theme images on the downloads page), or things that would really help a lot of people (like filling in missing documentation for an important module), or things that would really fill a need (such as a much-asked for feature in a module, or something that help with modules that uses, etc.)

So if you find issues like /that/, then *please* feel free to promote GHOP there. And in fact, going through and identifying issues like that would be extremely helpful! :) But I don't want to see the program promoted on old issue dumping grounds or blatantly spammed any old place, because that's the exact opposite of what we're trying to do here.

Hope that makes sense.

pyutaros’s picture

I do have a couple of issues for the Family module that I'm working on that I might delegate to GHOP. Specifically a port to 6.x. But not tonight. I will see if I have time to create one of those GHOPpy thingies tomorrow.
Drupal's so easy, even I could do it.