Mozilla community members - submit proposals here for 2018 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.) Our application for summer of 2018 goes into Google on January 23rd, so get those project ideas in quickly.
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 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.
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!
Here is the template for adding project proposals. Feel free to add new proposal to existing general categories, or add new categories as appropriate.
2018 Project List
|Title||Details||Skills Needed||Reporter||Mentor(s)||Additional Comments|
|D3D11 backend for gfx-rs HAL||gfx-rs is a graphics abstraction library written in Rust and currently used for prototyping and investigation of Vulkan Portability and WebGPU by Mozilla. The Hardware Abstraction Layer (HAL) of gfx-rs currently supports Vulkan, D3D12, Metal, and OpenGL. We want it to be powering WebRender for Firefox Quantum and Servo, and since WebRender currently runs on D3D11 (through Angle), we need to provide a native D3D11 backend. The implementation can be based off the existing D3D11 backend of gfx-rs pre-HAL, and the main challenge is porting the code, optimizing, and testing it.||Candidates should be familiar with Rust as well as low-level graphics development. Not having D3D11-specific experience is acceptable, given the willingness to learn it and a properly setup Windows development environment.||Dzmitry Malyshau (Mozilla)||Dzmitry Malyshau (Mozilla)||gfx-rs is one of the foundational projects in Rust gamedev/graphics, with rich history and wide range of users. We have an active community that encourages learning and curiosity in how graphics works down to the hardware. This is not a Mozilla project, but it may become a key component in Firefox Quantum for the ability to run natively on different platforms, while utilizing the fine-grained control of the graphics/compute workloads exposed by the low-level APIs.|
|Servo: Prototype ways of splitting up the script crate||Servo is a web rendering engine written in Rust. One specific module contains a huge amount of code that is expensive to compile all at once. This project is intended to explore ways of splitting it into separate modules to achieve better build performance without breaking the complex set of interdependencies that exist in the code.||Candidates should be familiar with Rust, in particular using it in projects made of multiple crates and relying on features like traits and associated types.||Josh Matthews (Mozilla)||Josh Matthews (Mozilla)||Full project description page|
|web-platform-tests: Improve test manifest workflow and performance||web-platform-tests is a project for writing a cross-browser test suite, which is used across all major browser engines. The list of tests is stored in a JSON manifest file which is slow to generate and which we currently check in to the Firefox repo. These things create a poor developer experience. The goal of the project is to move to a system where the manifest is downloaded on demand for Firefox developers, and then to explore ways to speed up manifest generation such as employing parallelism or moving performance hotspots to Rust.||Candidates should be confident programming in Python.||James Graham (Mozilla)||James Graham (Mozilla)||Full description - Improve test manifest workflow and performance|
|Native Android XML support in Mozilla localization infrastrucure||Mozilla develops software for various platforms, one of which is Android. Localizations of Android apps are typically stored in the XML dialect, which is not supported by Pontoon, Mozilla's localization tool. That means our localization process is unnecessarily complicated, because we need to convert between Android XML files and files supported by our localization tools. Your task will be to solve this problem by writing translation quality checks for compare-locales and adding support for the XML dialect to Pontoon.||Python||Matjaž Horvat (Mozilla)||Axel Hecht (Mozilla)|
Students will contribute to: extending the functionality of the notebook; making the notebook code more robust and performant; helping to shape the user experience; and creating example notebooks.
|JS; HTML; CSS; React/Redux; familiarity with at least one scientific computing language preferred (ex: MATLAB, Mathematica, Julia, Numpy/Scipy, R, etc). Science/math background is a major plus.||Brendan Colloran (firstname.lastname@example.org)||Brendan Colloran (email@example.com)||In addition to helping to build the notebook, actively dogfooding it will be an essential part of our work. This means that students with a scientific and/or applied math background will be encouraged to build example notebooks that demonstrate visualizations, simulations, data analyses, etc., on topics of their choosing. In addition to mentoring students on software development, we will provide mentorship in scientific computing and data science.|
|Automatically detect web compatibility issues||Build a tool to automatically detect web compatibility issues using machine learning tools.||Python (knowing Keras or having experience with machine learning is a plus)||Marco (:marco) (Mozilla)||Marco (:marco) (Mozilla)||The project involves collecting data (screenshots of websites in different browsers), labeling it, training a neural network to automatically detect when a website is rendered differently in different browsers.|
|Autogeneration of style structs in Servo's style system||Prototype how to run cbindgen on Servo's style system values module to auto-generate style struct definitions for C++ and Rust, which would enable the removal of 5k+ lines of unsafe and slow Rust <-> C++ conversion code. This can be done on a per-struct basis, so prototyping the general mechanism with a simple one like color would be the first step, migrating more and more as time goes on.||Primarily Rust (though no need to be really advanced), probably a bit Python for build system integration, and basic C++ since it needs to get generated.||It may need to move the style::values component into a standalone crate as a prerequisite for some of the most complex structs, but that should be easy.||emilio||emilio|
 Michal Purzynski :michal` (mozilla)
|Aggregation of disparate sources of data: NSM, CloudTrail, etc. into spark. Real-time alerts over large quantities of data.|
|C++ Static Analysis||Add new checkers specific to our base code.||Strong C++ experience and clang infrastructure.||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).|
|..your project here!|