GSoC Gtranslator Redesign proposal
por Marcos Chavarría Teijeiro
I have finished my GSoC proposal. I post it here so everybody can read it.
If somebody finds some spell mistake or you have any thoughts about it feel free to leave a comment. As you can understand I prefer to correct my mistakes before summit the proposal to the Google Melange system.
My project consists on redesigning Gtranslator the official GNOME application for translating. The idea is make the design more extensible and write the implementation in Vala, a much more readable language than GObject. Here is my proposal:
Redesign and Port GTranslator to Vala
Gtranslator is an very used application but it has lots of bugs and it has an important lack of maintenance. The idea is redesign the whole application and implement the resulting design in Vala. With this redesign we will fix the major bugs of the current version and the new program language will probably attract new developers to the project.
What is your e-mail address and IRC nick?
My email address is chavarria1991[at]gmail[dot]com and my IRC nick is chavaone. I’m usually connected to GimpNet (#gnome-love, #soc, #gnome-hispano, #gtranslator) and Freenode (#gpul, #gsoc, #python).
Do you have a web page, blog, or microblog?
I have a blog where I write mostly in Galician but it also have some articles in English, Spanish and Portuguese. If my project is selected, I will write the details of the developing process in this blog (in English obviously). In addition I have a Twitter account (@chavarria1991) where I write in Galician and Spanish.
What is your academic background?
I am studying fourth year of Computer Science at FIC (A Coruña), last GUADEC venue. Here we learn aspects about software analysis and design, programming, formal logic, artificial intelligence, data bases, network management, … We usually program in C language, Java and Python but we have some subject where we use MatLab and OCaml.
I try to make some courses about interesting topics (Cryptography, Linux administration, HTML5 design,…) and I also attend as much as possible to FLOSS talks that GPUL (group I belong to) organises.
Who is a possible mentor for the project you are proposing?
Nicolás Satragno and Daniel Mustieles have been helping during all the process but the first one has more knowledge about programming and he has apply to be mentor.
What is the ultimate goal of your proposal?
Gtranslator is the official localization tool for GNOME. This application has three main problems: it has many bugs, it has and important lack of features and It has an important lack of developers. This last problem in combination with the first two makes that the program has not a real improvement during the last year.This project tries to solve the three problems.
The idea consists on redesigning the application in order to fix the most difficult bugs and to make the design flexible enough to allow add features more easily. At the same time we will reimplement the application in Vala that is a much more friendly language that can attract more developers to the project.
What components/modules will the proposed work modify or create?
I have split this project in two parts. In the first part I will create a basic but functional translation tool with a design that allows people to add easily new features. The second part consists on writing a plugin engine that provides a easy to use API to people who wants to create new plugins.
In spite of the fact that deciding what things are going to be done belong to an analysis phase I think that this is a good approximation for a basic tool:
- Open, edit and save .po files. (The design should allow to add more file types in the future.)
- Navigate thought the document (go to the next untranslated,…).
- Search and replace.
- Fuzzy translations support.
- Undo and redo.
- Translator profile support.
- Customizable keyboard short-cuts.
Some of the ideas I have for the the second part are the next:
- Concept of checker -> a plugin that is notified when a string changes and it makes some kind of check.
- Concept of filter -> filter for the translated and untranslated strings using Pango that can show for example spell mistakes, the lack of a “\n”,…
- Drag and Drop windows -> The UI can be easily modified dragging and dropping the plugins (similar to the Anjuta feature).
What benefits does your proposed work have for GNOME and its community?
This project will solve the main problems of the existent tool. It also will encourage new developers to contribute Gtranslator since Vala is a much more friendly language than GObject and the documentation will explain the trickiest parts of the project. In addition the new plugin engine will allow to add new features that were very difficult to add in the original program.
The existence of a better tool will make easy to translators to translate applications and so people will enjoy better localized systems.
Why are you the right person to work on this project?
Last year during GUADEC I think that contributing to FLOSS will be a very good idea. When the course starts again I install Fedora on my computer and I started to investigate about how to contribute GNOME I tried to build Gtranslator using JHBuild but I didnt get it. So I decide to begin my contributions steps with a different way, I start translating software to Galician. Using Gtranslator I discover its limitations and bugs I thought that solving this problems would be a wonderful idea for a GSoC project. This project seems to me a extraordinary opportunity to keep going into the FLOSS world.
On the other hand I have discovered that most of Gtranslator developers and maintainers speak Spanish so communication won’t be a problem at all.
How do you plan to achieve completion of your project?
I have made a developing planning for this software creation that can be found on my blog. To sum up the developing phases are the next:
* Phase 1: Analysis (Send some mails to l10n groups and analyse existent tools).
* Phase 2: Global Design.
* Phase 3: Part 1 Design.
* Phase 4: Part 1 Programming.
* Phase 5: Part 2 Design.
* Phase 6: Part 2 Programming.
* Phase 7: Improve documentation.
Please provide a schedule with dates and important milestones/deliverables (preferably in two week increments).
10(Jn)-17(Jn): Phase 1
17(Jn)-01(Jl): Phase 2+3+4 (Begin with the first part design when finished start coding)
01(Jl)-15(Jl): Phase 4
15(Jl)-29(Jl): Phase 4
29(Jl)-12(Au): Phase 4+5+6 (Begin with the second part design when finished start coding)
12(Au)-16(Au): Phase 6
16(Au)-09(Se): Phase 6
09(Se)-23(Se): Phase 7
What will be showable at mid-term?
The idea is to have the first part of the application finished when GUADEC occur so I can show something to the people.
What are your past experiences with the open source world as a user and as a contributor?
Please include a link to the bug you fixed for the GNOME module your proposal is related to.
I have fixed two bugs of the current version of the application #683497 e #672076 that help me to get in touch with Gtranslator code and to learn how bugs fixing systems works on GNOME.
If available, please include links to any other code you wrote for GNOME or other open source projects.
This two fixes are the first GNOME and other FLOSS project contribution I ever made.
What other relevant projects have you worked on previously and what knowledge you gained from working on them?
As I have already say, I have spend a little translating free software to Galician. Apart from that I have made a Galician dictionary for Sublime Text that can be found on my GitHub account.
Will you have any other time commitments, such as school work, another job, planned vacation, etc., between June 17 and September 23?
My exams degree exams finished at 3rd of June so I do not have any lessons of exams until September. Next year academic calendar has not been published yet so I do not know when my lessons begin but this year started at 10th of September so next year lessons will start about that date. This first lessons can be easily attended together with the last phase of the project because next year I have very few subjects.