SummerOfCode/2007/DimitrisGlezos/Notes

= L10N GSoC '07: The notebook =

This page was used to facilitate the organization and communication about our Google Summer of Code project "An upstream-friendly l10n Web UI for Fedora". Basically it's a place where we keep stuff. It is now kept for historical purposes.

Goal
The goal of this application is to give Fedora translators the ability to contribute to more projects than before. Fedora's mantra is *upstream upstream upstream, and this applies to translations as well: committing to upstream projects instead of keeping translations downstream to Fedora means that more projects can benefit from the translators' contributions.

This approach is different from others which host the translations and do not automatically contribute them back to upstream, like Ubuntu's Rosetta for example.

Acronyms used
DL:: Damned Lies -- Software used by the GNOME project to handle web translation statistics L10N:: Localization -- See: Fedora L10N Project RFR:: Request for Resource -- Fedora Infrastrucure term SCM:: Source Control Management -- Revision control systems (CVS, SVN, git, ...) WUI:: Web User Interface

Milestones

 * 1) (./) Port DL to Fedora. Set up modules, theme etc.
 * 2) (./) Add support for git and Mercurial to statistics
 * 3) (./) Put it into production @ translate.fedoraproject.org
 * 4) (./) Build model for submission on top of DL
 * 5) (./) Write functionality for checkout/commit for local repos
 * 6) (./) Write functionality over password/SSH
 * 7) (./) Test and put into production (out of GSoC's coding scope)

First ideas

 * 1) Investigate WUI for translation statistics and choose one or two
 * 2) * Most prominent one is GNOME's Damned Lies, because it's written in Python, it's featureful enough to accommodate our needs. Needs tweaking to make it project-agnostic (currently it has 'GNOME' hardcoded in many places for example). See links for more of them
 * 3) Set up a xen machine to play with and a MySQL DB for DL and make DL work with our infrastructure (directory structure, SCMs, systems, web servers)
 * 4) * Needs coordination with the Fedora Infrastructure  folks
 * 5) * Needs work to make it work with our Documentation Infrastructure
 * 6) Research libraries to authenticate against our infrastructure (LDAP?) and wrappers around SCM tools (CVS, SVN for start)
 * 7) * Could do direct LDAP authentication or through SSH key (all contributors have one). Needs discussion.
 * 8) * Investigate how a remote admin grants access to Fedora the cvsl10n "entity" (middleman)
 * 9) Code the PO fetcher
 * 10) * Python command-line tool (update: will implement it as a web app). Basic functionality: list, checkout & checkin of remotely-hosted accessible PO files.
 * 11) * Name idea: Fletcher (update: transifex)
 * 12) Test with folks from  L10N  team.
 * 13) * Example remote repos: yum (CVS),  (git, hg, etc.), GNOME (SVN)
 * 14) Integrate into DL (not really necessary, but would be good)

Plan for testing and deployment

 * 1) (./) Test locally with local repos
 * 2) (./) Run transifex on publictest5 and commit to an hg repository which is in this user's home dir.
 * 3) (./) Start meddling with
 * 4) (./) Enable authentication through FAS.
 * 5) (./) Create a user on cvs.fpo and test with a directory like  . Finalize   security options.
 * 6) (./) Create a user for each Fedora repo and enable one module from each repo.
 * 7) (./) Create an RPM, put it on  . Deploy on app servers with minimal configuration (one repo, one module).
 * 8) (./) Export data and deploy on app servers.

Testing
A Live transifex instance can be found at, and an instance for purely testing purposes at.

Any help would be greatly appreciated! Please contact Dimitris Glezos  or   for helping out.

Log
Timeframe: 13 weeks (June, July, August -- weeks 23-35)

Weeks 1, 2 (23, 24)

 * Requested and got access to publictest4 (later renamed to publictest5)
 * Patched DL for UTF
 * Requested and updated fc6 package of python-cheetah
 * Created repo /cvs/l10n and added flp-web
 * Added HG and GIT support to DL
 * Filed bugs for incorrectly configured modules that show up wrong on our stats
 * Fixed DL i18n bug

Weeks 3, 4 (25, 26)

 * Added OLPC Sugar, sent email to fix i18n for rest of the olpc modules
 * Created bugzilla L10N product, owners list, etc.
 * Created more configurable and flexible  script
 * Created transifex hosted space
 * checkout function, submit page, filters, logging added

Weeks 5, 6 (27, 28)

 * Made code PEP8 compatible
 * Sent report to gnome i18n
 * Commit support landed to transifex
 * Added i18n support to transifex
 * OLPC release not showing up on translate.fpo fixed
 * Elvis move happened
 * Work & discussions on ACLs with mentor, admins. Decided to go on with using  for now.
 * Implemented Search

Weeks 7, 8 (29, 30)

 * Idle in week 7: Participated in GUADEC '07. Presented transifex in a talk.
 * Started testing & deployment

Weeks 9, 10 (31, 32)

 * Idle: Away for vacations

Weeks 11, 12 (33, 34)

 * Overhaul of the command execution layer
 * msgfmt check for PO files
 * Removed unnecessary temporary file creation (more secure)

Weeks 13 (35)

 * Added more validations, check for binary uploads
 * Many fixes, typos
 * Added "add module" admin functionality

Links

 * DL
 * live.gnome.org page: http://live.gnome.org/TranslationProject/NewStatusPages
 * Source: http://svn.gnome.org/viewcvs/damned-lies/trunk/
 * Fedora owners
 * docs: http://cvs.fedoraproject.org/viewcvs/owners/owners.list?root=docs&rev=1.23&view=markup
 * pkgs: http://cvs.fedoraproject.org/viewcvs/owners/owners.list?rev=1.3008&view=markup
 * l10n: https://admin.fedoraproject.org/accounts/groupbox.cgi?_editme=Edit&name=cvsl10n&_role_show_all=1
 * l10n 2: http://fedoraproject.org/wiki/L10N/Teams
 * Bugzilla: http://bugzilla.redhat.com/bugzilla/describecomponents.cgi?product=Fedora%20Documentation, Fedora Core, Fedora Extras
 * Development
 * CVS structure examples:
 * Docs: http://cvs.fedoraproject.org/viewcvs/release-notes/devel/?root=docs
 * Elvis: http://docs.fedoraproject.org/translation-quick-start-guide/en/sn_translating_software.html
 * External (yum): http://linux.duke.edu/projects/yum/cvs.ptml
 * Various
 * i18n.redhat.com WUI: http://i18n.redhat.com/cgi-bin/i18n-status?page=status&branch=HEAD&locale=el&essential=1
 * Discussion for domain name: http://www.redhat.com/archives/fedora-trans-list/2007-March/msg00078.html
 * Example project (last year's, DocBook): http://fedoraproject.org/wiki/MoinDocBookProject/RoadMap
 * Blah.
 * HelpOnSmileys
 * LOLCODE
 * SSH
 * Config file, example , openssh config
 * sample connection with RSA/DSA
 * an sftp implementation with probably a nice auth function