This is Mozilla's list of green-lit project proposals for the 2019 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 of our proposed Google Summer of Code projects. New suggestions can be made on the Brainstorming page. Do not edit this page yourself; contact mhoye 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.
Please bear in mind that a preexisting relationship with Mozilla is not a requirement for a successful GSOC proposal. While participating in Bugzilla is a good way to become familiar with how Mozilla works, "spamming" Bugzilla to establish your bona fides or improve your chances of a successful application has not historically been a successful approach. We're grateful for our volunteers' contributions, as always, but often that effort would be best put towards focusing on the proposals you are specifically interested in, and putting your effort into crafting an application for them specifically.
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.
- Participation in any Mozilla spaces, forums or events, including our GSOC projects, are subject to Mozilla's Community Participation Guidelines, and you should read them carefully.
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.
|Title||Details||Skills Needed||Reporter||Mentor(s)||Additional Comments|
|Ship Public Suffix List (PSL) over Remote Settings|| The list of public domain suffixes (DNS) is shipped with every release, with no way to update it on long term releases for example.
Now that Remote Settings has become a solid solution to ship data, we could use it to publish updates of the PSL. The task consist in migrating the current client code to read from Remote Settings instead of a file, and implement a scheduled job (like Python) to push updates automatically (most likely compiled as a DAFSA file)
|bugbug||A platform for machine learning projects applied on Bugzilla, VCS and other software development data.||Python||Marco Castelluccio (FIRST_NAME@mozilla.com)||Marco Castelluccio (FIRST_NAME@mozilla.com)|| The project will involve one or more of:
i) building additional classifiers (e.g., to detect bugs with no steps to reproduce, or to suggest a developer to assign to a bug, and so on);
ii) improving accuracy/precision/recall of the existing classifiers by implementing other machine learning techniques (e.g., by using convolutional neural networks or recurrent neural networks);
iii) improving accuracy/precision/recall by implementing additional feature extraction steps or making the already existing ones better.
|An Android file downloader designed for Emerging Markets|| A lesson learned thanks to our UX team is in Emerging Markets the data plan is dynamic: in late nights we have the most affordable bandwidth. Here's the question: Why not schedule big files and videos and have them downloaded when you're sleeping? The mvp would be an App which we can send urls to. After receiving these urls the App either downloads it directly or defer it to late night. As there are more and more background restrictions enforced on new Android APIs, this should be a fun and challenging journey.
The ultimate goal of this would be to embed this downloader in our browser for Emerging Markets, Firefox Lite. Firefox Lite is not satisfied with the current Android Download Manager in several ways: We'd like to give users the ability to pause/resume a download, we'd like to download a file directly to SDcard (opposed to download it to the main storage and move it into SDcard). That being said, please focus more on the reusablility of your App as a library than the UX/UI of the App itself. Afterall, GSOC is a coding project!
We've also prepared an even more ambitious mission for those who want tough challenges: Design the app and make it dynamic deliverable. With aabs we can satisfy both light and heavy users by defaulting Android Download Manager as the download tool and prepare the aforementioned downloader dynamically so that Firefox Lite itself is still minimized in terms of disk size. Nevin and mTwTm are Android developers who can provide assistance to Android App and library design.
|Android Java/Kotlin||mTwTm(Teng-pao Yu)||mTwTm(Teng-pao Yu) (mTwTm@mozilla.com), Nevin Chen (firstname.lastname@example.org)|| We're receiving requests for mockups already; thank you! However, the core of this project to me is the downloading library rather than the App. To illustrate what might make a good proposal, we want you to imagine what would be a convenient way to schedule downloads. There are many ways we could do this: Copy-pasting download links, have the app opened whenever a link is clicked, or find a way to give other third-party apps access to your App's download queue.
I would also encourage candidates to differentiate onself by focusing on demonstrating your understanding to Android Apps and download protocols. Brainstorming for more use cases is encouraged but we would really like to learn more about how you can implement this project efficently instead of what you can plan in your proposal.
Also, we're utilizing the Mozilla Asia Product mail-list (https://groups.google.com/forum/#!forum/mozilla-asia-products) for discussions around this project. You might find some useful discussions there as well.
|Toolkit for sandboxing third-parties libraries in Firefox|| Firefox supports a long tail of infrequently used image and audio formats to
support the occasional website that uses them. Each such format requires the Firefox decoder to use a new open source library for parsing and decoding. This, unfortunately, increases the attack surface of Firefox and as we saw in Pwn2Own 2018, Firefox was successfully exploited via a bugs in such libraries (libogg in this case).
This project proposes to sandbox third-party libraries in Firefox by building a new software-fault isolation toolkit. Our tookit will build on the WebAssembly compiler to isolate libraries in Firefox. But, as part of this toolkit we will also develop and apply a library for safely interfacing with sandboxed libraries (and sanitizing data coming from them). with this toolkit we can ensure that any vulnerability in third-party libraries (e.g., libogg or libpng) cannot be used to be used to compromise Firefox.
|C/C++, experience with WebAssembly||Eric Rahm (email@example.com)||Nathan Froyd|
|Test automation our linting tools|| We have a several linting tools running on Firefox code base, they currently don't have a test suite.
The goal of this project is to make sure that tests are executed. We currently have a similar test automation for static analyzer jobs. The idea would be to extend (or replicate) this model for ./mach lint (which run flake8, eslint, etc) and ./mach clang-format The bug is https://bugzilla.mozilla.org/show_bug.cgi?id=1448008
|Python||Sylvestre (firstname.lastname@example.org)||Andi Postelnicu (email@example.com)|
This project would entail updating our security event API to ensure we track and expose the required data. The first phase is to build a script that consumes the API and pretty prints the timeline. The second phase is to provide a web interface for the security timeline.
|Improving FastParquet||FastParquet is a Python library that needs improvement to how it writes the parquet file format||Python||Kyle Lahnakoski||Kyle Lahnakoski||Read more|
|Faster Pyparsing||Pyparsing is a Python library that provides a DSL for language specification. It could use some optimization.||Python||Kyle Lahnakoski||Kyle Lahnakoski||Read more|
|TUID service improvments||The TUID service handles millions of requests daily from hundreds of machines. It must go faster, and be stabilized.||Python/Flask/Sqlite||Kyle Lahnakoski||Gregory Mierzwinski||Read more|
|Firefox Source Docs Infrastructure||Improve the infrastructure underpinning Firefox's in-tree documentation.||Python, Sphinx, Rst||Andrew Halberstadt||Andrew Halberstadt|| Please see bug 1535452 for technical information.
Writing docs for Firefox's in-tree source docs is time consuming and difficult and the end result is difficult to navigate.
With MDN de-prioritizing build and workflow docs, we need a suitable replacement for all of Firefox's contribution and workflow documentation. The great advantage of documentation living in-tree, is that it can be updated along with the source. Unfortunately the current system to build and generate docs is difficult to write for, slow to build and generates poorly organized documentation. These factors discourage developers from creating or updating docs.
This project aims to improve the documentation experience via static analysis tools (e.g hint when docs might need to be updated), enabling linters, faster build times, additional language support and well structured hierarchies. Help make documentation a bigger part of our developer's day to day workflow.
|Improve FixMe||Improve FixMe, a tool for surfacing meaningful contribution opportunities to new contributors. This project started two years ago as a GSoC project and we are looking into adding more capabilities. The tool currently fetches issues only from GitHub and relays a lot into the tags project maintainers use in their repositories. We want to add gitlab support and come up with a more sophisticated way of identifying technologies and skills needed for new contributors||- Backend: Go, Buffalo, Postgresql. - Front-end: React, typescript, Redux||Christos Bacharakis||Christos Bacharakis||Link to front-end source code, link to backend source code. FixMe tool in action|
|Rust AV1 Encoder (rav1e) Project||Mozilla's rav1e Project  is a clean room AV1 encoder implementation written in Rust. The goal is to create a production ready AV1 encoder for use with common internet use cases: Video-On-Demand (high latency), Live Streaming (some latency), Interactive Video Conferencing (low latency).||
||Nathan Egge||Nathan Egge|| We are looking for GSoC students to help us research and implement advanced encoding algorithms in rav1e. Areas of interest are:
|..your next idea here!||some details||skills/language||reporter||mentor||comments|