Community:SummerOfCode14:Brainstorming: Difference between revisions

(Adding LDAP support to Thunderbird section)
 
(57 intermediate revisions by 28 users not shown)
Line 45: Line 45:
! Comments
! Comments
|-
|-
| Convert in-content XUL pages to HTML
| Render large PNG images
| Some of Firefox's in-content pages like about:newtab, about:memory, etc. use XUL. If we used HTML instead, it'd be easier for people to hack on them, they'd benefit from performance/bugfix improvements to the web, and so on. It would be nice to convert some of these pages away from XUL.
| For data visualization web sites like [http://bioviz.rocq.inria.fr SegAnnDB] need to display large PNG images, but [http://sugiyama-www.cs.titech.ac.jp/~toby/images/ as this test shows], Firefox does not render very large PNG images. [https://bugzilla.mozilla.org/show_bug.cgi?id=978893 A bug has been filed] and this bug could perhaps be fixed by a Google Summer of Code student.
| Good knowledge of HTML, CSS and JS. Knowledge of XUL and/or possibly the new shadow DOM specs will likely come in handy.
| unknown
| Gijs
| [https://wiki.mozilla.org/User:Tdhock tdhock]
| Gijs
|  
|  
|-
| Firefox front-end contribution add-on
| Build an add-on that works on Nightly and lets people write patches against the files in their Nightly, and easily put those up in bugzilla (in a format that can be grokked by hg qimport). Note that this should use (or rewrite/emscripten-recompile) the python preprocessor into JS and automatically download the required source files for files which are preprocessed.
| Good knowledge of web tech like HTML, CSS, JS. Some knowledge of Firefox internals (like having written a XUL-based add-on before).
| Gijs
| Gijs
|
|-
| Provide proper WebRTC testing and integration on BSD systems
| As of now, WebRTC is enabled by default on BSD systems but needs more testing and bugfixes in real-life situations to make it rock-solid and usable, on par with Tier1 platforms. The WebRTC code that already landed for *BSD needs proper integration upstream too.
| Good knowledge of C and IPC.
| Gaston
| Gaston
|
|
|-
|-
Line 91: Line 77:
! Mentor(s)  
! Mentor(s)  
! Comments
! Comments
|-
| Implementation of a default Voice Recorder app
| There is no built in voice/sound recorder app in gaia, as stated in [https://bugzilla.mozilla.org/show_bug.cgi?id=877286 Bug 877286]. The taking of memos shouldn't be left to external apps. The goal would be to create such an app for the built-in package. An addon for the Music app is also considered.
| Familiarity with gaia and a good knowledge of CSS, Javascript and HTML5 is needed. Should have a fairly good idea about hosted app structure and UI layout. Understanding of the Media Recording API is a plus, but can be caught up on the fly.
| [https://mozillians.org/u/vedadux/ Vedad Hadžić]
|
|
|-
| Math virtual keyboard
| Firefox OS has native support to MathML (probably the best one if some patchs already in Firefox (Desktop) Nightly was apply) and because of that is suitable to use in mathematical classes. Unfortunately, there is a lack of tools to edit MathML and a good start will be have a special virtual keyboard. For example, a math virtual keyboard will improve the user experience with [http://r-gaia-cs.github.io/TeXZilla-webapp/ this demo].
| Good knowledge of CSS, Javascript, HTML5 (MathML included), LaTeX. Understanding of the default keyboard can be caught up on the fly.
| [https://mozillians.org/u/raniere/ Raniere Silva]
|
|-
|}
|}


Line 116: Line 116:
! Mentor(s)  
! Mentor(s)  
! Comments
! Comments
|-
| Allowing write access to LDAP address books
| It is about time this [https://bugzilla.mozilla.org/show_bug.cgi?id=86405 13 year old bug] was crushed once and for all. Currently LDAP address books can be opened in read-only mode, but cannot be written to. Enabling write access would bring Thunderbird one step closer to being [https://bugzilla.mozilla.org/show_bug.cgi?id=564148 enterprise-friendly] by allowing enterprises (and individuals) to share a common address book across multiple Thunderbird installations.
|
| https://wiki.mozilla.org/User:Mikerobinson
|
|
|}
|}


== Calendar ==
== Calendar ==
Line 130: Line 136:
! Comments
! Comments
|-
|-
| Make Lightning Fast
| The Lightning Extension has a few performance problems, especially with lots of calendars. Now that the [http://mikeconley.ca/blog/2012/06/15/gecko-profiler-now-works-in-thunderbird-daily/ Gecko Profiler] works in Thunderbird Daily, its a great time to harness its power and improve Lightning's performance. A Student working on this project should:
# [https://bugzilla.mozilla.org/buglist.cgi?quicksearch=keyword%3Aperf%20prod%3Acalendar&list_id=6253887 Browse Bugzilla] to get an overview of reported performance problems.
# Use the Gecko Profiler to identify performance bottlenecks, for example occurrence calculation.
# Propose a method to improve performance in a way that would move the bottleneck elsewhere and discuss with mentor.
# Fix the bottleneck.
# Continue with (2).
Depending on remaining time and student experience, adding performance tests to Lightning would be a bonus.
| Javascript; Python and make for perf tests
| Philipp (:Fallen)
| Ludovic (:ludovic)
| A student applying for this project should be able to work with large codebases. Getting familiar with the Lightning source code early improves chances of being accepted. Look for Fallen on irc.mozilla.org / #calendar if you need help getting started.
|-
| Improve Calendar Backends
| Lightning has historically supported two modes for calendar providers: cached and uncached. In uncached mode, each request is directly relayed to the remote end, causing a lot of traffic. Therefore, cached mode was introduced, which is close to a "real" synchronization, where only changes are transferred. In the future it would be nice to use cached mode exclusively. To do so, there need to be some changes in the backend. This project consists of a combination of the following bugs, depending on time and student skill:
* Finish the patch I started for async storage ({{bug|501689}})
* Move calendar metadata from the [http://mxr.mozilla.org/comm-central/source/calendar/base/public/calIChangeLog.idl#83 provider inteface] to the [http://mxr.mozilla.org/comm-central/source/calendar/base/public/calIItemBase.idl item interface] (no bug yet)
* Turn the ICS calendar into a cache-only provider ({{bug|780992}})
* Turn the CalDAV calendar into a cache-only provider (no bug yet)
| Javascript, SQL,
| Philipp (:Fallen)
| Mohit (:redDragon)
| As these changes will partially require some migration steps, it is important to write unit tests for the code produced during the Summer of Code. Not all of the mentioned bugs need to be fixed for passing mid-terms and finals, please read through the bugs and consult with mentor or reporter with your suggestion when applying.
|}
|}


Line 190: Line 172:
! Mentor(s)  
! Mentor(s)  
! Comments
! Comments
|-
|}
|}


Line 226: Line 209:
! Mentor(s)  
! Mentor(s)  
! Comments
! Comments
|-
|}
|}


