Google Code-in

From GeeklogWiki
Jump to: navigation, search

Contents

Information for students

This is a collection of possible tasks for the Google Code-in. Please note that you can not claim these tasks from here. Should Geeklog be accepted as a mentoring organization, you will be able to claim tasks from the Code-in homepage, once the contest starts.

For more information, please see the Google Code-in FAQ.

If you have questions about a specific task, please contact the mentor(s) listed for the task or post on the geeklog-devel mailing list. You may also be able to get hold of a Geeklog developer on IRC, channel #geeklog at irc.freenode.net


Adding Tasks

When adding a new task, please keep these things in mind:

  • the task should be suitable for 13-18 year olds
  • the task should be small-ish, doable in a few hours to a few days
  • the task needs to be clearly defined, i.e. when can it be considered "done"?
  • the task shouldn't need a lot of explaining to start

Also, when adding a task, please consider to volunteer mentoring it!


Tasks

Move the FAQ to the wiki

Description: The Geeklog FAQ is hard to maintain in its current state (due to technical issues with the FAQ plugin and the fact that contributions can't be included easily). So the idea is to move all the current FAQ topics to the Geeklog Wiki. Hints: One wiki page per FAQ article. Add a FAQ category. Make sure the formatting, e.g. of sample code, is carried over.
Category: Documentation
Difficulty: easy
Time: a few hours
Possible Mentor: Dirk Haun

FAQ: Fix occurences of config.php

Description: There are a lot of places in the Geeklog FAQ that still refer to the config.php that was used for configuration in earlier Geeklog versions. Find and rewrite those sections to refer to the Configuration Admin panel instead. Note: Some occurences may still be valid (e.g. when referring to upgrading from an old version) or may need to refer to the siteconfig.php or db-config.php file now instead.
Category: Documentation
Difficulty: easy
Time: 1-2 hours
Possible Mentor: Dirk Haun

Review the installation instructions

Description: Try to install Geeklog following the installation instructions. Make notes of the problems you have understanding these instructions. Suggest a list of improvements.
Category: Documentation
Difficulty: easy
Time: 1-2 hours
Possible Mentor: Dirk Haun

Review the installation instructions

Description: Try to install Geeklog following the installation instructions. Make notes of the problems you run into following these instructions. Check that the troubleshooting section covers these problems. If not, suggest additions.
Category: Documentation
Difficulty: easy
Time: 1-2 hours
Possible Mentor: Dirk Haun

Find a replacement for kses

Description: Geeklog uses kses as its HTML filter. Since kses is no longer supported, we are looking for a replacement. Research other existing HTML filters and evaluate them. Check features such as filtering abilities (HTML tags + attributes, JavaScript, CSS), ability to close unbalanced HTML tags. Also consider dependency on any frameworks / libraries, ongoing support, and a GPLv2-compatible license.
Category: Research
Difficulty: medium
Time: about 8 hours
Possible Mentor: Dirk Haun

Provide a translation for a plugin

Description: Geeklog (i.e. the Geeklog Core) has been translated into more than 30 languages. However, not all of the plugins we ship with Geeklog have been translated to all those languages yet. If you speak one of those languages, provide a missing translation.
Category: Translation
Difficulty: medium
Time: about 4-6 hours each
Possible Mentors: preferably people speaking the language ...

for the Links Plugin

  • most wanted: Portuguese
  • also: Afrikaans, Bosnian, Bulgarian, Catalan, Croatian, Danish, Farsi, Finnish, Hellenic, Indonesian, Norwegian, Romanian, Serbian, Slovak, Swedish, Turkish

for the Polls Plugin

  • most wanted: Italian, Portuguese
  • also: Afrikaans, Bosnian, Bulgarian, Catalan, Croatian, Czech, Danish, Farsi, Finnish, Hellenic, Indonesian, Norwegian, Polish, Romanian, Serbian, Slovak, Swedish, Turkish

for the Spam-X Plugin

  • most wanted: Chinese, Dutch, German, Italian, Portuguese
  • also: Afrikaans, Bosnian, Bulgarian, Catalan, Croatian, Czech, Danish, Finnish, Hellenic, Indonesian, Korean, Norwegian, Polish, Romanian, Serbian, Slovak, Swedish, Turkish

for the Static Pages Plugin

  • most wanted: Russian
  • also: Afrikaans, Bosnian, Bulgarian, Catalan, Croatian, Finnish, Hellenic, Indonesian, Norwegian, Romanian, Serbian, Slovak

for the XML-Sitemap Plugin

  • most wanted: Chinese, Dutch, Italian, Portuguese, Russian, Spanish
  • also: Afrikaans, Bosnian, Bulgarian, Catalan, Croatian, Czech, Danish, Farsi, Finnish, Hellenic, Indonesian, Korean, Norwegian, Polish, Romanian, Serbian, Slovak, Swedish, Turkish, Ukrainian

(that's 16 tasks just counting the "most wanted" languages)

Update a Geeklog (Core) translation

Description: Geeklog (i.e. the Geeklog Core) has been translated into more than 30 languages. However, not all of the Core language files are actively maintained, so some of them are only partially translated. If you speak one of those languages, update one of those translations.
Category: Translation
Difficulty: medium
Time: from a few hours to a few days each, depending on the amount of work needed
Possible Mentors: preferably people speaking the language ...

Most work needed

These language files are seriously out of date and may need a lot of work:

  • most wanted: Dutch, Portuguese, Spanish
  • also: Afrikaans, Bosnian, Bulgarian, Catalan, Croatian, Czech, Danish, Farsi, Finnish, French (Canada), Hellenic, Indonesian, Norwegian, Romanian, Slovak, Swedish, Turkish

Actually, we should consider splitting those into smaller tasks ...

In better shape

These language files are more (but not quite) up-to-date:

  • most wanted: Chinese, Russian
  • also: Korean, Polish, Serbian, Slovenian, Ukranian

Create a "Invitation to contribute" page

Description: When you click to download OpenOffice.org, you are taken to this page that explains how you can contribute to OOo. Design a similar page for Geeklog.
Category: Outreach
Difficulty: medium
Time: about 4 hours
Possible Mentor: ???

Design a flyer

Description: Design a flyer / handout (for inspiration, here's an old flyer and a poster that can also be used as a flyer). Refer to the Geeklog Documentation for a list of features.
Category: Outreach
Difficulty: medium
Time: about 8-12 hours
Possible Mentor: ???

Update plugins list

Description: Update the plugins list and give some basic informations for each one (Description, last available version, last release date, link to support or contact).
Category: Documentation
Difficulty: medium
Time: about 1-2 days
Possible Mentor: ???

Review Patches

Description: We have quite a few patches for issues (bugs and feature requests) in our bugtracker. Your task would be to review such a patch, i.e. check that it can be applied to the current Geeklog version; fix it if it can't be applied as-is; check that it does resolve the issue; leave feedback and, if necessary, an updated patch on the issue in the bugtracker. Note: Your job here is to check that the patch can be applied and whether or not it solves the issue. If it doesn't solve the issue, then providing a correct patch would be a separate task (to be defined after your review).
Category: QA
Difficulty: medium
Time: between 4 hours and 2 days, depending on the patch
Possible Mentors: ??? (preferably more than one)

List of Patches (one task per patch):

The corresponding bugtracker entries have all been tagged with "task" (please ignore issues that have status "assigned" or "resolved").

To do: Update Time estimates (and possibly Difficulty) for each task before this list goes into Melange.

Convert the Geeklog Documentation to XHTML

Description: The documentation that we ship with Geeklog (14 HTML files in public_html/docs/english) are currently HTML 4.01 compliant. Convert them to XHTML 1.0 Strict and confirm XHTML compliance using the W3C validator. In other words, fix bug #1145.
Category: Documentation
Difficulty: easy
Time: 4-8 hours
Possible Mentor: ???

Rewrite the Geeklog Help Files

Description: Geeklog ships with 10 very simple help files in public_html/help. Effectively, they only contain a list of required fields for certain forms. Check that the list of required fields is still correct and rewrite the help pages to be more friendly and informative. Design suggestions welcome.
Category: Documentation
Difficulty: easy
Time: about 10 hours
Possible Mentor: ???

Look into SPDX for possible use in Geeklog

Description: While most of Geeklog's code is licensed under the GPLv2, some third-party code and even some core components (e.g. feed read/write classes) are under different licenses. SPDX, Software Package Data Exchange, promises to help keeping an overview of the various licenses in a software package such as Geeklog, so that license conflicts can be detected easily. We know nothing about SPDX other than that it exists. Have a look into SPDX, provide a short summary of what it actually does, and provide a list of steps that would need to be taken to use it for Geeklog.
Category: Research
Difficulty: medium
Time: 1-2 days
Possible Mentor: ???

Give a Geeklog Demo to a friend or family member

Description: Find a friend or family member who's interested in running their own website (or already has one). Give them a demonstration of Geeklog and show off it's features. Discuss with them whether Geeklog would be suited for them. Make a list of things that were considered good, bad, or missing.
Category: Outreach
Difficulty: easy
Time: about 4 hours + some preparation
Possible Mentor: ???

Obviously, this task could be done several times with different people.

Coding: "Beginner" tasks from the Bugtracker

Description: There are some issues (bug reports and feature requests) in our bugtracker that are tagged with "beginner" to indicate that we consider them easy enough to do for someone new to the project. They will also help you understand some of the internal workings of Geeklog.
Category: Code
Difficulty: medium
Time: between 4 hours and 2 days, depending on the issue
Possible Mentors: ??? (preferably more than one)

List of issues (one task per issue):

The corresponding bugtracker entries have all been tagged with "beginner" (please ignore issues that have status "assigned" or "resolved").

To do: Update Time estimates (and possibly Difficulty) for each task before this list goes into Melange.

Redesign the Plugin Editor

Description: Geeklog's plugin "editor" is mainly a form that displays some information about a plugin. It really only has options to enable/disable a plugin and possibly to update it. The main issue with this form, however, is that unlike all of the other editors in Geeklog, it has the buttons (save, cancel, ...) at the top of the form. But moving them to the bottom (for consistency) leaves some ugly blank space at the top of the form. So the task is to come up with a new design for this form that's both consistent with the rest of Geeklog and also looks nice.
Category: User interface
Difficulty: medium
Time: 2-4 hours
Possible Mentor: ???

Design a Stylesheet for Printable Views

Description: Geeklog provides simplified "printable" views for articles and static pages. These use a stripped-down print.css stylesheet that needs some work to make the printout look nicer, e.g. fonts, spacing, margins. Also: Is there a good way to make links appear in the printout (e.g. for a link saying "click here", make the URL it links to show up in the printout).
Category: User interface
Difficulty: medium
Time: 4-6 hours
Possible Mentor: ???

Test and provide feedback for the new calendar plugin

Description: You need to install the new calendar plugin and test it. You should provide feedback about bugs you find and about your overall experience. Also, suggestions on improving the plugin are welcome.
Category: QA
Difficulty: medium
Time: a few hours - 1 day.
Possible Mentor: Vlad Voicu

Test the Akismet module for Spam-X

Description: Spam-X is Geeklog's spam filter. It can be extended by dropping new modules into a designated directory. There is already an older module to support the Akismet anti-spam service. It needs a review for possible API changes and some testing.
Category: QA
Difficulty: easy
Time: 4-8 hours
Possible Mentor: Dirk Haun

Write a TypePad AntiSpam module for Spam-X

Description: Spam-X is Geeklog's spam filter. It can be extended by dropping new modules into a designated directory. The task is to implement and test a module for the TypePad AntiSpam service.
Category: Code
Difficulty: easy
Time: 1-2 days
Possible Mentor: Dirk Haun

Write a Defensio module for Spam-X

Description: Spam-X is Geeklog's spam filter. It can be extended by dropping new modules into a designated directory. The task is to implement and test a module for the Defensio anti-spam service.
Category: Code
Difficulty: medium
Time: 2-3 days
Possible Mentor: Dirk Haun

Write a Mollom module for Spam-X

Description: Spam-X is Geeklog's spam filter. It can be extended by dropping new modules into a designated directory. The task is to implement and test a module for the Mollom anti-spam service.
Category: Code
Difficulty: hard
Time: 4-5 days
Possible Mentor: Dirk Haun

Create a Screencast: Installing Geeklog

Description: While Geeklog's installation procedure has improved over the years (thanks in no small part due to our participation in GSoC), some people still have problems with our written installation instructions. So the idea is to make the process more visible by creating a Screencast. It should include all the necessary steps: Creating an empty database, uploading the files (including unpacking the tarball), and running the install script.
Category: Training
Difficulty: easy
Time: about 4 hours
Possible Mentor: ???

We may want to run this task several times for different setups: Unix / Windows, shared server / root server, ftp / ssh access, ...

Create a Screencast: Installing a Plugin

Description: The procedure for installing a plugin has improved somewhat over the years (thanks to our participation in GSoC) but still seems to confuse people. So the idea is to make the process more visible by creating a Screencast. It should include all the necessary steps, i.e. uploading the files and running the install script.
Category: Training
Difficulty: easy
Time: about 4 hours
Possible Mentor: ???

This should probably be 2 tasks: One demonstrating the new way (upload from within Geeklog) and one doing the manual install, including distributing the files over 3 directories.

Collect Information about Encryption Algorithms for Passwords

Description: Currently, Geeklog's passwords are stored as md5 hashes. There are some known attacks against md5 and it's about time we replace the algorithm with something more robust and secure. Collect information about possible replacements and provide an overview of their weaknesses and strengths.
Category: Research
Difficulty: hard (some maths / encryption knowledge required)
Time: about 2 days
Possible Mentor: ???

Compile Geeklog with hiphop

Description: Hiphop is a PHP-to-C++ compiler, developed by Facebook. Facebook is written in PHP but the actual Facebook site runs the C++ code produced by hiphop. There is probably only one Geeklog site that would benefit from this translation (Groklaw), but we'd like to know if you can actually compile Geeklog with hiphop and which, if any, problems exist with it. So the goal is to grab a standard Geeklog release, compile it with hiphop, and use the result to run a website. Make notes of any issues you run into and document them on the Geeklog wiki.
Category: Research
Difficulty: hard
Time: about 2-3 days
Possible Mentor: ???

Redesign the Version Checker Page

Description: Geeklog's Admin Panel has a link to a simple version check: A script running on geeklog.net, that compares your site's version against the latest released version and gives recommendations about upgrade paths. This page is currently very spartanic and could use a redesign to make it look nicer and more informative.
Category: User Interface
Difficulty: easy
Time: about 2-3 hours
Possible Mentor: ???

Design a new Homepage for our Project Page

Description: [http://project.geeklog.net/ project.geeklog.net is the server that hosts our development resources: bugtracker, Mercurial repository, and a few other tools. The homepage (just one HTML page with links to the various tools) is pretty sparse right now. It could use a few more texts explaining what you can find there and a nicer design.
Category: User Interface
Difficulty: easy
Time: about 4-6 hours
Possible Mentor: ???

Create a Database Schema

Description: Add a Database Schema to the wiki showing how the tables are all connected. Include a description for each column and possible values.
Category: Database
Difficulty: medium
Time: about 1-2 days
Possible Mentor: ???

Stats

Some rough statistics (some tasks could be run more than once).

Categories

  • Code (8)
  • Documentation (7)
  • Outreach (3)
  • QA (20)
  • Research (4)
  • Training (2-4)
  • Translation (20+)
  • User Interface (4)

Difficulty Levels

  • easy (13)
  • medium (52+)
  • hard (3)

Mentors