Outreachy/Round/13

From MozillaWiki
Jump to: navigation, search

Round 13 was the first half of 2017.

Projects

Improve the first-run experience of Firefox's location bar

Mentor: Gijs Kruitbosch
Participant: Svetlana Orlik

Firefox's location bar currently uses your bookmarks, history and search engine to provide you with useful search results. When you're a new Firefox user, your bookmarks and history are empty, and so the initial experience can feel disorienting and unhelpful.

We'd like to provide users with an initial set of "autocompletion" results that provide domains that they are likely to navigate to. So that even when you're a new user, if you type in "face", we autocomplete to "facebook.com", and so on.

Make WebExtension Development More Awesome

Mentor: Kumar McMillan
Participants: Shubheksha Jalan and Elvina Valieva
Shubhesksha's Blog
Elvina's Blog

WebExtensions let anyone extend and customize their web browser, such as blocking ads on every website they visit. This is an exciting time for the API because it’s now possible to write a single extension that works in both Firefox, Chrome, Opera, and soon IE. At Mozilla we provide several tools and resources to make developing extensions fun and easy but we’d like to make this development experience even better.

The participant will improve the productivity of WebExtension developers in the following ways. Most of these tasks involve changing the web-ext command line tool but others may involve writing documentation or example code.

  • Utilize common web developer tools when building extensions.
  • Automatically keep the web-ext tool up to date to avoid bugs.
    • Alert the developer if their version of web-ext is out of date. More info.
  • Offer extension “linting” in code editors
  • Add a new web-ext command that lays out a directory structure for an extension
    • This command would automatically generate a manifest.json file and other common files to help the developer get started on a new extension. More info.
  • Build a mock WebExtension API for use in automated tests
    • Invent a JavaScript library that developers can use to execute tests for their extension without having to launch a web browser. More info.

Build a Library of Inclusion Best Practices and Case Studies

Mentors: Larissa Shapiro and Lizz Noonan
Participants: Bee Padalkar, Kristi Progri, and Nasma Ahmed
Bee's Blog
Kristi's Website
Nasma's Website

This project is a community research project to identify and document examples of successful inclusive teams and communities within Mozilla, in order to amplify successes and highlight bright spots. The Outreachy participant will assess programs for suitability, and then interview participants, and then document case studies, referencing appropriate research and industry/community best practices. This is a great opportunity for a person interested in Diversity and Inclusion, Community Building, or User/Community research.

Improving user experience of Firefox Accounts

Mentor: Vlad Filippov
Participant: Divya Biyani
Divya's Website

There are several pending initiatives that are focused on improving the user experience of Firefox Sync and Firefox Accounts. As part of this Outreachy internship project, the participant will be involved in improving user interaction, running experiments, and measuring success of certain features.

Her software engineering skills will assist in the following:

  • Developing new application improvements to reduce the number of user errors on password reset, password change, and sign up flows.
  • Improving the verification rate and speed of new users signing up for Firefox Accounts.

To learn more about Firefox Accounts project check out: fxa.readthedocs.io/en/latest/

Add support for OpenAPI to Kinto

Mentors: Ethan Glasser-Camp and Rémy Hubscher
Participants: Mansimar Kaur and Gabriela Surita
Mansimar's Website

Kinto has a fairly comprehensive set of documentation that describes its API. However, the cool new thing is OpenAPIs (formerly known as Swagger). Documenting our API using this specification would facilitate the implementation of client libraries in other languages as well as open the door to lots of other projects, including "interactive" documentation which has buttons that launch requests against a live server.

The Kinto team's participants will work on developing OpenAPI support in Kinto. The reservoir of tasks includes:

  • Document the existing API by writing an OpenAPI specification. This will involve reading the existing documentation and experimenting with the Kinto server.
  • Add runnable examples to the documentation. This will involve comparative analyses of available tools as well as working with our Sphinx-based documentation.
  • Add an automated test that detects when the spec is out-of-date. This would involve working with our py.test-based unit testing suite.
  • Write a mechanism to generate an OpenAPI specification from the Kinto source code. This would require writing Python code that hooks into the server code to identify APIs.
  • Investigate the use of the OpenAPI specification to do fuzz-testing against the Kinto server. This would require an investigation of fuzzing tools and learning how to use them in a customized way.

