Community:SummerOfCode17:Brainstorming

From MozillaWiki
Revision as of 18:37, 2 March 2017 by Wlach (talk | contribs) (→‎Automation & Tools: graphql)
Jump to navigation Jump to search

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
Developer Tools for Designers In Firefox Developer Tools, we're aiming to implement visual tools that will help developers and designers edit CSS properties visually. Since CSS is very declarative by nature, we can provide tools that are commonly found in designer tools in order to bridge the learning gap of new developers and designers learning CSS and allow them to edit complex CSS features such as CSS filters, blend, clip-path, layout, etc without knowing what the properties are. Going beyond editing CSS, we also need to think about how we can visually inspect the CSS style transformations that can impact the layout. Finally, we are looking for ways to better export and see the changes made in the Inspector tool so that we can take the work we have done in the Developer Tools and apply that to your local source files. JavaScript, HTML, CSS, React, Redux :gl :gl Starting meta bug for inspiration Bug 1258390

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

Matrix protocol support 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:
  • Support more features from the Matrix SDK (room topics, typing notifications, read receipts, etc.)
  • Support one-on-one conversations.
  • Add tests specific to Matrix.
  • Improve the Matrix JS-SDK that Instantbird and Thunderbird depend on.
  • Improving and expanding shared code and APIs used by all JavaScript protocol plugins (IRC, XMPP, Yahoo and Twitter).
  • Improving documentation of the process for adding a protocol to Instantbird/Thunderbird.
  • Using the Matrix protocol on a day-to-day basis to dog-food the code and see what else is missing.
JavaScript, XPCOM, experience using HTTP APIs Patrick Cloke [:clokep] clokep If you're interested in supporting a different protocol, please come talk to us. Protocols we're interested in: Matrix, Google Hangouts, Facebook, Bonjour, TextSecure/Signal, Telegram, or others!

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 This project aims to evaluate and integrate more static analysis for Javascript code into some key sections of the Firefox code. We will focus on deploying FLOW on some part of the code as a proof of concept. Depending on the results, this will be extended to more components and/or integration in the developer workflow.
C++ static analysis Add new checkers specific to our base code Strong C++ experience, clang 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).
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)
Regression localization from stack traces Tool to blame a patch for causing a newly introduced crash. C++, Python Marco Marco The project would involve creating a tool that analyzes a set of stack traces, performing the intersection with the Firefox call graph (which can be generated using Clang) and a set of recently committed patches.
Improvements for crash clustering Build a tool to improve crash clustering, currently based on the top method of the stack trace. Python, C++ Marco Marco The project would involve finalizing https://github.com/marco-c/crashsimilarity; testing it more thoroughly; putting it in production.
GraphQL interface to Treeherder This project would be about creating a GraphQL interface to Treeherder's datastore, as a complement to the existing REST API ! Django, MySQL, Graphene Will Lachance (:wlach) Will Lachance (:wlach) }

Documentation

Title Details Skills Needed Reporter Mentor(s) Comments

Mozilla Developer Network

Title Details Skills Needed Reporter Mentor(s) Comments
MDN Documentation Tester WebExtension Rewrite the MDN doc tester add-on as a (well-tested, modern, documented) WebExtension that runs in Firefox, Chrome, Opera, and possibly Edge. Ideally reach feature parity with the existing Add-on SDK add-on and if time allows work on new test ideas that run against the MDN documentation. Add-On/WebExtension experience (JavaScript, HTML, CSS) Florian Scholz Florian Scholz

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
Curriculum database for Learning site Curriculum is currently accessed via the Teaching Activities page of the learning site (https://learning.mozilla.org/en-US/activities ). It's a pretty static experience. Users can browse through a list of modules, but there is no search capability. We have a prototype for a more interactive UX that allows users to search and filter curriculum modules and activities: https://flukeout.github.io/curriculum-search-react/. This project would require implementing the front-end, as well as wiring up the backend database (for which the model has been defined, but the data has not been migrated). js, html, css, django, python hannah gideon This would be a big win for the curriculum team and for the community members who make good use of our learning/teaching materials. The database could eventually be extended beyond the learning site and support other parts of the network as well.

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 Anthony Ramine (nox)
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
science.mozilla.org phase 2 Start phase 2 of the Mozilla Science Lab website by implementing js, html, css, react, django, python abbycabs alanmoo Detailed list and breakdown of all phase 2 work (only the tasks mentioned in details are expected to be completed by the student):
Paper Badger - badgr migration & publisher integration * Issuing badges to credit authors for their work on academic papers.
  • In the final steps of our badgekit to Badgr migration, add tests to make sure we have feature parity and make the switch to Badgr in production.
  • Implement a journal submission system integration with paper badger. This way, journals won't have to manually enter new badges in our system.
js, Badgr, APIs, authentication, node.js, react abbycabs abbycabs github: https://github.com/mozillascience/paperbadger
Study Group participation visualization study groups meet all over the world, running regular events share skills, co-work and create community around open science. Right now there's no easy way to see all the study group events.
  • Write a script to collect data for all study group events happening world wide. Each study group is a fork of this template repo. Each event is an issue in the repo (example of events as issues). here is a script that collects all events for a specific repo. Please update this to collect data from all forks.
  • Visualize this data in a way that shows study group activity all around the world! viz: calendar, map
js, html, css, python (or another scripting language), data visualization Zannah Aurelia main study group repo: https://github.com/mozillascience/studyGroup


MozVR

Title Details Reporter Mentor(s) Comments

Connected Devices

Title Details Reporter Mentor(s) Comments


Thimble

Title Details Skills Needed Reporter Mentor(s) Comments
Address stability issues within Thimble Main task: Get Thimble to write directly to AWS instead of writing to a database first. js, html, css gideon gideon Full list of issues affecting thimble's stability: https://github.com/mozilla/thimble.mozilla.org/issues?utf8=%E2%9C%93&q=is%3Aissue%20is%3Aopen%20label%3A%22good%20first%20bug%22%20-label%3A%22assigned%20to%20contributor%22
Integrating VR capabilities into Thimble Goal: Thimble makes it easy to create multi user VR experiences, allowing the whole classroom to take virtual field trips through student projects.

This is made possible by doing any of these:

  • Integration of the A-frame visual inspector, which gives the user lots of control over an object properties in a custom UI
  • Custom Quick-Edit UI for different types of objects
  • Develop large, visual menu of 3D objects make it easy to build interesting scenes quickly
  • A wide range of starter projects
js, html, css gideon gideon This work would be done in parallel with work done by CDOT on making Thimble a VR experience building tool

thimble repo: https://github.com/mozilla/thimble.mozilla.org

Thimble and Remote Mentorship Goal: Use together.js to enable a multi-user environment on Thimble that is tailored to work as a virtual teaching environment for HTML/CSS/JS

Details:

  • Fixing issues in together.js to make it functional
  • working on ways to sync state between Thimble's editor and the remote Thimble editor(s
  • Syncing filesystems across Thimble editors with WebRTC
js, html, css gideon gideon thimble repo: https://github.com/mozilla/thimble.mozilla.org