SummerOfCode/2007/DimitrisGlezos/Notes

From FedoraProject

< SummerOfCode | 2007 | DimitrisGlezos(Difference between revisions)
Jump to: navigation, search
m (1 revision(s))
m (Weeks 5, 6 (27, 28))
 
(One intermediate revision by one user not shown)
Line 6: Line 6:
 
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.
 
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.
  
{{ Template:message/note |  The original application text can be found at: [[SummerOfCode/2007/DimitrisGlezos| SummerOfCode/2007/DimitrisGlezos]]
+
{{Admon/note |  The original application text can be found at: [[SummerOfCode/2007/DimitrisGlezos| SummerOfCode/2007/DimitrisGlezos]]}}
}}
+
 
+
[[TableOfContents(2)] 
+
  
 
== Goal ==
 
== Goal ==
Line 27: Line 24:
 
== Roadmap ==
 
== Roadmap ==
  
{| border="1"
+
{|
 
|-
 
|-
|<-2: tableclass="t1 small" rowclass="th" | '''Project milestones'''
+
! colspan="2" | Project milestones
 
|-
 
|-
|<rowclass="th2" | Date || Wha?
+
| Date || Wha?
 
|-
 
|-
 
| May      ||<class="g2" | (./) Study DL structure
 
| May      ||<class="g2" | (./) Study DL structure
Line 58: Line 55:
 
=== Milestones ===
 
=== Milestones ===
  
1. (./) Port DL to Fedora. Set up modules, theme etc.
+
# (./) Port DL to Fedora. Set up modules, theme etc.
1. (./) Add support for git and Mercurial to statistics
+
# (./) Add support for git and Mercurial to statistics
1. (./) Put it into production @ [http://translate.fedoraproject.org/ translate.fedoraproject.org]  
+
# (./) Put it into production @ [http://translate.fedoraproject.org/ translate.fedoraproject.org]  
1. (./) Build model for submission on top of DL
+
# (./) Build model for submission on top of DL
1. (./) Write functionality for checkout/commit for local repos
+
# (./) Write functionality for checkout/commit for local repos
1. (./) Write functionality over password/SSH
+
# (./) Write functionality over password/SSH
1. (./) Test and put into production (out of GSoC's coding scope)
+
# (./) Test and put into production (out of GSoC's coding scope)
  
 
== Details ==
 
== Details ==
Line 70: Line 67:
 
=== First ideas ===
 
=== First ideas ===
  
1. Investigate WUI for translation statistics and choose one or two
+
# Investigate WUI for translation statistics and choose one or two
* Most prominent one is [http://l10n.gnome.org/ 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
+
#* Most prominent one is [http://l10n.gnome.org/ 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
1. 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)
+
# 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)
* Needs coordination with the [[Infrastructure| Fedora Infrastructure]]  folks
+
#* Needs coordination with the [[Infrastructure| Fedora Infrastructure]]  folks
* Needs work to make it work with our [[DocsProject| Documentation Infrastructure]]  
+
#* Needs work to make it work with our [[DocsProject| Documentation Infrastructure]]  
1. Research libraries to authenticate against our infrastructure (LDAP?) and wrappers around SCM tools (CVS, SVN for start)
+
# Research libraries to authenticate against our infrastructure (LDAP?) and wrappers around SCM tools (CVS, SVN for start)
* Could do direct LDAP authentication or through SSH key (all contributors have one). Needs discussion.
+
#* Could do direct LDAP authentication or through SSH key (all contributors have one). Needs discussion.
* Investigate how a remote admin grants access to Fedora the cvsl10n "entity" (middleman)
+
#* Investigate how a remote admin grants access to Fedora the cvsl10n "entity" (middleman)
1. Code the PO fetcher
+
# Code the PO fetcher
* Python command-line tool (update: will implement it as a web app). Basic functionality: list, checkout & checkin of remotely-hosted accessible PO files.
+
#* Python command-line tool (update: will implement it as a web app). Basic functionality: list, checkout & checkin of remotely-hosted accessible PO files.
* Name idea: Fletcher (update: transifex)
+
#* Name idea: Fletcher (update: transifex)
1. Test with folks from [[L10N| L10N]]  team.
+
# Test with folks from [[L10N| L10N]]  team.
* Example remote repos: yum (CVS), <code>fedorahosted.org</code> (git, hg, etc.), GNOME (SVN)
+
#* Example remote repos: yum (CVS), <code>fedorahosted.org</code> (git, hg, etc.), GNOME (SVN)
1. Integrate into DL (not really necessary, but would be good)
+
# Integrate into DL (not really necessary, but would be good)
  
 
{{Anchor|deploy}}
 
{{Anchor|deploy}}
Line 89: Line 86:
 
=== Plan for testing and deployment ===
 
=== Plan for testing and deployment ===
  
1. (./) Test locally with local repos
+
# (./) Test locally with local repos
1. (./) Run transifex on publictest5 and commit to an hg repository which is in this user's home dir.
+
# (./) Run transifex on publictest5 and commit to an hg repository which is in this user's home dir.
1. (./) Start meddling with <code>~/.ssh/.config</code>
+
# (./) Start meddling with <code>~/.ssh/.config</code>
1. (./) Enable authentication through FAS.
+
# (./) Enable authentication through FAS.
1. (./) Create a user on cvs.fpo and test with a directory like <code>/cvs/l10n/transifex-testing</code>. Finalize <code>~/.ssh/config</code> security options.
+
# (./) Create a user on cvs.fpo and test with a directory like <code>/cvs/l10n/transifex-testing</code>. Finalize <code>~/.ssh/config</code> security options.
1. (./) Create a user for each Fedora repo and enable one module from each repo.
+
# (./) Create a user for each Fedora repo and enable one module from each repo.
1. (./) Create an RPM, put it on <code>infrastructure.fedoraproject.org</code>. Deploy on app servers with minimal configuration (one repo, one module).
+
# (./) Create an RPM, put it on <code>infrastructure.fedoraproject.org</code>. Deploy on app servers with minimal configuration (one repo, one module).
1. (./) Export data and deploy on app servers.
+
# (./) Export data and deploy on app servers.
 
+
  
 
{{Anchor|testing}}
 
{{Anchor|testing}}
Line 105: Line 101:
  
 
Any help would be greatly appreciated! Please contact [[DimitrisGlezos| Dimitris Glezos]]  or <code>fedora-trans-list</code> for helping out.
 
Any help would be greatly appreciated! Please contact [[DimitrisGlezos| Dimitris Glezos]]  or <code>fedora-trans-list</code> for helping out.
 
  
 
{{Anchor|log}}
 
{{Anchor|log}}
Line 112: Line 107:
 
Timeframe: 13 weeks (June, July, August -- weeks 23-35)
 
Timeframe: 13 weeks (June, July, August -- weeks 23-35)
  
{{ Template:message/note |  Note: Surplus features (ones out of the project's scope) are noted with a {{Template:Important}}. See also: [https://fedorahosted.org/transifex/timeline Transifex Trac timeline]
+
{{Admon/note |  Note: Surplus features (ones out of the project's scope) are noted with a {{Template:Important}}. See also: [https://fedorahosted.org/transifex/timeline Transifex Trac timeline]}}
}}
+
  
 
=== Weeks 1, 2 (23, 24) ===
 
=== Weeks 1, 2 (23, 24) ===
Line 141: Line 135:
 
* Implemented [http://translate.fedoraproject.org/search/ Search]  {{Template:Important}}
 
* Implemented [http://translate.fedoraproject.org/search/ Search]  {{Template:Important}}
  
{{ Template:message/notice | At this point, all goals for this project could be considered fulfilled (unless a ticket gets opened for the [https://fedorahosted.org/transifex/query?status=new&status=assigned&status=reopened&milestone=GSoC+complete&order=priority GSoC-ready milestone] ). Testing and deployment follow, in close collaboration with the [[Infrastructure| Fedora Infrastructure Project]] .
+
{{Admon/tip | At this point, all goals for this project could be considered fulfilled (unless a ticket gets opened for the [https://fedorahosted.org/transifex/query?status=new&status=assigned&status=reopened&milestone=GSoC+complete&order=priority GSoC-ready milestone] ). Testing and deployment follow, in close collaboration with the [[Infrastructure| Fedora Infrastructure Project]].}}
}}
+
  
 
=== Weeks 7, 8 (29, 30) ===
 
=== Weeks 7, 8 (29, 30) ===

Latest revision as of 17:12, 2 June 2008

Contents

[edit] 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.

Note.png
The original application text can be found at: SummerOfCode/2007/DimitrisGlezos

[edit] 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.

[edit] 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

[edit] Roadmap

Project milestones
Date Wha?
May (./) Study DL structure
28 May (./) Request from Fedora Infrastructure Project for hosting
14 June (./) First prototype of DL for Fedora (announced on fedora-trans-list)
28 June (./) Working WUI for translation statistics (translate.fpo )
8 July (./) Overview of existing Python projects for remote SCM access & auth on our infrastructure
9 July (./) Mid-term evaluation
16 July (./) Basic config files decided for fetching tool
30 July (./) Working prototype with proof-of-concept functionality
13 August (./) Working tool for an external repository (ACLs, etc.)
30 August (./) Hook-up with WUI & make tweaks
31 August (./) Final evaluation

[edit] 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)

[edit] Details

[edit] First ideas

  1. Investigate WUI for translation statistics and choose one or two
    • 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
  2. 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)
  3. Research libraries to authenticate against our infrastructure (LDAP?) and wrappers around SCM tools (CVS, SVN for start)
    • Could do direct LDAP authentication or through SSH key (all contributors have one). Needs discussion.
    • Investigate how a remote admin grants access to Fedora the cvsl10n "entity" (middleman)
  4. Code the PO fetcher
    • Python command-line tool (update: will implement it as a web app). Basic functionality: list, checkout & checkin of remotely-hosted accessible PO files.
    • Name idea: Fletcher (update: transifex)
  5. Test with folks from L10N team.
    • Example remote repos: yum (CVS), fedorahosted.org (git, hg, etc.), GNOME (SVN)
  6. Integrate into DL (not really necessary, but would be good)

[edit] 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 ~/.ssh/.config
  4. (./) Enable authentication through FAS.
  5. (./) Create a user on cvs.fpo and test with a directory like /cvs/l10n/transifex-testing. Finalize ~/.ssh/config security options.
  6. (./) Create a user for each Fedora repo and enable one module from each repo.
  7. (./) Create an RPM, put it on infrastructure.fedoraproject.org. Deploy on app servers with minimal configuration (one repo, one module).
  8. (./) Export data and deploy on app servers.

[edit] Testing

A Live transifex instance can be found at [1] , and an instance for purely testing purposes at [2] .

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

[edit] Log

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

Note.png
Note: Surplus features (ones out of the project's scope) are noted with a Important.png. See also: Transifex Trac timeline

[edit] 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

[edit] Weeks 3, 4 (25, 26)

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

[edit] 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 Important.png
  • Work & discussions on ACLs with mentor, admins. Decided to go on with using ssh-agent for now.
  • Implemented Search Important.png
Idea.png

[edit] Weeks 7, 8 (29, 30)

[edit] Weeks 9, 10 (31, 32)

  • Idle: Away for vacations

[edit] Weeks 11, 12 (33, 34)

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

[edit] Weeks 13 (35)

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


[edit] Resources

[edit] Links