Summer of Code is over: Summary
It seems it was yesterday when I applied for the Google Summer of Code 2008, and official coding period ended just some days ago. It’s been a new fantastic experience for me, and in this post I’ll try to summarize the work that has been done and what’s been left out.
As you probably know, my project aimed to improve Pootle’s user experience by adding new functionalities and improving existing ones.
Things already done
- Support for an alternative source language. With this new feature translators who know another language better than English will be able to translate using that language. Thus, new contributors can take part in the translation process. Also, this opens a way to disambiguate words with vague meaning or to help guessing the context.
- Viewing suggestions while translating. Up to Pootle 1.1, in order to see suggestions made by others it was necessary to select the
View Suggestionsoption within the editing functions. Now this is straightforward, as suggestions are shown just below the current translation unit. Therefore, translators are aware of the suggestions others have done and they don’t make the mistake of suggesting something that’s already suggested.
Also, users with reviewing privileges will be able to accept and reject suggestions directly without reloading the entire page. - Searching for fields. Although Pootle has the ability to search using pogrep or an indexing engine such as Xapian, its interface only made it possible to perform simple searches. We made a list of the possibilities each method offer, and decided to put a goal to start improving this function: giving the ability to search for fields. So now it’s possible to select in which field we want to search, including source, target, location, and comments.
- Automatically unfuzzying messages marked as fuzzy. This is one of those things you don’t expect to do but end up doing it. Although it wasn’t in my original proposal, Dwayne, jealous with the work done with jQuery, posted an idea on the translate-pootle mailing list, so I took that bug and worked on that for a while. Now, an entry marked as fuzzy will be automatically unchecked when a change is made to the text.
- Similar to the previous task, I ended contributing a small patch to restyle the text showing the current running checks.
- Documentation for the described features has been done/updated too: alternative source language, suggestions, and searching for fields.
All these functionalities are already committed into SVN trunk and will be part of the upcoming Pootle 1.2 release. Anyway, now we’re testing this new stuff and some bug fixing is required before we can release a stable version.
Finally, I would like to point out another task I’ve been working on:
- Integrate open-tran. This isn’t finished yet, but I have a working prototype that shows suggestions retrieved from open-tran.eu using the XML-RPC interface. Some rework needs to be done on the code-base but I hope to finish it soon.
Things left to do or not started
It’s not easy estimating how much things you’ll be able to do in a three months time-frame, and this task becomes more difficult when you don’t know which code you’ll have to deal with. This leads to a couple of tasks dropped from the original proposal:
- Merging from templates. The idea was giving project administrators an easy way to upload templates without getting onto the server.
- RSS feeds. Communication is far from ideal in Pootle, and it’s very important to keep translators up-to-date in what refers to new/updated translations. With the work on the mozootle branch, Pootle will add support for databases so perhaps this makes it easier to open new communication ways.
Also, as far as time permits, I’m planning to continue developing for Pootle, and there are some areas where it’s necessary to focus in order to refine the work done until the moment:
- Performing AJAX requests efficiently. This affects specially to suggestions, since the code in trunk sends data to the general-purpose
translatepage(inefficiently), and ideally a single script should handle that and return a response in XML or JSON format. - Handle correctly paste events before we go unfuzzy. As each browser has its implementation for events, it’s very tricky being able to handle them all. Therefore, another approach should be taken in this aspect to avoid these issues.
- Expand alternative source language support. By now this feature works only on plain units, i.e., doesn’t support plural forms. Also, optimizations to gain performance should be taken into account.
All is not about coding
But Summer of Code is not just coding, it’s also about learning new things, personal experiences, and knowing new people. Some random bits about this:
- git-svn. I didn’t know I could use git and svn both at the same time. The main code is held at the SourceForge SVN repository, and with git-svn it’s been very easy to make feature branches to work on. It took me some time getting used to it, but it’s worthwhile.
- Dynamic web development is not just PHP.
- I love jQuery. JavaScript made simple.
- Have you ever been in a situation where you hate all the browsers? Oh yeah, rendering issues suck, it’s better not knowing how much time I’ve spent trying to resolve those kind of conflicts.
dir=rtlshould display items as if they were reflected on a mirror.- Community support is the key in FLOSS. Although I had background on other FLOSS projects, SoC experience has introduced me deeply into this world. It’s been very important the community support in order to get feedback, testing, a thank you note or even have a chat.
- Communication in English is another good point for this SoC — I’m not from an English-speaking zone. This blog is one of the side-effects for that need of communication, along with IRC meetings and weekly reports.
- It’s been a great pleasure having the chance to know the people you’re working with face-to-face and discussing project-related things around a table or having a drink.
Thank you notes
This project wouldn’t be possible without people that have been supporting my work for a while, so with these humble lines I’d like to say thank you (in no particular order): Translate.org.za staff (I’ve felt like at home with you), Friedel Wolff (hey man, you have time for everything!), Dwayne Bailey (thanks for your ideas and general support), Wynand Winterbach (you’re the git master! thanks for all), my mentor Sayamindu Dasgupta (you’ve done more than you could think, specially at the beginning), Lars Kruse (fundamental for the search stuff), all the people at #pootle and translate-devel and translate-pootle mailing lists, for your help, comments, and appreciations, and Google for making these things happen.


August 29th, 2008 at 10:52
Congratulations on a successful Summer of Code! I would say you were a model student. I’m glad to see you realised that success in Summer of Code is not just about writing code for the project. It was great to see how you drew in people, how you used the available help, and became an active member of our community on mailing lists, bugzilla, wiki, IRC, etc.
For me it is easy to see the success in your project: you already have commit access, you intend to continue, almost all of your work is committed and included for the next release, all your work is documented (including areas for improvement), people are aware of what you did, and you are taking ownership of the work you did.
Congratulations again. I’m looking forward to working together more!
(by the way, named searches in bugzilla only work for the user creating them - you’ll have to update the URL for open bugs for version 1.2 )
August 29th, 2008 at 11:35
Congratulations. Its been wonderful seeing you become part of the community and having the opportunity to meet you at the Mozilla Summit. I loved this post and I’m glad that you like us learnt quite a bit about community.
Really looking forward to seeing you again and seeing your contributions. So where should we host the first Pootle developer summit?
September 1st, 2008 at 8:33
Thanks for your words, really appreciated. Regarding the Pootle-dev-summit a friend suggested it could be celebrated here :P