org-contrib/: Add a license header in each .org file
[worg.git] / org-contrib / gsoc2012 / student-projects / org-sync / gnu-application.org
blobac3e465e434a7824203c5be244c2c344585f69cc
1 #+TITLE:      Org-sync
2 #+AUTHOR:     Aurélien Aptel
3 #+EMAIL:      aurelie.aptel@gmail.com
4 #+OPTIONS:    H:3 num:nil toc:2 \n:nil ::t |:t ^:{} -:t f:t *:t tex:t d:(HIDE) tags:not-in-toc
5 #+STARTUP:    align fold nodlcheck hidestars oddeven lognotestate hideblocks
6 #+SEQ_TODO:   TODO(t) INPROGRESS(i) WAITING(w@) | DONE(d) CANCELED(c@)
7 #+TAGS:       Write(w) Update(u) Fix(f) Check(c) noexport(n)
8 #+LANGUAGE:   en
9 #+HTML_LINK_UP:  https://orgmode.org/worg/org-faq.html
10 #+HTML_LINK_HOME:  https://orgmode.org/worg/
11 #+EXCLUDE_TAGS: noexport
13 # This file is released by its authors and contributors under the GNU
14 # Free Documentation license v1.3 or later, code examples are released
15 # under the GNU General Public License v3 or later.
17 * Name
19 My name is Aurélien Aptel. I'm a 3rd year Computer-Science student at
20 University Claude Bernard in Lyon, France.
22 * Email address
24 Aurélien Aptel <aurelien.aptel@gmail.com>
26 * Project
28 Org-mode -- Let Org-mode synchronize with online bug-tracking
29 and todo-list services.
31 * Summary
33 There's currently no convenient way to manage services like Redmine,
34 Bugzilla or GitHub issue tracking system in Org-mode. Org-mode
35 already handles TODO-list pretty well, but there's no synchronization
36 functionality for TODO-list services such as [[http://www.toodledo.com/][Toodledo]] or [[http://mail.google.com/mail/help/tasks/][Google
37 Tasks]]. The goal of the project is to let Org-mode import and export to
38 these kind of services in a generic way so that new services can be
39 added easily later on.
41 The possible mentors for this project are Bastien Guerry and Nicolas
42 Goaziou.
44 * Benefits
46 Emacs is one of the flagship software of GNU and Org-mode is a major
47 editing mode bundled with Emacs. This project will improve Org-mode and
48 thus Emacs interaction with the outside world. Developers will be
49 able to manipulate their favorite bug-tracking service via Emacs.
51 * Deliverables
53 The project consists of more than just backends for several
54 services. As there is currently no support for such service, this new
55 import/export feature will require several changes in Org-mode
56 internals, namely the parser.
58 The parsing module of Org-mode has access to all properties of a
59 document. Some of them are irrelevant to bug-tracker backends and other have
60 to be processed the same way by each backends.
62 As it happens, the parser is currently being rewritten by Nicolas
63 Goaziou and after discussing with him and other developers of
64 Org-mode, we have come to the conclusion that I should help him
65 finishing the parser, adding things as I need them.
67 I will then write a library sitting between the parser and the
68 backends that will factor out redundant code and provide helpers for
69 backends.
71 Finally, once everything is in place writing the actual backends will
72 be a lot easier. I plan to write backends for at least Redmine,
73 Bugzilla, BitBucket, Google Tasks, Google Code and Github.
75 Documentation will be an integral part of the project and will be
76 written in my code repository.
78 * Plan
80 I will start by analyzing the different services I will write backends
81 for. I need a clear list of common features that every services
82 shares. Once that list is done I will know how to design my interfaces
83 and what can be factored out.
85 I will then study the Org-mode codebase and more specifically the
86 parser to identify what parts I will have to use or change.
88 Then, I will start writing a simple tool that connects to one the
89 services and stores its content to a data structure that can be
90 manipulated by Org-mode.
92 Subsequently, I will have to identify all useful interactions between
93 an Org-mode buffer and a bug-tracker data structure. These
94 interactions along with the list of common features of bug-trackers
95 will let me design my library.
97 I know I will be half-way to completion when the parser
98 reach a usable state, when my library has a well-defined API and is
99 being implemented. I will be done when all the backends are
100 implemented and the documentation is complete.
102 * Timeline
104 I won't be able to work full-time on the project until May 4 because
105 of school engagements.
107 ** Before April 23
109 - Get familiar with, study and analyze various services. Start writing
110   the list of common usecase and feature.
112 ** April 23 to May 22 (official coding period starts)
114 - Finish previous list.
115 - Write a tool to connect and retrive data off a first service as a
116   starting point.
117 - Study Org-mode's new parser (org-element.el) and introduce necessary
118   changes.
120 ** May 23 to July 8
122 - Design, implement and document library for interfacing Org-mode with
123   backends.
125 ** July 9 -- Mid-term evaluation
127 ** July 9 to August 5
129 - Finish library implementation
130 - Use library to write all backends
132 ** August 6 to August 20
134 - Additionnal time for unpredictable delay.
135 - Polish code and documentation, help with integration in Org-mode.
137 * Communications
139 I can be reached via email or irc. I will idle on the Org-mode irc
140 channel during the GSoC. Also, since my mentors are both
141 French-speaker (and living in France) phone calls can be arranged.
143 As Org-mode already uses git, I plan on using it too. Thus, importing
144 my changes at the end will be straight-forward. I will publish my
145 commits on a public hosting service such as Gitorious so everyone can
146 follow my progress. I will seek assistance when I need it from the irc
147 channel, my mentors and the Org-mode mailing list.
149 I will report my progress every 2 or 3 days to my mentors and I will
150 probably post to the developer mailing list after each meaningful
151 steps. I have agreed to call my mentor once a week to discuss my
152 progress and the work left.
154 * Qualification
156 ** I've already contributed to free software
158 - I've added cross-platform "underwave" support to GNU Emacs, hopefully
159   included in future releases. More info and patch [[http://lists.gnu.org/archive/html/bug-gnu-emacs/2012-02/msg00238.html][here]] and [[http://lists.gnu.org/archive/html/emacs-devel/2012-01/msg00844.html][here]].
160 - I have a project of my own: a very small terminal emulator with a
161   very small userbase. More info at http://st.suckless.org
162 - I have other smaller projects on my [[https://bitbucket.org/knarf/][bitbucket page]].
164 ** I'm familiar with parsing techniques
166 I've had classes on languages theory and automata which involved the
167 implementation of several algorithms such as a recursive descendant
168 parser or the implementation of deterministic and non-deterministic finite
169 state automaton which are commonly used in regex engines and parsers.
171 ** I use Emacs every day
173 - I read and sometime post on various Emacs mailing lists and I keep
174   up with Emacs-related news on the web.
175 - I'm familiar with Lisp-like language. I've implemented a interpreter
176   in C for my own Lisp dialect.
177 - I have already got basic Elisp skills and I plan to improve them
178   with this project.
179 - I use Org-mode on a daily basis.