My name is Aurélien Aptel. I'm a 3rd year Computer-Science student at University Claude Bernard in Lyon, France.
Org-mode -- Let Org-mode synchronize with online bug-tracking and todo-list services.
There's currently no convenient way to manage services like Redmine, Bugzilla or GitHub issue tracking system in Org-mode. Org-mode already handles TODO-list pretty well, but there's no synchronization functionality for TODO-list services such as Toodledo or Google Tasks. The goal of the project is to let Org-mode import and export to these kind of services in a generic way so that new services can be added easily later on.
The possible mentors for this project are Bastien Guerry and Nicolas Goaziou .
Emacs is one of the flagship software of GNU and Org-mode is a major editing mode bundled with Emacs. This project will improve Org-mode and thus Emacs interaction with the outside world. Developers will be able to manipulate their favorite bug-tracking service via Emacs.
The project consists of more than just backends for several services. As there is currently no support for such service, this new import/export feature will require several changes in Org-mode internals, namely the parser.
The parsing module of Org-mode has access to all properties of a document. Some of them are irrelevant to bug-tracker backends and other have to be processed the same way by each backends.
As it happens, the parser is currently being rewritten by Nicolas Goaziou and after discussing with him and other developers of Org-mode, we have come to the conclusion that I should help him finishing the parser, adding things as I need them.
I will then write a library sitting between the parser and the backends that will factor out redundant code and provide helpers for backends.
Finally, once everything is in place writing the actual backends will be a lot easier. I plan to write backends for at least Redmine, Bugzilla, BitBucket, Google Tasks, Google Code and Github.
Documentation will be an integral part of the project and will be written in my code repository.
I will start by analyzing the different services I will write backends for. I need a clear list of common features that every services shares. Once that list is done I will know how to design my interfaces and what can be factored out.
I will then study the Org-mode codebase and more specifically the parser to identify what parts I will have to use or change.
Then, I will start writing a simple tool that connects to one the services and stores its content to a data structure that can be manipulated by Org-mode.
Subsequently, I will have to identify all useful interactions between an Org-mode buffer and a bug-tracker data structure. These interactions along with the list of common features of bug-trackers will let me design my library.
I know I will be half-way to completion when the parser reach a usable state, when my library has a well-defined API and is being implemented. I will be done when all the backends are implemented and the documentation is complete.
I won't be able to work full-time on the project until May 4 because of school engagements.
I can be reached via email or irc. I will idle on the Org-mode irc channel during the GSoC. Also, since my mentors are both French-speaker (and living in France) phone calls can be arranged.
As Org-mode already uses git, I plan on using it too. Thus, importing my changes at the end will be straight-forward. I will publish my commits on a public hosting service such as Gitorious so everyone can follow my progress. I will seek assistance when I need it from the irc channel, my mentors and the Org-mode mailing list.
I will report my progress every 2 or 3 days to my mentors and I will probably post to the developer mailing list after each meaningful steps. I have agreed to call my mentor once a week to discuss my progress and the work left.
I've had classes on languages theory and automata which involved the implementation of several algorithms such as a recursive descendant parser or the implementation of deterministic and non-deterministic finite state automaton which are commonly used in regex engines and parsers.