Collaborative Getting Things GNOME!
Short description: GTG provides great user experience for individuals. I would like to implement sharing tasks between users. GNOME will become the first desktop with built-in task sharing. This would made it the desktop of choice for small to medium businesses.
Getting Things GNOME! (also called GTG) is a popular task manager with many features like subtasks, tags, synchronization with web to-do lists. All those features were designed for individuals. However, people often work in teams, collaborate with colleagues and delegate or are delegated tasks. Those concepts are not addressed in GTG so far. I would like to fill the gap, add the missing features and spent this summer by contributing in GNOME community.
What is the ultimate goal of your proposal?
In September 2012 Peter downloads and installs the newest version of GTG. He heard of that he could use GTG for organizing tasks of his startup for selling socks online. By quick glimpse in the initial tutorial he figures out that sharing tasks is deadly simple. His XMPP account which he uses for ages, is already in GNOME online accounts and he don’t need to enter neither JID or his password anywhere. Only thing he needs to do is setup sharing. Peter already keeps all his startup related tasks under @startup tag. By launching a sharing editor, he can choose whom to add to the project -- his XMPP roster of his friends and colleagues is shown to him. He checks co-founders Dave and Anne to be part of the project. Peter confirms the dialog and mark the task Setup project management tool as done.
When Dave comes back to his computer, he can see all tasks from Peter. He starts assigning them to every member of startup. Before all the tasks are assigned, Anne already completed task Arrange a meeting with VC and added notes to Meeting with VC. “That’s the spirit! I need to work on my tasks not to leave behind!” he says to himself and starts working on Solve issue #34.
Week later, Anne needs to know how it is with their blog. She looks in GTG and finds out that Peter has already completed the subtask Download & Install Wordpress but the subtask Design our blog theme is not completed. Anne asks Peter if she should find a freelancer to design the theme. Peter feels revealed because he hates web designing and would rather spend his time on creating a new algorithm for choosing appropriate socks to match your eye color.
Anne is happy that she easily found where the problem was and can see the progress of others. She could do it using her fancy GNOME 3 desktop what is a great boon for her (she prefers desktop application over the web based ones).
What components/modules will the proposed work modify or create?
Instead of creating an own protocol, I would like to use XMPP protocol for sharing tasks. XMPP people on this year FOSDEM enchanted me with the social network BuddyCloud which uses XEP-0060: Publish-Subscribe to exchange statuses. I will go in the same direction and reuse it for sharing tasks. Discussions have already happened with XMPP folks and my mentor, Lionel Dricot, will work on the protocol itself while I work on the GNOME part: integration with the system and UI.
I would like to use Telepathy Gabble to take care about the underlying protocol. If it misses feature or I encounter a bug, I would make a patch and try to get it accepted. Using Gabble would omit the XMPP setup phase and hopefully, save a lot of time by not reimplementing XMPP & Publish-Subscribe.
The most important part is the modification of GTG. I need to implement UI dialogs for managing teams and assigning tasks to people. The UI extension must be unobtrusive and don’t interfere for workflow of individuals. Several other problems could emerge, for example if more two or more people import bugs from their bug tracker into GTG, GTG must omit importing bugs which already have associated task.
What is not a part of this project?
Having a web UI or allowing users to access their tasks from another place than their GNOME desktop is not in the scope of this project.
Handling complex permissions schemes, user management, tracking changes in tasks are also considered as out of scope for this SoC (or will be handled transparently by XMPP).
Also, the UI will be done in order to be fully functional but not particular attention will be given to the design yet (unless there are external contributions). The importance is given to having a working feature, even if the UI is not optimal.
What benefits does your proposed work have for GNOME and its community?
GNOME will become the first desktop with built-in task sharing. This would made it the desktop of choice for small to medium businesses.
We also hope to make this feature appealing for home users.
Some people say that TODO lists has potential to replace email communication. It is clear that this kind of features will appear sooner or later. Having task sharing built-in early, GNOME has the potential to be a precursor in what could be the next big thing.
How do you plan to achieve completion of your project?
May 21 - June 3
First prototype in python to share a task over XMPP
June 4 - June 17
Integration of the prototype in GTG with a very basic UI
June 18 - July 1
Work continues on the prototype with basic UI
July 2 - July 15 (Midterm)
Having a functional demonstration of sharing tasks across GTG (with hardcoded XMPP addresses and basic UI)
July 16 - July 29
Further integration with adding or removing XMPP accounts in Empathy: be able to use them without need to restart GTG
July 30 - August 12
Improving and polishing the UI
August 13 - August 20 (Pencil downs)
Debugging and make the branch mergeable with trunk
What will showable at mid-term?
Two GTG will be launched on two separate computers, each with a different hardcoded XMPP account.
From one GTG, you will be able to assign a task to the other XMPP address. The task will then shows up in the second GTG. When the task is marked as done in the second GTG, the first GTG also shows the task as completed.
Why are you the right person to work on this project?
I love GTG. I am a passionate user of GTG for several years. The last summer I was a proud GSoC student for GTG. My project (rewrite liblarch library for managing directed acyclic graphs ) was successfully completed and reached its goal: contributors worked on new features without worrying about the underlying library. Liblarch was released as a standalone library and other projects could use it as well. I have been contributing to GTG since the last summer.
Being an active contributor, the co-maintainer and having touched most of the code, I can afford to work on more challenging project as Collaborative GTG is. I already have experiences with needed technologies:
- GTG backends for synchronization with servers
- I played with XMPP and wrote a simple bot for fun few years ago
- working on integration of GTG to desktop, played with DBus interface of GNOME Online Accounts and created addon for Firefox and Thunderbird
Given the fact I’ve been contributing to GTG since the last summer, there are many commits of mine in trunk. More important patches are:
- refactorization of notification area plugin and solving several bugs
- refactorization of addtag dialog
What is your academic background?
I am a student of Faculty of Information Technologies, Brno University of Technology, Czech Republic. At the moment I am in my first year of masters degree and Erasmus exchange student at University of Stuttgart, Germany.
IRC: izidor on #gtg at GimpNET