Porting Yelp to WebKit2Gtk+, three months as an igalian

It have been a while since I write a post here and so many things has happened on my life. I have ended my second GSoC, I had an internship with Igalia and I’m participating on the organization of a music festival!

But I’m here to talk about my Igalia internship. The work I should did during this internship was to port a GNOME app from WebKitGtk+ to WebKit2Gtk+ and write a tutorial about how to do the port. The chosen app was Yelp. During this year GUADEC people talk about the need of porting this app and both my mentors and me thought that it would be a really interesting app to port.

For those who don’t know what Yelp is, Yelp is the GNOME help viewer. The implementation of it includes a WebView that shows the help document. The idea is transform the XML documents to HTML using XSLT and then show the result. I have submit the port patches to bugzilla and they are waiting to be reviewed. The most difficult part of the port was dealing with the multiprocess architecture of WebKit2 so we have to deal with DOM in a different process from the WebView process. This is something that makes more difficulta to port certain apps but it could be solved with different techniques.

Appart from porting Yelp, I submit a patch to WebKit2Gtk+. I expose some part of the API to could check if the clicked element corresponds to a selected area or not. Working with the WebKit code has been a really challenging and cool experience that I want to repeat. When I have time I would end my work on this patch to enable improve plugin support at WebKit.

The tutorial I made to help people to port Yelp can be found here. In addition when I ended my Yelp port I also worked on porting Sushi and Bijiben. Sushi port is finished (it was a really trivial port) and Bijiben port had been cancelled due to the fact that it would probably be refactored to use a TextView instead of WebView.

To end I have to thank to Igalia to give this huge opportunity of working on such a awesome company. I specially want to thank my two mentors, Carlos Lopez and Carlos García for the help they provide me during this time. During the Brno GUADEC somebody told me that Igalia was one-of-a-kind company and I totally agree, the atmosphere is great and the way of working they have is unique. I’m really proud of could be an igalian for these three months. Thank you Igalia!!

API, GUADEC and big files

During the last days I have been working on completing the program features that were planned for GSOC. I have create a program API which allows a user to create useful plugins like a checkers which checks if a message is translated correctly and a hint provider which provides translations to the user as a Translation Memory.

On the other hand, I have been on Strasbourg GUADEC!! It’s has been an awesome three days where I met old and new friends and I have the opportunity of give a lighting talk about my work on GSoC. Thanks to GNOME for sponsoring me!! :)).

The most important step for concluding this GSoC is to make the program works with big files (3000 messages or more). I believe that I habe discovered the problems that cause this issue. The program has a ListBox where each row represents a message. When I open a big file (GNumeric for example) the program memory consumption goes from 70MB to 230MB and the program is terribly slow. I tried to make each row lighter removing some icons and using a simple two lines label but the problem remains so I decided to try with TreeView. I have written two program test to store a huge amount of rows using TreeView and ListBox and the performance of the TreeView widget is quite better. So I will create a new custom CellRenderer to display the message information inside a treeview.

The program is almost ready for use so I really need some beta tester translators to test it and to give me their opinion or to find bugs. I’m using GitHub issue tracker so file a bug is really easy :). If any developer wants to help it would be really appreciated too.

Details and more details

Since my last report I have been working on improving gettext-po bindings, fixing some bugs and starting to implement the plugin engine.

The gettext-po bindings are finished and the whole gettext-po library has its equivalent on the Vala bindings. The plugins engine is implemented but I have to create an API to be able to do a useful plugin. I have been cleaning the code so creating that API should be easier.

In addition, I have implement a notification bar which indicates the user that there are no messages that have the search criteria for example and the message list scroll works properly when we select a item. I have been trying some things for implement “automatic scrolling” but I finally do it manually. The problem is that when a row is selected, this row grabs the focus so if we are typing inside the search bar, we can not continue typing.

During the next weeks I will create a API that makes possible to create useful plugins and I will fix the bugs and details that the application has.

You can try the program downloading it from Github.

The GUADEC will start at the 26th of July and I will be there 🙂 so if you have some idea about the application, a good place to tell me would be there.

Keep working on GNOMECAT

During last weeks I have been working on improving the program UI and the po file management. You can see the result in the following video:

I have improve PoFiles bindings including functions to file header and string origins management and fixing some errors. I have use the information from header files to improve opened files panel and to create a custom recent files widget.

Saving files almost works. We can save a file but there are some troubles with origins which I should fix. In addition I have modify a little the implementation of the Po File class in order to make it more efficient.

I’m starting to improve the profile panel and I have started separating the entries in two stackable panels for basic and advanced configuration. I added autocomplete for plural form and team email when we select a language but it only works in a couple of languages :S. If you can contribute to the code an easy and very useful way would be to fill this data for some languages. You can even do this from the GitHub interface.

You can try and contribute to the code using the GitHub repository. If you are interested on contributing to the application the most relevant part I should work on is figure out how to improve the program performance with big files (gnumeric could be a good example).

On the other hand I’m planning to attend this year GUADEC (I have already bought the flights). There it will be a I18N BoF which I’m afraid I wont be able to assist because I leave Strasbourg on 29th of July. However it would be really interesting to receive some feedback from the translators during that days.


I have to thanks GNOME Foundation for sponsoring the trip one year again 🙂

Implementing the Editing Panel

During the last week I have been re-implementing the editing panel following the guidelines provided by the mockup which Daniel Korostil made some time ago:


You can watch the final result on the following video:

The biggest part of the edit panel is occupied with the editor panel where we can translate the strings and get some information related to them like the tips and the origins. Message tips are more visible now.

I have also implement message origins and I added the possibility of view these origins but as you can see I’m using a Gtk Popover widget which is part of GTK+ 3.12. I’m currently using Fedora 20 and my version of GTK+ is 3.10 so I need to use JHBuild to view this feature and I guess that most of translator who are trying the application are in a similar situation. That’s why I have decided to move this commit to a separate git branch.

During this week I have also add keyboard shortcuts to some actions. You can see what shortcuts I have created here. The most are completely random so I need to figure out which is the best shortcuts mapping that I can use. Any idea is really welcomed.

I’m trying to write down all the issues I need to fix or implement at the GitHub issues system. There you can find which are the next steps in the application implementation.

GNOMECAT. Progress report

I have been accepted again to participate in Google Summer of Code program!! During this summer I plan to finish the application I started during last summer.

The first month I have been really bussy with some university exams and projects so I haven’t be able to post any report. But I have been working on changing some parts of the UI interface.

I have create a design wiki page using the relevant art from the previous GTranslator redesign and I have added some new designs. I have started to implement this designs you can see the result in the following video.

As you can see I have remove the preferences dialog and now it’s part of the main window. In addition I have add a .desktop file, I have implemented i18n support, a wellcome mode where the program forces the user to create a profile before starting to use the program, etc. You can see all my work in the repository commits.

I expect you like the result. It needs to be polished and some bug fixing (encoding combobox for example) but I believe that you can see the idea. My next step is to redesign the main editing window to make something similar to this.

You can test the code downloading it from the GitHub repository. I use Fedora 20 (with GNOME 3.10) and I don’t need to use JHBuild for compiling and running the program.

Please, if you have any trouble building, installing or running the program do not hesitate to contact me leaving a comment or sending an email.

Se continuas empregando esta web, aceptas o uso de cookies. máis información

As cookies son pequenos paquetes de datos que se almacenan no teu navegador e que permiten mellorar a experiencia de usuario. Se continúas a usar esta web sen cambiar a túa configuración das cookies ou premes o boton "Aceptar" estas aceptando o uso de cookies neste sitio.