Line 347: Line 331:
! Comments
! Comments
|-
|-
! WebRTC support
| Single window UI:  
! ''Goal: Support voice/video chat using WebRTC via XMPP (and potentially other protocols).''
| ''Goal: Provide an alternative UI that works well in a single window.''
Add voice and video chat to Instantbird via WebRTC. This will involve adding APIs to allow protocols to prepare a voice/video connection to a contact and some basic user interface to show the video feed.
! JavaScript, XPCOM, XUL
! Florian Quèze
! Benedikt Pfeifer
! XEP-0320, XEP-0338, XEP-0339, XEP-0343 for XMPP
|-
! Single window UI:  
! ''Goal: Provide an alternative UI that works well in a single window.''
To design and implement a single-window UI that does not require a separate contact list and makes good use of the available space when the window is full-screen. Avenues to explore are e.g. multiple side-by-side chats (extending what is currently possible with tabs), and automatic resizing of conversations. The student should bring a good (if not complete) vision for this project, demonstrated via mockups in the application.
To design and implement a single-window UI that does not require a separate contact list and makes good use of the available space when the window is full-screen. Avenues to explore are e.g. multiple side-by-side chats (extending what is currently possible with tabs), and automatic resizing of conversations. The student should bring a good (if not complete) vision for this project, demonstrated via mockups in the application.
! JavaScript, XPCOM, XUL
| JavaScript, XPCOM, XUL
! Florian Quèze
| Florian Quèze
!
|
!
|
|-
|-
! FileLinks in IMs / File transfer
|}
! ''Goal: File transfers that work reliably for every protocol.''
 
