Integrate GTG to Gnome-Shell

Baptiste Saleil

Short description: I would like to work on GTG software to integrate him to Gnome-Shell. My idea is to improve the user experience by using an extension, notification system, and add some features to GTG. Read my proposal for more details.

Additional info: http://baptiste.saleil.free.fr/gnome.pdf

  • What is your e-mail address and IRC nick?
My e-mail is baptiste.saleil@gmail.com (also for google+ or gtalk)
My nick on IRC is bsaleil.
 
  • Do you have a web page, blog, or microblog?
Of course.
My webpage is here : http://bsaleil.org/
 
  • What is your academic background?
I'm actually in 4th year of University studies in computer science.
Also, I have 2 years technical degree in computer science, and the French high-school diploma in Engineering Science.
 
  • What is the ultimate goal of your proposal?
GTG is simply the better soft to manage personnal tasks with all features a user needs.
Also, I use the so friendly Gnome-Shell since the begining of his young age.
 
So, my idea is to work on GTG software, to create the better link as possible between GTG in one side and Gnome-Shell in the other one, to improve usage and rapidity.
 
By this way, the user could manage his tasks (Create, edit,...) directly from the shell with a friendly and unified interface.
 
  • What components/modules will the proposed work modify or create?
I think that the better way to do this is to use Dbus with a gnome-shell extension.
So, I'll maybe modify the Dbus functions of GTG (to add functions) and I'll create a new Gnome-Shell extension to make the link between GTG and user actions.
 
Technical part :
To work better, I decided to split this project in differents parts :
1 - Have the basics Dbus functions (Get tasks, Add task, Remove task, ...)
2 - Create the new extension (and the main menu) with basics features :
- List tasks with subtasks (With an order not defined yet, scrollbar, etc...)
- Possibility to search for a task
- A Button to open GTG
- Possibility to add a task
 
A picture is worth a thousand words, so i created a small sketch which shows what this menu could look like :
 
Menu
 
This menu could be add directly to the topbar, or maybe integrated in the calendar widget (like the actual GTG extension)
 
3 - Add the possibility to "select" a task and open a window to interact with it :
- We can add the GTG logo
- We can display name and description of the task
- We can add buttons like "mark as done", "delete" and "edit" button.
 
I created an other sketch to show how this window could look like :
Popup
By this way, the user can entirely interact with his tasks by the Gnome-Shell UI which open GTG windows by DBus.
 
4 - Add some useful features like an hour to run a task (if user need). By this way, the user could now add a task for a ponctual event like "Go to the dentist at 9AM" :
- Add features directly to GTG with preferences (like "Remind me X minutes before", "Remind me every 10 minutes", etc...)
- Add reminder system with Gnome-Shell notifications
 
Also this time, I created a simple sketch :
Notification
The user can interact directly with the task by the notifications system.
 
5 - There are always things to do :
- We can add preferences for the extension (With the new extension preferences system of Gnome-Shell 3.4 for example)
- We can add more preferences for the reminder system
- ...
 
  • What benefits does your proposed work have for GNOME and its community?
As I said before, my idea brings some benefits for GNOME and its community :
- We have a perfect integration of GTG into the new Gnome-Shell (with menu, notifications, etc...) So, the user will manage his tasks in a faster way.
- This idea brings also some new features to GTG (with the reminder system for example)
- All components of my project are intuitive. So, the user could use GTG faster and in a simple way.
- This idea will use the new extension preferences system of Gnome Shell, but also the notification system,... So, it brings a better integration of GTG in the  new Shell.
 
  • Why are you the right person to work on this project?
Just because I'm the best :)
Seriously, I have some experience on this field.
I authored two Gnome-Shell extensions, so I have some experience in Gnome-Shell extension programming.
Here you have my profile page in the extensions website :
As you can see, I authored a simple todo list extension. In fact, this extension give me the idea of this project. I like my own extension but I Love GTG and both are not synchronized. Also, others users of my extensions says that it could be a good thing to add synchronization with GTG or others tasks managers. So I decided to apply to GNOME to work on this project.
 
