What is dextools?

dextools is a Google Summer of Code 2011 project being worked on by Nathan Handler with the help and guidance of Matt Zimmerman and Stefano Zacchiroli. The goal of the project is to create the necessary tools and backend infrastructure to make it easy to create new DEX projects and track their progress.

How can I view the dashboard?

The dashboard is currently being hosted on alioth. You can view it at http://dex.alioth.debian.org/dextools . Keep in mind, this URL will most likely change in the near future as the dashboard becomes more stable.

What is a task?

A task is a single item that needs to be completed. Each task can have a status, name, assignee, note, and bug associated with it.

What is a project?

A project is a collection of related tasks associated with a particular distribution.

How do you add a new project?

There are currently 2 ways to add new projects so that they appear on the dashboard. If all of the tasks in your project are based on bugs in the Debian BTS, you can add a special usertag to each of the bugs. Details about adding usertags are available on the wiki (http://wiki.debian.org/bugs.debian.org/usertags). In short, you will send an email to control@bugs.debian.org that looks like this:

As you can see, the user needs to be 'debian-derivatives@lists.debian.org', and the userag needs to be in the format dex-<distribution>-<project>. For example, the usertag might be dex-ubuntu-ancient-patches for Ubuntu's ancient-patches project.

Once the usertags have been applied, the project should appear on the dashboard. Each bug will be a task in the project.

The second method of adding a project will require shell access on the machine the dashboard is running on (in this case, membership in the 'dex' team on Alioth). On moszumanska.debian.org, navigate to /home/groups/dex/gsoc2011. The projects/ directory contains one folder per project. The folders have names that match the usertag naming scheme described above (i.e. projects/dex-ubuntu-ancient-patches). To create a new project, start by creating a new folder in the projects/ directory with an appropriate name. Inside your new folder, create a plain text file called 'tasks'. Inside this file, you will enter the name of each task in the project, one per line. The next time the script runs, a new project will appear on the dashboard with your list of tasks.

It is also worth noting that you can use a combination of the two methods. To do that, start by usertagging all of the bugs related to the project. When the script runs, a folder for the project will be created in the projects/ directory on moszumanska. You can then connect and create a tasks file for any additional tasks you might need to add to the project.

How do you associate a bug with a task?

If you create the project by usertagging bugs on the BTS, the relevant bug will be associated with the task on the dashboard. However, if you create the project via the 'tasks' file on wagnger, you will need to manually specify the bugs via the web interface. Bugs can be specified in the 'note' field on the dashboard. Currently, the script looks for #\d+, so any string of digits following a # will be treated as a bug number. The next time the script runs, the bug number will appear in the bug column of the table.

How often do the scripts run?

All of the scripts are run automatically via cron. The crontab currently looks like this:

This means that at :58 every hour, the dashboard on moszumanska will pull in any changes made to the git repository. Every 10 minutes, getbugs.py will run (this also causes scripts/graph2.py to run). This script generates most of the dashboard files. At 23:55 every day, graph.py will run to update the graph displayed at the bottom of every page showing the number of open tasks versus time. Finally, every 30 minutes, wget will download the FAQ from the Debian wiki and store it in the docs directory.