Community:SummerOfCode19:Brainstorming: Difference between revisions

From MozillaWiki
Jump to navigation Jump to search
(Add mentor mail addresses for An Android file downloader designed for Emerging Markets)
(Add more context for: An Android file downloader designed for Emerging Markets)
Line 166: Line 166:
|-
|-
| An Android file downloader designed for Emerging Markets
| 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. 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.
| 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
| Android Java/Kotlin
| [https://github.com/mTwTm/ mTwTm(Teng-pao Yu)]
| [https://github.com/mTwTm/ mTwTm(Teng-pao Yu)]

Revision as of 16:13, 2 February 2019

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.

Suggestion List

Here are the ideas lists from previous years.

Proposals can be in almost any part of the Mozilla project, though they do need to be mostly focused on code. If there is no category below for your corner 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.

2019 Proposed Project List

Title Details Skills Needed Reporter Mentor(s) Additional Comments
Improve Python in the browser The pyodide project allows the Python scientific stack to run in the browser by compiling it to WebAssembly. Help make stuff run better and faster there. Python and JavaScript. Can learn the WebAssembly parts as you go. Michael Droettboom Michael Droettboom There are a number of specific projects we have in mind, but are open to other proposals that are within scope and seem practical within the timeframe. (1) Implement matplotlib's display on top of Web APIs (HTML5 Canvas, etc.) This would allow us to avoid shipping a whole separate rendering engine to the browser. (2) Build WebAssembly support into the conda packaging system to make it easier to distribute new compiled packages for Pyodide. (3) Make multi-dimensional arrays sharable between Python and Javascript. See Pyodide's list of issues for additional ideas. About the mentor: Michael Droettboom is a Staff Data Engineer at Mozilla, and a former lead developer of matplotlib with years of experience building the Python scientific ecosystem.
ReSpec ReSpec is a JS-based tool used to write W3C Specifications (Web Standards) that is widely used by the Web Standards Community. With 6+ years of development, it's heavily depended upon by the W3C community at large (of which Mozilla is an active participant). ReSpec's code is in need of some modernization, optimizations, and bug fixes - and we could use your help! In this project, you would have the opportunity to make ReSpec's UI more accessible, making it leaner and faster using distributed processing with Web Workers, and/or adding new features to make the lives of W3C spec Editor's better. JavaScript, HTML, CSS. Marcos Caceres Marcos Caceres ReSpec offers students the opportunity to work on a large code base that has extensive real world use and impact. The project offers students an extensive range of problems to tackle, from UI design, to concurrent processing (using Web Workers to do distributed text processing), dealing with accessibility and internationalization, writing and learning about unit and integration tests, security, code review, etc. - as well as exposure to the W3C and the web standards community, this project also aims at teaching students about how web standards are put together. To determine if this is a project you would like to be part of, see the list of issues you could work on. It's a great opportunity to learn about all aspects of open source software development, but with the freedom to take on small to large challenges over the Summer (depending on your skill level and level of confidence). About the mentor: Marcos Caceres is a Staff Engineer at Mozilla who has been working on Web Standards for over a decade. Marcos is the lead maintainer of ReSpec. Marcos has extensive experience mentoring developers and has previously successfully mentor a GSO student.
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)

JavaScript and some Python basics Mathieu Leplatre Mathieu Leplatre https://bugzilla.mozilla.org/show_bug.cgi?id=1083971
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.

Make the Firefox WebAuthn Soft Token a Real Thing The Web Authentication Soft Token provides second-factor login support without needing a Security Key dongle. It would be very usable if the Soft Token were a) synchronized across an account using Sync, b) could be controlled via a Web Extension, and perhaps c) had some UI. If these things were true, most people could get quality authentication support without buying another device. C++, Javascript, Basic cryptography J.C. Jones J.C. Jones https://wiki.mozilla.org/Security/CryptoEngineering#Web_Authentication
WebSocket Monitor Support for WebSocket monitoring and inspection in Firefox DevTools. JavaScript/React Jan Odvarko Jan Odvarko This project aims at providing support for WebSocket monitoring and inspection in Firefox DevTools. The feature should be built on top of the existing Network panel UI and responsible for visualizing data sent through WebSocket connection (i.e. WS frames). The user should be able to use the UI to see as well as analyse the data (search, filter, etc.).
Helpful crash reporter The crash reporter only allows users to send crash reports but in some cases it might help the user diagnose the crash and solve it on his/her own C++, Javascript Gabriele Svelto Gabriele Svelto There's a few things that could be implemented:
  • A quick test of the memory owned by the crashed process (such as those in memtest86+) might catch faulty memory, a common cause for crashes
  • The crash reporter client might try and validate Firefox files which can sometimes become corrupted (usually because of hardware issues). If they are it can prompt the user to re-install Firefox
  • Many crashes are caused by buggy graphics drivers, while we blacklist the most egregious offenders we can't cover them all. The crash reporter might identify a faulty driver (if a bug for it has already been filed) and point the user to up-to-date drivers
  • For crashes caused by known bugs it should be possible to point the user to the bug filed on bugzilla