As I said to Luca Invernizzi (GTG mentor) by e-mail, I worked two years ago on a personnal project (for personnal needs), a task manager.
this project was fairly complete with some features :
- Calendar Widget to add some tasks for a particular day.
- Possibility to add, edit or remove a task.
- Simple todo list on the left side with possibility to add/remove todo.
- A phonebook tab to manage contacts informations.
- Reminder system using the GNOME2 OSD system (with preferences like "First remind 20min before" or "Remind me every 10min before" ...)
 
I took a screeshot of this application which you can see here :
Capture
 
Those projects are not the only one I worked on.
Here you can se a part of my others works (lisp compiler, interactive virtual board, etc...) :
 
Also I worked on others projects not listed before yet.
 
All of these elements shows that I have some experience on this field and that my idea is a concrete one, so I'm able to produce a good work.
 
  • How do you plan to achieve completion of your project?
I'll use several elements to help me in this project :
- I think that the community is the better source of information so I'm sure that she'll help me if I have any problem.
- Wisdom of the mentor is also a good source of information :)
- As I done for my others extensions, I'll read some others source code to help me for this project.
- ...
 
Concerning working time, I'll spend as much time as possible to this project from the begining to the end, and also continue to work on after the GSoC.
I just have one week (maybe two) of exams on May. This is my only impediment for the summer.
 
  • It really helps to see a schedule with dates and important milestones/deliveries (preferably in two weeks increments).
It's difficult to plan how the work will be done.
I think that this program could serve as a basis :
 - April 23 : Begining of the program. I think that it's important to "get to know mentor, read documentation" (As it's write on the GSoC website).
 - April 23 to May 7 : In my opinion, two weeks without any line of code is a good thing. we MUST take the time to know what we want to do before doing it.
 - May 7 to May 21 : This is the time to begin to code a first concrete "prototype" of the idea.
 - May 21 to May 27 : Week of exams :(
 - May 28 to June 11 : Here the prototype could be finished. For example, the steps 1 and 2 of my previous organisation could be done.
 - June 11 to June 25 : Fixing bugs of steps 1 and 2 and begin to work on the next features
 - June 25 to July 13 : Working hard.
 - July 13 : mid-term : I must be able to show an almost final prototype for the steps 1,2,3 and 4.
 - July 16 to August 6 : Fixing bugs of steps 3 and 4, document the project for the others developers (important for me).
 - August 6 to August 20 : Fixing bugs if any. Else, I can begin to work in others idea for this project (which is listed in step 5). Also I must clean and test the code before.
 
  • What will showable at mid-term?
What will showable at mid-term ?
The previous program says exactly what. :)
 
  • What are your past experiences with the open source world as a user and as a contributor?
I'll begin with my user experience :
I'm 21 years old and I use a Linux System since around 8 years.
My first experience was with a Knoppix distribution. After few months of use, I used the both Fedora and Ubuntu. Today they are still my two favorite. Also, since my younger experience of Linux, I'm a fan of GNOME. Today, The both Linux/Gnome are the only I use.
 
About my contributor experience :
Some details are given in the part "Why are you the right person to work on this project?".
I wrote several extensions for Gnome-Shell :
- A todo list extension
- An extension to display chromium bookmarks in the overview
- An extension to manage brightness of screen and keyboard (not published yet)
 
Also I participate in the writing of French documentation.
 
To finish, I developed differents projects (for personnal or academic needs) and I opened sources :
- CLisp compiler and interpreter
- Interactive virtual board (With network support)
- Tasks manager (not yet in public repository)
- ...
 
  • Please include a link to the bug you fixed for the GNOME module your proposal is related to.
There is no really "bug" to fix because it's a new project.
So, I have nothing else to show that my extension and my task manager soft.
 
  • If available, please include links to any other code you wrote for GNOME or other open source projects.
Just above :)

  • What other relevant projects have you worked on previously and what knowledge you gained from working on them?
The more important thing I retained from working on projects is the problem of synchronisation.
The synchornisation of contributors, and the synchronisation of work (code, etc...) that are very difficult things.
 
So,with all of my previous works, I gained some experience principally in collaborative work and communications skills.
 
Regards,
Baptiste.