Once again, Mozilla intends to apply to participate in Google's Summer Of Code.
Mozilla community members, please submit proposals here for 2019 Google Summer of Code projects with Mozilla. This page is for brainstorming - as we approach the deadline, those ideas that are accepted will be transferred to the official list.)
Our application for summer of 2019 goes into Google on February 4th, so get those project ideas in well ahead of time.
Are you a student looking to apply to GSoC with Mozilla? Your first stop should be the official list of ideas. This page is full of weird ideas, only some of which will make the cut. 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, though they do need to be mostly focused on code.
Here are the proposals. Feel free to add a new one.
2019 Proposed Project List
|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.
|GitHub Checks Support Improvements||Taskcluster currently supports reporting results to the GitHub Checks API, but only reports success or failure. Let's add support for showing annotations - snippets of log output, more detailed results, images, and so on. We can even add support for additional "actions" on the task, such as re-running with debugging enabled.||Server-side JS||:dustin||:owlish, :dustin|
|Support GitHub Logins in Taskcluster||Taskcluster currently supports logging in with Auth0, the Mozilla login system. We would like to make it useful outside of Mozilla, and most other users do their development on GitHub, making GitHub logins a good solution. This project would involve adding support for signing in with GitHub, as well as the more challenging task of assigning appropriate permissions to users based on the setup of their GitHub account.||Server-side JS||:dustin||:owlish, :dustin|
|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.
A stretch goal 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).
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 design.
|Android Java/Kotlin||mTwTm(Teng-pao Yu)||mTwTm(Teng-pao Yu) (mTwTm@mozilla.com), Nevin Chen (firstname.lastname@example.org)|
|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||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 (email@example.com)||Andi Postelnicu (firstname.lastname@example.org)|
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|| 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:
|Evangelizing best practices for coding the web||There’s a team inside Developer Outreach focused on making useful projects for today’s web developers and designers. We are launching a series of small gifts to the world: micro-sites, demos, videos, courses, articles, tools, etc — that teach topics like CSS, accessibility, layout design, understanding the web stack, etc. This project would be a chance for you to join us, and help with an ongoing project, or make one of your own. We are looking for someone with the empathy of a teacher, who studies what other people need, and does their best to provide that. Perhaps you will bring the perspective of a CodeNewbie, a fresh generation or community to our team.||
||Jen Simmons||Jen Simmons|| We don’t expect you to be an expert. We want someone who is passionate about web design / development, and is passionate about teaching others. Someone who cares about strengthening the technical health of the web by evangelizing best practices. Someone who understands the pain of trying to learn, and wants to ease that pain for others.
|Matrix Chat in Thunderbird|| 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:
|..your next idea here!||some details||skills/language||reporter||mentor||comments|