NikosTsirakis/GSoC/tx pootle

= Integration of Transifex with Pootle =

Abstract
Transifex [1  is an open source system that provides translators with a way to contribute translations to remotely hosted projects. It was designed at last year's Google Summer of Code and it is used by the Fedora Project [2   to submit translations to almost a hundred projects and used by a few hundred translators from one translator-oriented Web interface. On the other hand, Pootle [3   is a web-based translation editor that provides a way to make it easier to localize using standards based file formats (PO and XLIFF).

Both tools provide integrated services to the end users and administrators. Currently, Transifex requires the user (ex. translator) to download and translate the necessary files on his workstation, and then submit them to the upstream project's versioning system from Transifex. Pootle helps translators to handle their translations through a web-based editor without having to first download files but after they cannot upload them somewhere (ex. to the project's repository server).

The scope of this application is to design a new workflow and implement the necessary features to combine features of these two systems in order to provide a more rich translation experience. By integrating the capabilities of these two systems we can provide a complete solution to the users that are now using each of these systems. This can be done by first analyzing the procedure under which each system works and then designing and implementing of a mechanism that will work as a middleware layer that connects Transifex and Pootle. This will be implemented in a way that blends well with the existing workflows of both tools.

Problem Statement
Currently, translators have to manually download PO files from outside of Transifex, change them, then use Transifex to submit these changed files to a project's repository. Users that work with Pootle just log in to a live Pootle server, and by using this web-based editor, they make their translations and after that another user (maybe an administrator) has to decide when, what and who to commit these files manually to a central repository server of each project. The conclusion is that both systems assist users to work with translations but in different ways of the whole translation process.

Finding ways in order to make easier the work that translators or project administrators have, is the desirable target. Transifex lacks where pootle assists and the opposite.

Project Plan
The main scope of this project is to describe the idea of integrating Transifex with Pootle. I do believe that this will help both Transifex's and Pootle's users to work faster and straightforward to the translation of files. Both systems have many capabilities and their interoperation can provide more featureful translation services. Since both systems are implemented in the same programming language (Python), the integration overhead should not be very high.

Initially I will study how Pootle is working and get in through with Pootle developing team. Next i will study transifex and find ways or talk with the student that will work on the Command Line Interface. After having a first idea about these two systems i will have to design how the workflow of translation process will work and where each system is being evolved. The implementation of the proposed project will be the next step where some first services will be added. For instance every project administrator in Pootle will have the right to permit/forbid a user from directly committing files to the projects repository (through Transifex) and not just locally to Pootle's server. Also the administrators in Pootle will have the opportunity to give the perimision to users in order to get files for projects directly from the repository server and not from their local server (also through Transifex). On the other side Transifex will be connected with Pootle in a secure and authenticated way in order to provide some basic actions to Pootle users/administrators.

This application is concerned with the following objectives:

1. Provide a middleware layer that will "talk" both with Transifex and Pootle in order to make them work together. 1. Add extra functionality to Pootle in order to commit files into transifex and get files from transifex. 1. Collaborate maybe with the student working on the Command Line Interface in order to extend Transifex in a way that accepts submissions without the web interface. The final project will be the integration of Transifex and Pootle without being necessary to be together in the same server but work distributed in the internet network and provide more services to the end users.

Deliverables
The deliverable of the proposed project will be:

1. The Layer Bridge that will assist Transifex and Pootle communicate and share their services 1. Internal code both to Transifex and Pootle that will let have some controls of this connection 1. Extensive documentation of the implemented project (ex. wiki) - a documentation on the Pootle side, a documentation on the Transifex side, and a documentation of the intermediate interface (maybe with the collaboration of the student that will work on the Command Line Interface)

Schedule

 * May: Become familiar with Python and TurboGears. Study of the current implementation of Transifex and Pootle (contact both project's maintainers)
 * June 1 - June 15: Design phase - Use cases, some first attempts for developing
 * June 15 - July 13: Implementation of the middleware layer that will talk both to Transifex and Pootle. Expose certain functionality from Transifex and call it from Pootle.
 * July 14 (mid-term): 1st Deliverable of the project
 * July 15 - August 7: Implementation of administration interfaces in Pootle and Transifex
 * August 8 - August 26: Ensure good integration, test access and get feedback for any additional tweaks needed
 * August 27 - August 31: Last tweaks, and Final evaluation

Why me
My name is Nikos Tsirakis and I'm currently PhD student at the University of Patras in Greece. I have a wide experience in web development and I have participated in many web development projects during the last 5 years. Among them I have participated, for 2 years, in the development of a web based Software Quality Measurement tool during an R&D project where I implemented some data miming algorithms, the user interface and the visualization reporting tool. I also participate in the development team of an open source e-Learning and Human Capital Development system called efront.

I live in the same city with Dimitris Glezos, the maintainer of Transifex and person who suggested this idea. Having worked together with him in many projects in the past, and discussed this idea face to face, I feel confident I will bring this project to completion successfully.

Should you need a curriculum vitae of mine, please don't hesitate to contact me at [mailto:nikos@tsirakis.com nikos@tsirakis.com].