Debugger Inline Variable Preview When the Firefox DevTools debugger is paused, users can hover over variables to get a useful tooltip that details the variable's value at that time. While this popup is very informative, one valuable enhancement would be displaying relevant contextual variables values alongside the variable inline, alleviating the need for tooltips and allowing the user to more quickly get the information they need. The applicant will work alongside the Debugger's team to implement this feature based on UX mockups and be given space to share and implement ideas of their own. Javascript David Walsh David Walsh
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 Mitchell Irene Storozhko, Dustin Mitchell
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 Mitchell Irene Storozhko, Dustin Mitchell
Improve Webdriver support in Servo Servo currently supports a minimal subset of the Webdriver standard. We would like to improve Servo's support, and verify its correctness by passing a set of automated tests. This project would involve writing Rust code to extend the webdriver server inside of Servo, as well as JavaScript and Python to support the testdriver.js testharness. Familiarity with Python & JavaScript; interest in learning Rust Josh Bowman-Matthews Josh Bowman-Matthews Project description
Support importing Instruments profiles in perf.html perf.html visualizes performance data recorded from various performance analysis tools. It is a tool designed to consume performance profiles from Gecko Profiler but can visualize any profiler able to output JSON. It currently supports Gecko, Chrome and perf profile formats. Instruments is a performance analyzer that comes with Xcode. This project would involve adding support for Instruments profile import in perf.html. Familiarity with JavaScript & React Nazım Can Altınova Nazım Can Altınova https://github.com/devtools-html/perf.html/issues/1138
Common Voice - WebAssembly MP3 Encoding Currently Common Voice doesn’t support Safari, which is also why we have an iOS app. The only reason being the missing MediaRecorder API. It could be polyfilled (rebuilt in “userspace”) by compiling an MP3 encoder to WebAssembly. I’ve tried that a couple of times, but never had enough time to fix the opaque bugs happening in Safari. This could also be turned into its own library and would be a nice story overall of how WASM can help with WebCompat and missing APIs. JavaScript Gregor Weber Gregor Weber This GitHub issue lines out some thoughts around how to implement it and you can find references to closed PRs which tried implementing it in various ways.
Common Voice - Voice Wave Avatar We’d like our users to have unique(ish) avatars based either on the characteristics of their voice or a visualization of how their name (or an utterance of their choosing) is pronounced. It could also be a combination of the two ideas. We’re very open to explore this space together, though the a candidate should have some knowledge in sound theory. JavaScript, Some knowledge of sound theory Gregor Weber Gregor Weber
Tab Manager menu in Firefox This project will extend the tab overflow menu - which shows tabs not visible in the browser's tab strip - to allow management of all open tabs across all browser windows. The selected student will be working directly in the Firefox codebase to add functionality and new menu structures to make this easily accessible for end users. JavaScript, CSS, and web experience Sam Foster, Bryan Bell Sam Foster We have UX mockups for this feature, which could be broken into two phases. We also have a bug on file, where discussion has begun. While working on this you will become very familiar with the Browser Toolbox, our own "Inspector" tool for the browser user-interface, as well as writing automated tests for the new feature you're adding. The existing tab overflow code lives in our browser-allTabsMenu.js file, which will be the starting point for the new tab manager. You can look at this and the existing tab code to get an idea of how this currently works.

-

Firefox Reader Redesign The design of Firefox’s Reader Mode has languished behind as Quantum has implemented the new Photon Design System. The interface needs to be rebuilt using new visual and interaction styles to match the Photon Design System. JavaScript, CSS, and web experience Abraham Wallin Eitan Isaacson UX Mockups for this feature are available with visual bugs have been reported here and here. Functional bugs and feature enhancements have been documented here, here, here, and finally here. The request is for an engineering student to implement the designs and tackle the queue of bugs/enhancements within the Firefox code base. Mentors will support with prioritization, design direction/assets, and technical guidance.


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 (nevin@mozilla.com)
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 (s@mozilla.com) Andi Postelnicu (andi@mozilla.com)
Firefox Account Security Dashboard Firefox Account administrators and users need an easily digestible view into the important events that have occurred on an account, providing a way to audit for irregularities. JavaScript, HTML, CSS, MySQL Vijay Budhram, Shane Tomlinson Vijay Budhram, Shane Tomlinson The Firefox Account platform tracks security information about an account, but does not surface this information in an easily consumable format. Users and administrators should be able to see a timeline of an account’s security related events, such as connecting devices, signing into services, changing or resetting passwords, and adding or removing 2FA. Each event in the timeline should include a timestamp, IP address, and location information when they occurred.

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.

..your next idea here!