Mozilla community members - submit proposals here for 2017 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 9th.
Are you a student 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
|
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
|
|
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
|
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:
- Implement some of the missing APIs (contextMenus, browsingData, [identity?], [proxy?])
- Add automated test for those APIs
- Improve the tooling for building WebExtensions for Firefox for Android.
|
Java, JavaScript, Android
|
:sebastian
|
:sebastian
|
Thunderbird
Title
|
Details
|
Skills Needed
|
Reporter
|
Mentor(s)
|
Comments
|
Instantbird
Title
|
Details
|
Skills Needed
|
Reporter
|
Mentor(s)
|
Comments
|
Calendar
Title
|
Details
|
Skills Needed
|
Reporter
|
Mentor(s)
|
Comments
|
SeaMonkey
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
|
JS static analysis
|
Bring some static analysis in our Firefox Javascript code
|
Javascript experience, FLOW(?)
|
Sylvestre
|
same
|
|
C++ static analysis
|
Add new checkers specific to our base code
|
Strong C++ experience, clang
|
Sylvestre
|
Andi
|
|
JSON in Sqlite
|
Query JSON Documents stored in Sqlite
|
Database, SQL, Python
|
Kyle Lahnakoski
|
Kyle Lahnakoski
|
Details
|
View details of performance test results
|
At the moment, Perfherder provides summarized views of results of Talos tests and others, but not the individual test results, athough the supporting data exists. This project will be about creating an easy-to-use web interface for visualizing this data that integrates well with the existing Perfherder views
|
HTML, CSS, JS, AngularJS
|
Will Lachance (:wlach)
|
Will Lachance (:wlach), Robert Wood (:rwood)
|
Perfherder wiki / bug (don't be fooled by the fact that there is just one bug, there is easily enough work here to fill a gsoc project)
|
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
|
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
|
OpenArt
Title
|
Details
|
Skills Needed
|
Reporter
|
Mentor(s)
|
Comments
|
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
|
Ben Hearsum
|
Emscripten
Title
|
Details
|
Skills Needed
|
Reporter
|
Mentor(s)
|
Comments
|
Rust
Title
|
Details
|
Skills Needed
|
Reporter
|
Mentor(s)
|
Comments
|
Rust + WebAssembly showcase
|
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
|
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, aturon?, dikaiosune?
|
Follow on work to https://internals.rust-lang.org/t/the-rust-project-needs-much-better-visibility-into-important-metrics/3367
|
Rust reproducible builds
|
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, Manishearth
|
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
|
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
|
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
|
Just go hog wild finding microoptimizations in rustc. Write a blog post bragging about it.
|
Performance optimization
|
brson
|
brson, nnethercote?
|
|
Rust-specific benchmark suite
|
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
|
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
|
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
|
jdm
|
|
Extend ServiceWorker implementation
|
Project page
|
Enthusiasm to learn Rust, comfortable reading/writing JavaScript
|
jdm
|
jdm
|
|
Security Engineering
Title
|
Details
|
Skills Needed
|
Reporter
|
Mentor(s)
|
Comments
|
Tor Experiment
|
Create a an experimental extension that bundles and launches Tor. Benchmark and report the amount of data transferred, time-to-first-byte, bandwidth differentials.
|
Add-On creation experience, Programming in C/Javascript.
|
Tom Ritter
|
Tom Ritter
|
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.
|
Web standards and Design. Django is a plus.
|
:mathjazz
|
:mathjazz
|
|
Build system
Title
|
Details
|
Skills Needed
|
Reporter
|
Mentor(s)
|
Comments
|
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
|
WADI
Title
|
Details
|
Skills Needed
|
Reporter
|
Mentor(s)
|
Comments
|
Mozilla Science Lab
Title
|
Details
|
Skills Needed
|
Reporter
|
Mentor(s)
|
Comments
|
MozVR
Title
|
Details
|
Reporter
|
Mentor(s)
|
Comments
|
Connected Devices
Title
|
Details
|
Reporter
|
Mentor(s)
|
Comments
|