Add the ability to search for tasks in Getting Things Gnome
João Ascenso
Short description: Project that aims for a more functional and interactive GTG, with smart search capabilities and integration on gnome-shell
-
What is the ultimate goal of your proposal?
A part of our lives is knowing what our agenda is. Every day we have more and more information that we need and want to retain. Even with a task manager, if you have no way of searching and filtering all that information, you may end up wasting time and therefore less productive. A task Manager shouldn't be only as effective as its owners are organized. You need to be able to filter and find data, to create instant associations between different topics based on what is in your mind, the desired date and the search parameters that you think that are significant. Lots of information and tasking are useless if you can’t access it easily, fast and using the full potential of your desktop environment.
Use Cases:
Getting Things Gnome is a personal organizer for the GNOME, helping users to keep up with their agenda. For a better comprehension of how useful this feature is, here are some use cases:
1. Joe is in a hurry before leaving his home and needs to check what he’s supposed to do today. He goes to gnome-desktop search and enters “today” on the search bar. Then, he checks all the tasks that are due, starting and happening today.
2. John is working on a new website and needs some javascript code from previous websites, but he doesn’t remember which one has it and doesn’t want PHP. He goes to GTG and types “website + javascript - PHP” and all the tasks that have both “website” and “javascript”, in their content, are shown while filtering out the ones that have “PHP”.
3. Janet needs to finish her work but doesn’t remember which of the tasks have deadlines. She searches for “tag=work with end dates” and all but the work tasks that have deadlines defined are filtered.
4. Mac is using his gnome shell. A task is due that day. While he is surfing the web, a notification pops up showing that he has a task to complete.
What components/modules will it touch/change or create?
- Getting Things GNOME: I'll change the task browser, adding functionalities such as a second functionality to the main bar as a quick search bar.
- Creating an independent component for searching and customizing search parameters, with its own window and settings.
- Creating an efficient way of filtering and sorting the search results.
- Expanding the dbus functionality to interface with gnome-desktop capabilities.
-Maybe implement some sort of save search mechanism for frequent/last search terms
What benefits does it have for GNOME and its community?
GNOME and its community would benefit with a new and useful feature and as new times come, new users with new expectations appear and having software that meets their expectations is a must. Extending the dbus functionalities to integrate with gnome-shell gives gnome users a feeling that GTG is not only an application, but part of the whole gnome experience. We have to continuously evolve and give users something that they can’t remember what was living without it.
Why you'd like to complete this particular project?
I really believe that this particular project is useful, the whole idea is very interesting and will improve in many ways user experience with GTG. It will be a most interesting challenge to implement different and efficient ways to search, organize and display information.
How do you plan to achieve completion of your project?
I intend to follow a milestone like schedule and try to define concise objectives for each step. Here’s my plan:
pre-gsoc - Analise the current GTG source, familiarization with dbus and define exactly what needs to be changed and implemented. Also patch any existing bugs that might affect further development of the project.
week 1 - Class structures, plot diagrams, and a general draw of the final interface workflow.
Week 2 - Make the necessary changes to the GTG user interface. Design and implement the new interface elements.
week 3 to 4 - Study, implementation and testing of the search backend and deciding which is the best algorithm.
week 5 to 6 - implementation of search restrictions, special searches such as by dates and optimization of program workflow.
Week 7 - integration of the search backend with the user interface.
week 8 to 9 - expanding dbus functionslities for integration with gnome-shell.
Week 10 to 12 - Testing, correcting bugs and Documentation.
Project Details:
I propose to implement a search module for tasks that aims to filter tasks not only by its content but also through the analysis of dates, expression combinations and priorities.
I intend to make a customizable search, with features that allows users to define all the filtering parameters.
The interface will be define in two parts, a quick search bar that uses the “add task” input field for a quick search using expressions and a separated window for more detailed and costumizable searches.
Expression filtering would be a search using predifined expressions such as, for example, “in [date]”, “before [date, task]”, “between[date1,date2 or task1,task2]”, “past”, “today”, “future”, to search on a specific time interval or a specific tag and expressions such as “+-[tag]”, “in [tag]”, to add or remove search parameters.
All this functionalities would be extended to dbus, allowing the use of the gnome-shell capabilities, such as, gnome menu searches showing tasks or desktop notifications on tasks that are due in that day.
What will showable at mid-term?
By mid-term I should have a working implementation of the engine, working with restrictions and minimal functionality with dbus and gnomelshell.
Why do you think you are be the best person to work on this project?
I really like working and developing more dynamic and immerse user experiences. I have experience with GNOME, python, and some GTK+, also I’m a capable and enthusiastic person an i plan to continue to support the community after GSoC.
What are your past experiences (if any) with the open source world?
In 2009 I was awarded a Portuguese Scholarship (Sapo Summer bits, an event similar to GSoC) to develop an open source project. I developed successfully an android application for synchronization with Moodle using web services.
http://softwarelivre.sapo.pt/projects/androidmoodle
I have also participated actively in the organization of a national open source event called OpenaLANtejo2007 and some other minor contributions. Also all of my University projects are developed using open source technologies.
Why are you interested in improving GNOME?
I'm a GNOME user for over 6 years now and its simply the best desktop environment i have ever used. It would be a great opportunity to help improve it and a really good way to start participating more in the community.
Please attach a link to a bug (bugzilla.gnome.org or other Free software tracker) containing a patch you've written.
https://code.launchpad.net/~joaoricardoascenso/gtg/bug495246Proof of Enrollment
Student Number : 22512
Name : João Ricardo Gonçalves Lopes Ascenso
University : University of Évora
Curse : Computer Sciences
Degree : BSc
School year : 2010/2011
