Community:SummerOfCode17
This is Mozilla's list of green-lit project proposals for the 2017 Google Summer of Code.
Are you a student looking to apply to GSoC with Mozilla? You're in the right place. This page lists all the confirmed Google Summer of Code projects. New suggestions can be made on the Brainstorming page. Do not edit this page yourself; contact Mike Hoye or Florian for edits.
If you're interested in participating in Mozilla's GSoC program, you can choose from the list below, but you do not have to. You can submit a proposal for your own idea. You should look at the guidelines, though, and discuss your ideas or application in the #introduction channel on IRC.Mozilla.org. This is important, as GSoC projects must have a supporting member of the Mozilla community to evaluate and mentor them, named in the application.
Contents
- 1 Application Advice
- 2 Project List
- 3 Mozilla Platform (Gecko)
- 4 Firefox
- 5 Firefox Developer Tools
- 6 Firefox for Android
- 7 Automation & Tools
- 8 Mozilla Developer Network
- 9 PDF.js
- 10 Release Engineering
- 11 Rust
- 12 Servo
- 13 Security Engineering
- 14 Localization
- 15 Security Assurance
- 16 Mozilla Science Lab
- 17 Thimble
- 18 Open Innovation (Open Source Student Clubs)
- 19 Instantbird
- 20 Calendar
Application Advice
You should do the following:
- Talk to the mentor. Contact details are on this page; if all you have is a nickname, reach out to them on IRC.
- Read the GSoC Student Guide and follow its advice.
- Read How Not To Apply For Summer Of Code and avoid doing the things listed there.
- Read our examples of good applications: 1, 2, 3.
- Apply on the GSoC site (note that we have an application template).
- It is entirely acceptable to apply for 2 or 3 projects, if more than one catches your eye; if the applications are high quality, that can improve your chances. Applying to more than that will seem like spam.
Questions about individual projects are best addressed to the potential mentor of that project. These should be listed in the table below. If you want to contact a mentor and contact details are not here, ask people in the #introduction channel on IRC: irc://irc.mozilla.org/#introduction. If you have questions of any other sort, send mail to Mike Hoye. He will try and respond promptly and direct your questions to the right person.
Project 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 | |
---|---|---|---|---|---|---|
TaskCluster JSON Parameterization | Build a powerful JSON parameterization system and use it everywhere | JavaScript, Python | :dustin | :dustin | The json-e language supports complex transformations of JSON data. The project involves completing the specification, implementation (in two languages), and documentation of this language, then using it to support Gecko action and decision task and users of taskcluster-github and taskcluster-hooks. Success here means that the language is complete and in active use in at least one of the listed contexts. | |
Livelog Proxy | Write a server that privileged-clients can open a HTTPS connection to in-order to expose a webhook that http-clients can call.
When normal http-clients access the exposed webhooks the connection will be reverse proxied to the privileged-clients over their out-going connection. |
golang, github, http, web sockets, node.js | :jonasfj | :jonasfj | This is like to ngrok and localtunnel.me, read up on those. For performance reasons server should be written in golang, with client libraries in golang and node.js. |
Firefox
Title | Details | Skills Needed | Reporter | Mentor(s) | Comments |
---|---|---|---|---|---|
about:telemetry redesign | about:telemetry is present on all builds of Firefox as a way for users to view the data being stored and sent via Telemetry. It was built before Firefox had multi-process Telemetry and without a clear design. This has resulted in a confusing HTML UI and barely-comprehensible JS. | webtech (HTML+CSS+JS) and Design | :chutten | chutten@mozilla.com | Some information |
Boost Session Restore performance | Session (Re)store is important as a key feature of Firefox. Many people rely on it to re-open a tab from the past or recover from an unfortunate power outage. But making it blazing fast has not been our primary focus, until now. Your goal will be to help us make restoring any session snappy and blazing fast. Expect to learn a lot about the Firefox internals and interact with many core engineers during the SoC course. | JavaScript | :mikedeboer | :mikedeboer, :dao |
Firefox Developer Tools
Title | Details | Skills Needed | Reporter | Mentor(s) | Comments |
---|---|---|---|---|---|
Developer Tools for Designers | In Firefox Developer Tools, we're aiming to implement visual tools that will help developers and designers edit CSS properties visually. Since CSS is very declarative by nature, we can provide tools that are commonly found in designer tools in order to bridge the learning gap of new developers and designers learning CSS and allow them to edit complex CSS features such as CSS filters, blend, clip-path, layout, etc without knowing what the properties are. Going beyond editing CSS, we also need to think about how we can visually inspect the CSS style transformations that can impact the layout. Finally, we are looking for ways to better export and see the changes made in the Inspector tool so that we can take the work we have done in the Developer Tools and apply that to your local source files. | JavaScript, HTML, CSS, React, Redux | :gl | :gl | Starting meta bug for inspiration Bug 1258390 |
Firefox for Android
Title | Details | Skills Needed | Reporter | Mentor(s) | Comments |
---|---|---|---|---|---|
Implement WebExtension APIs | WebExtensions are a cross-browser system for developing browser add-ons. Not all APIs are supported by Firefox for Android yet.
The goal of this project is to:
|
Java, JavaScript, Android | :sebastian | :sebastian |
Automation & Tools
Title | Details | Skills Needed | Reporter | Mentor(s) | Comments |
---|---|---|---|---|---|
JS static analysis | Bring some static analysis in our Firefox Javascript code | Javascript experience, FLOW(?) | Sylvestre | Sylvestre | This project aims to evaluate and integrate more static analysis for Javascript code into some key sections of the Firefox code. We will focus on deploying FLOW on some part of the code as a proof of concept. Depending on the results, this will be extended to more components and/or integration in the developer workflow. |
C++ static analysis | Add new checkers specific to our base code | Strong C++ experience, clang | Sylvestre | Andi | In order to tackle issues during the development phase, Mozilla wrote a bunch of static analyzers checkers based on clang-tidy. In this project, we will focus on writing more checkers (either generic to C/C++ or specific to Gecko programming patterns). |
JSON in Sqlite | Query JSON Documents stored in Sqlite | Database, SQL, Python | Kyle Lahnakoski | Kyle Lahnakoski | Details |
Regression localization from stack traces | Tool to blame a patch for causing a newly introduced crash. | C++, Python | Marco | Calixte | The project would involve creating a tool that analyzes a set of stack traces, performing the intersection with the Firefox call graph (which can be generated using Clang) and a set of recently committed patches. |
Improvements for crash clustering | Build a tool to improve crash clustering, currently based on the top method of the stack trace. | Python, C++ | Marco | Marco | The project would involve finalizing https://github.com/marco-c/crashsimilarity; testing it more thoroughly; putting it in production. |
Improve Reliability of Automated tests | Add a --test-lint mode to all harnesses which will ensure the test is more stable and check for common mistakes. | Python, Javascript | Joel (:jmaher) | Joel (:jmaher) Geoff (:gbrown) | Mozilla's developers write dozens of new tests every week. We would like to provide a way to ensure these new tests are stable and reliable. This will be done by implementing a test-lint mode in all of our test harnesses which will run the tests by themselves as well as repeat them 10 times each. more details here: https://public.etherpad-mozilla.org/p/9u9OijDCKn |
Mozilla Developer Network
Title | Details | Skills Needed | Reporter | Mentor(s) | Comments |
---|---|---|---|---|---|
MDN Documentation Tester WebExtension | Rewrite the MDN doc tester add-on as a (well-tested, modern, documented) WebExtension that runs in Firefox, Chrome, Opera, and possibly Edge. Ideally reach feature parity with the existing Add-on SDK add-on and if time allows work on new test ideas that run against the MDN documentation. | Add-On/WebExtension experience (JavaScript, HTML, CSS) | Florian Scholz (fscholz@mozilla.com) | Florian Scholz (fscholz@mozilla.com) |
PDF.js
Title | Details | Skills Needed | Reporter | Mentor(s) | Comments |
---|---|---|---|---|---|
Streams API in PDF.js | Streams API with PDF.js, makes it more faster and memory efficient. Passing data incrementally from worker to main thread increases the speed of processing. Using Streams API instead of xhr in networking reduces the memory usage. Since Streams API is a new technology, using it in PDF.js test Firefox's implementation. | ECMAScript 2015, Web APIs | Yury Delendik (:yury) | Yury Delendik (:yury) | Proposal: https://docs.google.com/document/d/1yTPvPBhGkFn7XUntAt8wdVPckxHovYylNAIJOGnGRXc/edit?usp=sharing
Firefox implementation: https://bugzilla.mozilla.org/show_bug.cgi?id=1128959 |
Release Engineering
Title | Details | Skills Needed | Reporter | Mentor(s) | Comments |
---|---|---|---|---|---|
Improve Balrog's Admin API | Make Balrog's Admin API simpler and easier for clients to work with by moving to a Swagger-based approach. | python,rest apis | Ben Hearsum (bhearsum@mozilla.com) | Ben Hearsum (bhearsum@mozilla.com) |
Rust
Title | Details | Skills Needed | Reporter | Mentor(s) | Comments |
---|---|---|---|---|---|
Rust Language Server (RLS) | The RLS is a service for providing information about Rust programs from the Rust compiler to IDEs and other tools. It will be at the core of the IDE experience for Rust programmers. By the summer, we should have just had the first release of the RLS, and there is lots still to do. Exactly what would depend on what YOU want from the project. Some ideas for projects directly on the RLS are here. You could also work on either rustw - a web frontend for the RLS - or our Visual Studio Code plugin; in either case, providing new functionality directly to users. | Rust, and ideally either: web development, or Javascript (e.g., Electron, node.js), or IDE internals. | brson | nrc | RLS repo RLS description |
Rust + WebAssembly showcase | (this project has many applicants and is not considering new candidates. please look elsewhere) Rust and WebAssembly are going to be a great pair. Design and implement a simple and attractive web application, in Rust, that demonstrates the power of Rust on the web. Make fixes to upstream projects as necessary. Write a blog post about it. | Rust, web development | brson | brson, badboy | cc https://users.rust-lang.org/t/compiling-to-the-web-with-rust-and-emscripten/7627. Full proposal: https://gist.github.com/brson/c936d0f5e5ec8c806a41e23e87455665#file-rust-proj-1-md |
Rust dashboard updates | (this project has many applicants and is not considering new candidates. please look elsewhere) Update rusty-dash.com to include additional metrics important to the project. This tool is vital to the day-to-day management of Rust, but it needs some dedicated attention to fulfill its promise. | Rust | brson | brson | Follow on work to https://internals.rust-lang.org/t/the-rust-project-needs-much-better-visibility-into-important-metrics/3367 |
Rust reproducible builds | (this project has many applicants and is not considering new candidates. please look elsewhere) Make the Rust build process produce the identical binaries when run with identical configurations. This improves the security of the Rust ecosystem by allowing others to
double-check the official Rust builds |
Rust, compilers, systems programming | brson | brson, mw | https://internals.rust-lang.org/t/verifying-rustc-releases-with-reproducible-builds/4502. Full proposal: https://gist.github.com/brson/c936d0f5e5ec8c806a41e23e87455665#file-rust-proj-2-md |
Abstract the Rust standard library | (this project has many applicants and is not considering new candidates. please look elsewhere) The Rust standard library is very portable, but can be very, very portable. Refactor the
standard library to pull out a platform abstraction layer. |
Moderate Rust experience | brson | brson | https://internals.rust-lang.org/t/refactoring-std-for-ultimate-portability/4301 |
Rust cross-platform showcase project | (this project has many applicants and is not considering new candidates. please look elsewhere) Rust is very portable. Create a single showcase demo project that compiles for Windows, OS X, Linux, Android, iOS, wasm, and microcontrollers. Use real crates to accomplish some real task. Set up CI for all platforms on Travis. To be used as a teaching tool and for regression testing. Write a blog post. | Moderate Rust experience | brson | brson | |
rustc micro-optimization bonanza | (this project has many applicants and is not considering new candidates. please look elsewhere) Just go hog wild finding microoptimizations in rustc. Write a blog post bragging about it. | Performance optimization | brson | brson | |
Rust-specific benchmark suite | (this project has many applicants and is not considering new candidates. please look elsewhere) Today Rust uses perf.rust-lang.org to track _compile time_ performance, but nothing to track _runtime_ performance. Work with the Rust developers to create a benchmark suite specific to Rust. | Programming | brson | brson | |
Rust crate semver compatibility tool | (this project has many applicants and is not considering new candidates. please look elsewhere) Rust libraries follow the semver spec for indicating API compatibility, but conformance to semver is not enforced in any way - it is up to crate authors to guarantee their crates can be upgraded correctly. With Rust's strong type system it should be possible to mechanically check whether crates
are obeying semver. This would be a huge boon to the stability of the Rust ecosystem. |
Static analysis | brson | brson, badboy | https://users.rust-lang.org/t/warnings-for-breaking-semver/1415 https://users.rust-lang.org/t/signature-based-api-comparison/2377 . Full proposal: https://gist.github.com/brson/c936d0f5e5ec8c806a41e23e87455665#file-rust-proj-3-md |
Reconstruct the Rust bootstrap chain | (this project has many applicants and is not considering new candidates. please look elsewhere) Rust is a self-hosted compiler, originally bootstrapped from OCaml, then self-bootstrapped several hundred times over the years. Today there is only one Rust 'lineage' of any note, the official compiler, but with compilers diversity of implementation is a security issue. If another party could replicate the
Rust compiler it would provide assurance that the official isn't compromised by, or can recover from, a "trusting trust" attack. Although the historical information needed to rebootstrap Rust is mostly complete, it is not trivial to do. Construct a script that can reconstruct the modern Rust compiler from the original OCaml implementation, run it to completion, write a blog post. |
Scripting, build systems | brson | acrichto |
Servo
Title | Details | Skills Needed | Reporter | Mentor(s) | Comments |
---|---|---|---|---|---|
Off-main thread HTML parsing | Project page | Enthusiasm to learn Rust, comfortable reading/writing JavaScript | jdm | Anthony Ramine (nox) |
Security Engineering
Title | Details | Skills Needed | Reporter | Mentor(s) | Comments |
---|---|---|---|---|---|
StopTrackware.org | Create a clearinghouse of trackware lists like StopBadware.org, by creating a Track-the-trackers add-on that uses data "safeness" approach like Cliqz | Add-On creation experience (JavaScript, HTML, CSS, Networking), Cloud Service experience (python or node.js) | Luke Crouch | Luke Crouch |
Localization
Title | Details | Skills Needed | Reporter | Mentor(s) | Comments |
---|---|---|---|---|---|
Design screenshot-based localization interface in Pontoon | We'd like to explore the feasibility of screenshot-based localization process in Pontoon - Mozilla's translation tool. To provide more translation context, each string will be accompanied by a screenshot showing how the string is used in the application. Additionally, localizers will have the ability to navigate and filter strings by screenshots, as well as preview their translations in the localized screenshots. | JavaScript, HTML, CSS and Design. Django is a plus. | :mathjazz | :mathjazz |
Security Assurance
Title | Details | Skills Needed | Reporter | Mentor(s) | Comments |
---|---|---|---|---|---|
TLS 1.3 scanning in Mozilla TLS Observatory |
Mozilla TLS Observatory is a hosted service that provides hindsight and compliance checking on the configuration of HTTPS servers. The goal of this project is to improve the service to support scanning TLS 1.3 enabled endpoints, either by improving the existing scanner or writing an entirely new scanner. |
Programming skills in C, Bash and Go. Strong understanding of TLS and micro-services architectures. |
Julien Vehent |
Julien Vehent |
None |
Mozilla Science Lab
Title | Details | Skills Needed | Reporter | Mentor(s) | Comments |
---|---|---|---|---|---|
science.mozilla.org phase 2 | Start phase 2 of the Mozilla Science Lab website by implementing | js, html, css, react, django, python | abbycabs | alanmoo | Detailed list and breakdown of all phase 2 work (only the tasks mentioned in details are expected to be completed by the student): |
Paper Badger - badgr migration & publisher integration | * Issuing badges to credit authors for their work on academic papers.
|
js, Badgr, APIs, authentication, node.js, react | abbycabs | abbycabs | github: https://github.com/mozillascience/paperbadger |
Study Group participation visualization | study groups meet all over the world, running regular events share skills, co-work and create community around open science. Right now there's no easy way to see all the study group events.
|
js, html, css, python (or another scripting language), data visualization | Zannah | Aurelia | main study group repo: https://github.com/mozillascience/studyGroup |
Thimble
Title | Details | Skills Needed | Reporter | Mentor(s) | Comments |
---|---|---|---|---|---|
Address stability issues within Thimble | Main task: Get Thimble to write directly to AWS instead of writing to a database first. | js, html, css | gideon | gideon | Full list of issues affecting thimble's stability: https://github.com/mozilla/thimble.mozilla.org/issues?utf8=%E2%9C%93&q=is%3Aissue%20is%3Aopen%20label%3A%22good%20first%20bug%22%20-label%3A%22assigned%20to%20contributor%22 |
Thimble with Collaboration | Goal: Use together.js to enable a multi-user environment on Thimble that is tailored to work as a virtual teaching environment for HTML/CSS/JS
Details:
|
js, html, css | gideon | gideon | thimble repo: https://github.com/mozilla/thimble.mozilla.org |
Open Innovation (Open Source Student Clubs)
Title | Details | Skills Needed | Reporter | Mentor(s) | Comments |
---|---|---|---|---|---|
Measuring the Development of an Open Source Contributor | We are looking for a passionate developer to work with the GitHub API to build a platform for measuring contributors performance/engagement across multiple open source projects over an extended time period. | Javascript, javascript framework, a sequel database, HTML, GitHub API | :Lucy | :Christos | For questions about this project please leave a comment in this issue |
Instantbird
Matrix protocol support | Matrix is an open, decentralized protocol for instant messaging (and more!) It has bridges to many other networks and protocol, e.g. IRC, Slack, and more. Initial support for Matrix was added in bug 1199855, but there's a lot to do still:
|
JavaScript, XPCOM, experience using HTTP APIs | Patrick Cloke [:clokep] | clokep | If you're interested in supporting a different protocol, please come talk to us. Protocols we're interested in: Matrix, Google Hangouts, Facebook, Bonjour, TextSecure/Signal, Telegram, or others! |
Calendar
Title | Details | Skills Needed | Reporter | Mentor(s) | Comments |
---|---|---|---|---|---|
Introducing Calendar Accounts | Traditionally our calendar extension is organized into a list of calendars, each calendar being implemented by a “provider”, for example local storage or using the CalDAV protocol. The service to manage these calendars maintains a simple list, the entries have no connection to each other.
Some calendar providers would greatly benefit from being able to group calendars into accounts, for example free-busy lookups are usually per-server operations and not per-calendar. It would also open the door for some great new features that have been postponed because they can be implemented cleaner with the notion of accounts. |
XUL, CSS, JavaScript | Fallen | Fallen | Click here for a detailed project description |
Resource Booking Improvements | The Lightning extension has a dialog for inviting attendees to an event, which also shows availability information. Albeit not very obvious, it also allows booking resources and rooms. To improve this experience we would like users to be able to pick rooms and resources in a way that they don't need to remember the room address and quickly see which rooms and resources exist and are available around the proposed time of the event. | XUL, CSS, JavaScript | Fallen | Fallen | Click here for a detailed project description |
Advanced Preferences System | Today, Lightning preferences can mostly only be set on global level. A different, but smaller set of preferences is available on calendar level, whereas several preferences are currently only available from within the config editor. The goal of this project is to create a preference system like Thunderbird uses it - making most of the preferences available on calendar level with an option to fall back to corresponding globally configured preferences.
This is mainly a JavaScript project, but to a smaller extent some UI extensions are required. The emphasis is on the functional part here. |
XUL, HTML, CSS, JavaScript | MakeMyDay | Fallen / MakeMyDay | |
Convert from XUL to HTML | Lightning has traditionally been using XUL for its user interface. To modernize, we would like to convert dialogs, tab content and other parts of the user interface to HTML. The new components should use web standards as much as possible, avoiding extensive use of third party libraries.
This is a fairly open ended proposal, which requires the applicant to first identify parts of the user interface that would make sense to convert to HTML and put up a timeline how long to spend on each component. Focus should be on the quality of the conversion, not the quantity of components changed. |
HTML, CSS, JavaScript | Fallen | Fallen |