Azure Blob Storage client library

Mentors: John Ford
Participant: Elena Solomon
Elena's Blog

The Taskcluster team at Mozilla builds an automation platform, similar in scope to Buildbot and Jenkins. The project is built to support the continuous integration testing of Mozilla projects like Firefox and Rust as well as projects that Mozilla participates in like NSS. Taskcluster is a built using distributed 'cloud' computing services where possible. We use the Azure Storage framework for storing a lot of things. This library has Queue storage, Table Storage. We have a wrapper that we like a lot called 'azure-entities' in NPM.

The goal of this project is to write a library to wrap the Azure Blob Storage service. A preliminary effort has already been done. This project's participants will take this work and extend it to cover the majority of the Blob Storage API.

We specifically would like to have the following:
1. All Rest API endpoints implemented using input validation to ensure that only valid data makes it to the API. JSON Schema is a great tool for this
2. Ability to specify a JSON Schema to validate objects that we'll store or append to blobs, and also that we read out from them
3. Ability to use Shared Access Secrets (SAS) as authentication
4. Stretch goal of adding SAS for Blob storage to our authorization service

Improve Template Logic for Taskcluster-Github

Mentor: Brian Stack and Dustin Mitchell
Participant: Irene Storozhko

The Taskcluster team at Mozilla builds an automation platform, similar in scope to Buildbot and Jenkins. The project is built to support the continuous integration testing of Mozilla projects like Firefox and Rust as well as projects that Mozilla participates in like NSS. Many of these projects are developed on Github, and the Taskcluster-Github service acts as the interface between the two systems, creating tasks in response to Github events and posting status updates back to Github. As other Mozillians have started using Taskcluster-Github, they have identified some issues and missing features in the service. With those fixed, more Mozillians can use TaskCluster to improve the web.

This project involves addressing some of the more pressing user-identified issues with TaskCluster.

It is a collection of smaller projects:

  • Add support for creating tasks in response to new Git tags. This would allow users to run "release" tasks when they push a new version tag, for example.
  • Make the repository enrollment process "self-serve". Currently, if a team wants to use Taskcluster-Github, they must ask a person on the Taskcluster team to set that up for them. That can be slow and discourages experimentation. With this project completed, users can set up a new repository with a few clicks.
  • Add "build shields", similar to http://shields.io/ that will show the latest status of a Taskcluster-Github build or test run.

Webcompat.com Content & Participation Experience Researcher

Mentor: Adam Stevenson
Participant: Mesha Lockett
Mesha's website

Mozilla's Web Compatibility team builds and maintains a website called webcompat.com that allows individuals to easily report site compatibility issues - and to allow us to better understand the larger picture of compatibility issues affecting Firefox users on the web.

In this Outreachy project, the participant will commit to one or more of the following projects to help us improve our on-boarding process for new contributors:

  • Review & update web compatibility documentation
  • Identify and promote good features and bugs that need a contributor on social networks
  • Make creative assets to be used on webcompat.com
  • Review the user experience for contributors to webcompat.com
  • Help redesign the contributors page on webcompat.com
  • Create screencasts or scripts for screencasts that explain how to contribute to webcompat.com
  • Assess the current workflow and suggest areas for improvement


Make Treeherder faster with ReactJS

Mentor: Cameron Dawson
Participant: Casey Williams

Treeherder is growing. More people are using it every day. And the amount of data it displays is also growing. So we need to expand its ability to scale to more and more data. Treeherder is primarily written in AngularJS on the front-end. However, we display thousands of small objects on the main landing page. Using Angular’s ng-repeat for this proved unacceptably slow. It was converted to using JQuery and raw JavaScript DOM manipulation which has been acceptably fast for a while, but is harder to maintain. ReactJS has been used in other parts of the product to significantly improve performance and is easier to read and edit. The participant will convert the existing job matrix rendering to use ReactJS.