The Thunderbird Filelink feature allows users to upload attachments to  an online storage service, replacing the email attachment with a link. This existing code could be used to implement file transfer. While some protocols support file transfer directly, this approach would provide a fallback that should always work. Designing and implementing a good UI  frontend would also be required.
== Emscripten ==
! JavaScript, XPCOM, XUL
 
! Florian Quèze
{| class="standard-table" border="1" style="border-collapse: collapse"
! aleth
! The frontend should be flexible enough to be able to handle other file transfer methods when they are implemented, e.g. WebRTC for XMPP or DCC for IRC.
|-
|-
! Improve JS-XMPP
! Title
! ''Goal: Ease working with the JavaScript XMPP implementation and implement new features.''
! Details
Include better syntax for XML handling, implementing handling of MUCs  and other features. Feature-parity with libpurple's XMPP support is one of the prerequisites for replacing the libpurple XMPP plug-in that is currently used. One possible improvement would be to support voice and video calls between a JS-XMPP client and a Jingle client using WebRTC.
! Skills Needed
! JavaScript, XPCOM
! Reporter
! Florian Quèze
! Mentor(s)
! Patrick Cloke
! Comments
!
|}
 
== Rust ==
 
{| class="standard-table" border="1" style="border-collapse: collapse"
|-
|-
! Additional JavaScript protocol plug-ins
! Title
! ''Goal: Implement new protocol plug-ins in JavaScript, or create more stable implementations of existing ones.''
! Details
Instantbird supports protocol plugins implemented in JavaScript. The student will either add support for new protocols in Instantbird (if so, explain why this protocol matters) or reimplement in JavaScript an existing protocol that is poorly supported by libpurple (if so, explain what will be better supported in the new implementation, or why the current implementation is not adequate). The student working on new protocols should take every opportunity to improve the code and APIs shared by all JS protocol plugins.
! Skills Needed
! JavaScript, XPCOM, maybe js-ctypes
! Reporter
! Patrick Cloke
! Mentor(s)
! Patrick Cloke
! Comments
! IRC, XMPP, Twitter and Yahoo have already been implemented in JavaScript and should not be considered; Some base code exists for OSCAR (AIM/ICQ); SIP, Bonjour and OSCAR are probably the most wanted protocols.
|-
|-
! Off-The-Record messaging integration
! ''Goal: Integrate OTR in an easy to use fashion.''
OTR is an often requested feature, but must be integrated in such a way to require little user interaction. Furthermore, the student could try to make Instantbird compliant with the secure messaging checklist suggested by Saint-Andre (link?)
! JavaScript, XUL, XPCOM, maybe js-ctypes or C++
! Patrick Cloke
! Patrick Cloke
|}
|}


== Emscripten ==
== Servo ==


{| class="standard-table" border="1" style="border-collapse: collapse"
{| class="standard-table" border="1" style="border-collapse: collapse"
Line 405: Line 376:
! Mentor(s)  
! Mentor(s)  
! Comments
! Comments
|-
|}
|}


== Rust ==
== Security Engineering ==


{| class="standard-table" border="1" style="border-collapse: collapse"
{| class="standard-table" border="1" style="border-collapse: collapse"
Line 417: Line 389:
! Mentor(s)  
! Mentor(s)  
! Comments
! Comments
|}
== Localization ==
{| class="wikitable"
|-
! Title
! Details
! Skills Needed
! Reporter
! Mentor(s)
! Comments
|-
|-
| Mozilla Verbatim and Pootle
| Implement APIs on Verbatim for retrieving the untranslated string information and existing translations if any. Use machine learning and data mining concepts to translate the strings using existing localization intelligence from the large amount of tranlated strings and implement a web application to translate the strings.
Localization plays a major role in Mozilla in spreading its vision of an open and literate web. Localizers are major contributors in making the open source products from Mozilla like Firefox and websites available in 30+ languages, this involves a lot of data being generated in the translation followed by a review process of these translated string. The project aims to use existing database of translations for a particular string and use rating factors and other rating methods to figure out the best translation to a particular string. Also this project can use automatic translation since the data generated by the users over many years can be used for mining and then processing for translation of strings.
This project could also be used in localization of the documentation present on MDN into different languages for the world to use. A feed can be built onto MDN requesting the to be localized content as paragraphs of data and then localizing them using the automatic localization features.
'''Benefits'''
Localization time can be saved More time can be spent in localized string verification than in localization thus giving higher quality localizations.
'''Short Term Goals'''
To make a machine learning integration with Mozilla’s localization platform.
'''Long Term Goal'''
To export the project into a full fledged stand alone application with links to various localization platforms like Transifex, Pootle etc.., thus enhancing the localization features of many open source software projects.
An enhancement to the 2010 Localization machine learning project implemented by Gautam Akiwate.
|
* Understanding of open webservices APIs
* Python (Django) / JavaScript
* Familiarity with a library used for quickly generating a web UI to a server-side Python script
*
| {{mozillian|sudheesh|Sudheesh Singanamalla}}
| {{mozillian|Debloper|Soumya Deb}}
|
* [https://docs.google.com/document/d/1wn_MNzW7qeipU9f6Gp5mkNOo0dV6ja1Sb3suNdaDM2s/edit?usp=sharing Documentation of Project]
|-
|-
|-
| Package Rust in key distributions
| L10n Dashboard
| Having {apt-get,yum} install rust
| deb packaging / Rust (LLVM appreciated)
|  
|  
| Sylvestre Ledru & Luca Bruno
 
| Main issues: https://wiki.debian.org/Teams/RustPackaging/Bootstrap & https://github.com/mozilla/rust/issues/4259. Will focus on Debian/Ubuntu first
'''Project Brief'''
 
A dashboard for keeping track of l10n statistics for various projects in a single place with ease of access for localizers and project co-ordinators in mind. As an added feature the Dashboard can be developed in a mobile friendly responsive layout.
 
 
'''Problem Statement'''   
 
Mozilla has a very large number of simultaneous localization projects, each using a different localization tool. As such, there is no central entity where localizers can go to, to find a list of all the projects that they contribute to, and find detailed statistics (completion status, contribution metrics, etc.) across individual projects.
 
Too many URLs and translation systems to remember along with keeping track of all updates / statistics across various projects is quite a big manual process at the moment. Having all these in a single place would allow contributors / locale leads to take quicker and better informed decisions about which projects to prioritize while working.
 
 
'''High-Level Project Goals'''
 
* The system should provide a consolidated view for l10n statistics across projects and provide easy access to individual projects.
* The system should be capable of data visualization for real time data gathered from multiple sources, to provide enhanced reporting capabilities.
* The dashboard should be a double ended one: i.e. have separate views for organizations/maintainers and individuals.
* It has to be modularized, so as to separate the view from the back-end stores.
* It needs to be easily deploy-able to enable individual teams to directly plug it to their own repositories and use it.
* The system has to be easily extendable to allow for easy modifications, as well as be light, efficient and user friendly.
 
|
* Pootle, Transifex etc. translation system APIs.
* HTML5, CSS3, JS.
* Data visualization tools.
 
| {{mozillian|Sayak|Sayak Sarkar}}
| {{mozillian|Sayak|Sayak Sarkar}}
|
* A basic prototype of the project can be found [https://github.com/sayak-sarkar/l10n-dashboard here].
|-
|-
|}
|}


== Servo ==
== Build system ==


{| class="standard-table" border="1" style="border-collapse: collapse"
{| class="standard-table" border="1" style="border-collapse: collapse"
Line 438: Line 486:
! Comments
! Comments
|-
|-
| Implement XMLHttpRequest
| Make common sites using XHR work in Servo.
| Familiarity with using XMLHttpRequest, desire to write [http://www.rust-lang.org Rust] code (C++ experience helpful)
| [https://mozillians.org/u/jdm/ Josh Matthews]
| [https://mozillians.org/u/jdm/ Josh Matthews]
| [https://github.com/mozilla/servo/wiki/XHR-project In-depth project guidelines]
|-
|-
| Inotify/watchman daemon for mach
| '''Issues to be solved'''
* <code>./mach build</code> is slow unless you specify a list of changed files
* <code>hg qref</code> is slow
* <code>./mach build</code> does not always work when applied to a single file for incremental. Some js/xul files need a build of the folder or parent folder.
Using inotify or watchman, keep track of the files being changed in the source dirs. This can be done in two ways:
Directly integrate it with mach and provide it with a mode where it reads the last-updated files from a log of the daemon and builds just those. Or, integrate it with qref (some [https://bitbucket.org/facebook/hgwatchman partial] [http://mercurial.selenic.com/wiki/InotifyExtension solutions] for this already exist), possibly as a Mercurial extension and make hg read the files to be changed from the active patch. This only deals with changes being added, if a patch is popped or a change is removed from a patch, there needs to be a mechanism to notice this as well.
Further speed improvements can be made using this.
Original idea credit: @ckitching
| make / python / familiarity with mozilla (firefox, mainly) codebase
| {{mozillian|Manishearth|Manishearth}}
| {{mozillian|Debloper|Soumya Deb}}
|
|}
|}


== Security Engineering ==
== Security Assurance ==


{| class="standard-table" border="1" style="border-collapse: collapse"
{| class="standard-table" border="1" style="border-collapse: collapse"
Line 457: Line 516:
! Mentor(s)  
! Mentor(s)  
! Comments
! Comments
|-
|}
|}


== Open(Art) ==
== Mozilla Science Lab ==


{| class="standard-table" border="1" style="border-collapse: collapse"
{| class="standard-table" border="1" style="border-collapse: collapse"
Line 468: Line 528:
! Reporter  
! Reporter  
! Mentor(s)  
! Mentor(s)  
! Comments  
! Comments
|-
|}
|}

Latest revision as of 19:03, 24 November 2014

Mozilla community members - submit proposals here for 2014 Google Summer of Code projects with Mozilla. (If this page looks empty, it's because accepted ideas have already been transferred to the official list.) The absolute last deadline for submitting ideas in time to help us get accepted by Google is February 14th.

Are you a students looking to apply to SoC with Mozilla? Your first stop should be the official list of ideas. This page is full of weird and whacky ideas, some of which are still on here for a reason - it could be that they are not properly defined, the wrong size, or don't have a mentor. That makes them less likely to get accepted. You can, of course, also submit your own ideas - you don't have to put an idea on this page and get it 'made official' in order to send in a proposal for it.

How To Write A Good Project Proposal

Before adding an proposal to this list, please consider the following:

  • Be specific. It's hard to understand the impact of, or the size of, vague proposals.
  • Consider size. The student has eight weeks to design, code, test and document the proposal. It needs to fill, but not overfill, that time.
  • Do your research. Support the idea with well-researched links.
  • Don't morph other people's ideas. If you have a related idea, place it next to the existing one, or add a comment.
  • Insert only your own name into the Mentor column, and then only if you are willing to take on the responsibility. If you think the SoC admins won't know who you are, leave contact details.
  • Check back regularly. The administrators may have questions about your idea that you will need to answer.
  • Know when to give up. If you've added the same idea for the last three years and it hasn't made it to the official page, perhaps you can predict what will happen this time.

Suggestion List

Here are the ideas lists from previous years.

Proposals can be in almost any part of the Mozilla project - don't be fooled by the "Code" in "Summer of Code". If there is no category below for your part of Mozilla, add one!

Mozilla Platform (Gecko)

Title Details Skills Needed Reporter Mentor(s) Comments

Firefox

Title Details Skills Needed Reporter Mentor(s) Comments
Render large PNG images For data visualization web sites like SegAnnDB need to display large PNG images, but as this test shows, Firefox does not render very large PNG images. A bug has been filed and this bug could perhaps be fixed by a Google Summer of Code student. unknown tdhock

Firefox for Android

Title Details Skills Needed Reporter Mentor(s) Comments

Firefox OS / Boot2Gecko

Title Details Skills Needed Reporter Mentor(s) Comments
Implementation of a default Voice Recorder app There is no built in voice/sound recorder app in gaia, as stated in Bug 877286. The taking of memos shouldn't be left to external apps. The goal would be to create such an app for the built-in package. An addon for the Music app is also considered. Familiarity with gaia and a good knowledge of CSS, Javascript and HTML5 is needed. Should have a fairly good idea about hosted app structure and UI layout. Understanding of the Media Recording API is a plus, but can be caught up on the fly. Vedad Hadžić
Math virtual keyboard Firefox OS has native support to MathML (probably the best one if some patchs already in Firefox (Desktop) Nightly was apply) and because of that is suitable to use in mathematical classes. Unfortunately, there is a lack of tools to edit MathML and a good start will be have a special virtual keyboard. For example, a math virtual keyboard will improve the user experience with this demo. Good knowledge of CSS, Javascript, HTML5 (MathML included), LaTeX. Understanding of the default keyboard can be caught up on the fly. Raniere Silva

Mozilla Open Badges

Title Details Skills Needed Reporter Mentor(s) Comments

Thunderbird

Title Details Skills Needed Reporter Mentor(s) Comments
Allowing write access to LDAP address books It is about time this 13 year old bug was crushed once and for all. Currently LDAP address books can be opened in read-only mode, but cannot be written to. Enabling write access would bring Thunderbird one step closer to being enterprise-friendly by allowing enterprises (and individuals) to share a common address book across multiple Thunderbird installations. https://wiki.mozilla.org/User:Mikerobinson

Calendar

Title Details Skills Needed Reporter Mentor(s) Comments

SeaMonkey

Title Details Skills Needed Reporter Mentor(s) Comments

NSS (Network Security Services)

Title Details Skills Needed Reporter Mentor(s) Comments

Bugzilla

Title Details Skills Needed Reporter Mentor(s) Comments

Firefox Support (SUMO)

Title Details Skills Needed Reporter Mentor(s) Comments

QA

Title Details Skills Needed Reporter Mentor(s) Comments

Automation & Tools

Title Details Skills Needed Reporter Mentor(s) Comments

Documentation

Title Details Skills Needed Reporter Mentor(s) Comments

Mozilla Developer Network

Title Details Skills Needed Reporter Mentor(s) Comments

Mozilla IT and Infrastructure

Title Details Skills Needed Reporter Mentor(s) Comments

Persona / BrowserID

Title Details Skills Needed Reporter Mentor(s) Comments

Sync / Services

Title Details Skills Needed Reporter Mentor(s) Comments

Developer Tools

Title Details Skills Needed Reporter Mentor(s) Comments

Add-on SDK

Title Details Skills Needed Reporter Mentor(s) Comments

Foundation

Title Details Skills Needed Reporter Mentor(s) Comments

Release Engineering

Title Details Skills Needed Reporter Mentor(s) Comments

Instantbird

Title Details Skills Needed Reporter Mentor(s) Comments
Single window UI: Goal: Provide an alternative UI that works well in a single window.

To design and implement a single-window UI that does not require a separate contact list and makes good use of the available space when the window is full-screen. Avenues to explore are e.g. multiple side-by-side chats (extending what is currently possible with tabs), and automatic resizing of conversations. The student should bring a good (if not complete) vision for this project, demonstrated via mockups in the application.

JavaScript, XPCOM, XUL Florian Quèze

Emscripten

Title Details Skills Needed Reporter Mentor(s) Comments

Rust

Title Details Skills Needed Reporter Mentor(s) Comments

Servo

Title Details Skills Needed Reporter Mentor(s) Comments

Security Engineering

Title Details Skills Needed Reporter Mentor(s) Comments


Localization

Title Details Skills Needed Reporter Mentor(s) Comments
Mozilla Verbatim and Pootle Implement APIs on Verbatim for retrieving the untranslated string information and existing translations if any. Use machine learning and data mining concepts to translate the strings using existing localization intelligence from the large amount of tranlated strings and implement a web application to translate the strings.

Localization plays a major role in Mozilla in spreading its vision of an open and literate web. Localizers are major contributors in making the open source products from Mozilla like Firefox and websites available in 30+ languages, this involves a lot of data being generated in the translation followed by a review process of these translated string. The project aims to use existing database of translations for a particular string and use rating factors and other rating methods to figure out the best translation to a particular string. Also this project can use automatic translation since the data generated by the users over many years can be used for mining and then processing for translation of strings.

This project could also be used in localization of the documentation present on MDN into different languages for the world to use. A feed can be built onto MDN requesting the to be localized content as paragraphs of data and then localizing them using the automatic localization features.

Benefits

Localization time can be saved More time can be spent in localized string verification than in localization thus giving higher quality localizations.


Short Term Goals

To make a machine learning integration with Mozilla’s localization platform.


Long Term Goal

To export the project into a full fledged stand alone application with links to various localization platforms like Transifex, Pootle etc.., thus enhancing the localization features of many open source software projects.

An enhancement to the 2010 Localization machine learning project implemented by Gautam Akiwate.

  • Understanding of open webservices APIs
  • Python (Django) / JavaScript
  • Familiarity with a library used for quickly generating a web UI to a server-side Python script
Sudheesh Singanamalla (sudheesh) Soumya Deb (Debloper)
L10n Dashboard

Project Brief

A dashboard for keeping track of l10n statistics for various projects in a single place with ease of access for localizers and project co-ordinators in mind. As an added feature the Dashboard can be developed in a mobile friendly responsive layout.


Problem Statement

Mozilla has a very large number of simultaneous localization projects, each using a different localization tool. As such, there is no central entity where localizers can go to, to find a list of all the projects that they contribute to, and find detailed statistics (completion status, contribution metrics, etc.) across individual projects.

Too many URLs and translation systems to remember along with keeping track of all updates / statistics across various projects is quite a big manual process at the moment. Having all these in a single place would allow contributors / locale leads to take quicker and better informed decisions about which projects to prioritize while working.


High-Level Project Goals

  • The system should provide a consolidated view for l10n statistics across projects and provide easy access to individual projects.
  • The system should be capable of data visualization for real time data gathered from multiple sources, to provide enhanced reporting capabilities.
  • The dashboard should be a double ended one: i.e. have separate views for organizations/maintainers and individuals.
  • It has to be modularized, so as to separate the view from the back-end stores.
  • It needs to be easily deploy-able to enable individual teams to directly plug it to their own repositories and use it.
  • The system has to be easily extendable to allow for easy modifications, as well as be light, efficient and user friendly.
  • Pootle, Transifex etc. translation system APIs.
  • HTML5, CSS3, JS.
  • Data visualization tools.
Sayak Sarkar (Sayak) Sayak Sarkar (Sayak)
  • A basic prototype of the project can be found here.

Build system

Title Details Skills Needed Reporter Mentor(s) Comments
Inotify/watchman daemon for mach Issues to be solved
  • ./mach build is slow unless you specify a list of changed files
  • hg qref is slow
  • ./mach build does not always work when applied to a single file for incremental. Some js/xul files need a build of the folder or parent folder.

Using inotify or watchman, keep track of the files being changed in the source dirs. This can be done in two ways:

Directly integrate it with mach and provide it with a mode where it reads the last-updated files from a log of the daemon and builds just those. Or, integrate it with qref (some partial solutions for this already exist), possibly as a Mercurial extension and make hg read the files to be changed from the active patch. This only deals with changes being added, if a patch is popped or a change is removed from a patch, there needs to be a mechanism to notice this as well.

Further speed improvements can be made using this.

Original idea credit: @ckitching

make / python / familiarity with mozilla (firefox, mainly) codebase Manishearth (Manishearth) Soumya Deb (Debloper)

Security Assurance

Title Details Skills Needed Reporter Mentor(s) Comments

Mozilla Science Lab

Title Details Skills Needed Reporter Mentor(s) Comments