Outreachy/2016/December to March

From MozillaWiki
Jump to: navigation, search

Projects for Outreachy December 2015 to March 2016

Key Dates

  • September 29 application process opens
  • November 2 application deadline
  • November 17 accepted applicants announced (Mozilla intends to announce earlier due to travel and hardware logistics)
  • December 7 - March 7 internship dates

Application Process

Applicants and mentors, please review the Outreachy Eligibility and Application Information page to learn more about applying for Outreachy.

Projects

Battery Friendly Platform Networking Deadline Scheduler

Mentor: Patrick McManus. Pat is the gecko networking module owner and has been hacking on the Firefox networking stack for the last 7 years. He believes that more diversity in our development ranks will help us be more creative about driving the web and Firefox forward.

Details

Battery performance for networking is strongly influenced by the number of times the radio is brought into a higher powered state for transmission. Data that is batched together minimizes the number of power-up events and extends battery life. Normally HTTP requests are dispatched as soon as possible, but by strategically delaying ones that do not have an impact on user interaction this batching can be achieved.

The Intern will add an optional deadline parameter to the Gecko networking interface. Callers that specify a deadline allow their transactions to be delayed for some period of time in order to coalesce and intelligently schedule it with other resource events. The navigator Beacon API is a an obvious candidate to use this functionality.

The intern needs to be familiar with C++ for the platform code, and some exposure to javascript for the test infrastructure would also be helpful.

To get started

* Build firefox for desktop
* Find the w3c beacon code in gecko
* Be prepared to talk about making a patch to that code using the nsIHttpChannel xpcom interface to print the beacon remote IP address that is used.
* ask questions on irc, either in #outreachy or #necko - the mentor's nick is mcmanus

Enumerate (and Dockerize) the tests! (Quality Assurance) [no longer taking applications]

Mentor: Karl Thiessen has a knack for hanging around with people who are making the world a better place, so it's really no surprise that he wound up at Mozilla. A colleague said of him once: "We were changing the world before changing the world was cool." From helping to provide the first free UNIX services to students at UC Berkeley, to bringing the most effective HIV-prevention programs in San Francisco to the Web, to assisting engineers in designing earthquake-proof buildings, Karl has a fierce commitment to using computers to improve (and sometimes save) the lives of people.

Details

Our intern would be responsible for helping the team create Dockerfiles and images for as many of the deployment/functional tests as possible, across all of the many repositories Cloud Services QA works with. Along the way, the intern would help clean up and update documentation, and complete an inventory of all of our repositories and their status (deprecated, active, or healthy) based on how often the tests get run.

This project would require the intern to take a short tutorial in how Dockerfiles are prepared, but no previous Docker experience would be necessary. The enumeration part would require the ability to navigate GitHub and a willingness to ask members of the team questions about how and when their tests are running.

Also, the intern may wish to run the tests as they are Dockerized, which would require some experience with Docker (and possibly AWS) and some software engineering inclination.

First steps to get involved

  1. Take a look at a few of the Mozilla Cloud Services GitHub repositories at https://github.com/mozilla-services/ (Warning: there are over 100 repos -- just pick a few that look interesting, don't try to look at all of them)
  2. For each repository that looks interesting, note a few facts: Does it have a README? Does it have clear installation steps? Is it clear what it does?
  3. Suggest a few ways that the repository could be made more welcoming to first-time contributors. What would make it easier to know where to start?
  4. Put your notes in an email to Karl at kthiessen@mozilla.com.

Kinto — Make instances discoverable

Mentor: Alexis Métaireau is a developper in the cloud services team for Mozilla for 4 years. He has been passionate about HTTP and good practices around APIs since a few years. He wants to bring the idea of self-hostable data to reality.

Details

The Kinto project aims to bring storage instances to everyone, attached to their Firefox Accounts. It actually supports multiple authentication schemes, but FxA is integrated with it, and that is part of the solution we want to deliver.

Currently, Kinto is thought as a centralized server: there is one instance, and everyone authenticates on this instance. Items are shared between users of a same instance.

This doesn't resonates well with multiple goals we have: scalability is harder when there is one endpoint, and it's also not interoperable.

For instance, imagine Alice and Bob. Bob is using Mozilla's servers to store his data, whereas Alice deployed her own Kinto instance.

There are different use cases:

  • Alice wants to use Routina, an application that stores its data inside a Kinto instance. As such, Routina needs a way to discover where it should store its data, and send the requests to this server;
  • Bob and Alice want to collaborate on a set of data (think about a shared expense webapp). There should be a way for Alice to host everything and grant access to Bob to her data. The webapp should be able to use the correct server.

Here are the different steps that could allow these scenarios:

  • At the moment they authenticate, the client detects the email address used, and relies on the domain part to do a Web Finger request on the domain (*) and for the specified user.
  • In case the identified server doesn't support WebFinger, it uses a central repository to lookup where the Kinto server is located.
  • Once the Kinto server located, all requests should be issued against this server.

(*) It is also possible to use the same mechanism to discover the FxA endpoints. But as FxA isn't a federated protocol, users from one FxA realm would need to be accepted explicitely by the Kinto server, in its configuration.

In terms of code changes, here is what it looks like (rough step by step):

  • Update the Kinto.js client to find the server location. It should first rely on WebFinger;
  • Create a central repository of server locations. This could be contained in the FxA profile server or in a central Kinto collection;
  • Update the Kinto.js client to fall-back to this central repository in case no Web Finger exists;
  • Investigate on ways to store this information directly in the web browser. It could also be configurable by the JavaScript client (with

an UX that looks like what Remote Storage proposes).

  • Work on the first user experience: how can client learn they can chose which server to use?
  • Ship it!

To get started on Kinto:

Open Source Designer, Mozilla Foundation [no longer taking applications]

Mentor: Ricardo Vazquez

Ricardo is a UI Designer working at the Mozilla Foundation. He is passionate about extending an open-source design culture to people outside of Mozilla. Ricardo started a YouTube live stream series earlier this year where he designs with everyone as his audience. Through this pathway, he is able to open Mozilla's open design practice to people around the world. But forget about design, Ricardo is interested in how people think. Growing up around a family of musicians and artists, Ricardo decided to pursue meaning in art. Ricardo is interested in culture, design, aesthetic, wit, reality, existence, history, education, thought, and the happiness of pursuit. He spends his free time rowing in Ontario and hiking in British Columbia.

Details

At Mozilla Foundation, we spend a lot of our energy promoting web literacy. We’ve been hard at work the past year building innovative tools, supporting communities, teaching, learning, and shaping the environments in which the open web is made possible. We want everyone in the world to create, not just consume, the Web around them.

As an Open-Source Designer, the applicant will be immersed in the world of products such as Thimble and Webmaker for Android, communities such as Mozilla Learning Networks and Mozilla Hive groups, and initiatives such as Mozilla Advocacy and Fundraising.

The intern will:

  • Approach design through an iterative process with our growing user base and community
  • Design and implement interfaces and collateral work for our products and initiatives
  • Illustrate collateral work for our products and initiatives
  • Create and conduct user testing research to generate insights of our products
  • Bridge the gap between the behaviour we want users to take and the interface that gets them there
  • Prototype and implement work using HTML, CSS, and JavaScript

To Get Started

  • Do you own an Android device? If so, go ahead and download Webmaker. Give it a spin!
  • Head over to Thimble and create a project. This project can be about what you liked about using Webmaker, or it could also be about a hobby of your own.
  • It would be great for you to include any design or illustrations on your Thimble project.
  • Send the Thimble Project URL as well as your portfolio of your work to ricardo[at]mozillafoundation[dot]org
  • Feel free to say hi on IRC (#foundation) or message me #ricardo

SUMO - Build a tutorial or training tool for new technical writers

Mentor: Joni Savage is the content manager for support.mozilla.org (SUMO). Joni works with the community to create and organize support content to help people use Mozilla software successfully. Joni believes that diversity is important in creating useful, engaging and accessible content for all users.

Details

Mozilla’s Support site (SUMO) provides around-the-clock help for 30 million users a month through thousands of knowledge base articles. We rely on the community to keep the knowledge base up to date with each release. While there’s growing interest in contributing to the knowledge base, there’s also a learning curve. We have training documents, but they’re lengthy and a hassle to work with. Here’s where you come in.

About this project: You will learn the ins-and-outs of writing for the knowledge base, then design materials or tools to motivate and train new contributors. You will work closely with the content manager to survey contributors, determine learning objectives, and research, design and test tools or materials. Depending on your interests, tasks can include: building a course, creating training videos, storyboarding, writing UX copy for tools, designing infographics, and any other ideas you may have. You’ll also learn technical writing fundamentals, wiki markup and search optimization along the way.

Skills needed to succeed:

  • On the job or academic training in writing, design, marketing, video production, education, or a related field.
  • English writing skills.
  • Strong research and communication skills.

To get started:

  1. Write a short article or tutorial on how to use a tool of your choice.
  2. Send your tutorial to Joni Savage at jsavage [at] mozilla [dot] com.

Servo: Complete implementation of Fetch standard

Mentor: Josh Matthews

Josh started contributing code to Firefox as a university student, and now helps lead parts of the Servo project. He's very interested in enabling new contributors with no prior web browser development experience to have a big impact on Servo!

Details

Servo is a brand new web rendering engine written from the ground up in Rust. This allows us to try implementing old web features in new ways, including the underlying model for performing network requests inside the browser. The Fetch standard defines a series of steps to ensure proper security checks are performed when necessary, and we want to try using it everywhere in Servo!

A partial implementation of this model already exists in Servo, but there are large pieces missing. You will be responsible for the following:

Servo is written almost entirely in Rust; besides some diversions into HTML and JavaScript for reading and writing tests, this project will require you to work exclusively in the language. Do not fear! We regularly receive contributions from first-time Rust programmers, and it's a great motivator to gain experience in a new low-level language. There will be many opportunities to practice reading, understanding, and refactoring existing code, in addition to writing new implementations when necessary. Furthermore, you will gain proficiency in reading web specifications.

What you can do to get involved:

Contribute to the HTML Standard!

Mentor: Anne van Kesteren. I've been working on web standards for a little over a decade and at Mozilla for well over two years. I want to help create a more diverse standards community as that will help us make better standards.

Details

Help fix bugs in the HTML Standard by editing HTML, reading the HTML standard, testing browsers, and using GitHub.

Learn how standards are created, how to resolve technical issues, and help converge implementations by improving the HTML standard.

To get started:

If you have any questions, feel free to ask them on IRC (#whatwg, Freenode). You can also reach out directly to Anne via IRC or email.

Visual Design with Research Data [no longer taking applications]

Mentor: Ilana Segall is a quantitative user researcher in the User Advocacy team. Just as it is necessary for the Advocacy team to listen to feedback from all sorts of users - not just the ones that are similar to us - it is important to include the point of view of diverse researchers with their own ideas, experience, and interests.

Details

We have a huge opportunity for a lot of unexplored data from various projects to be represented visually, both for research purposes and to be displayed in other parts of the organization. We have data on search, participation in heartbeat surveys, and months and months of telemetry that are rife for exploration. Our ideal candidate would have some coding experience and the desire/ability to learn javascript and the d3 visualization library. Someone with an element of design interest would also be preferred so that we can work on the most effective data vizzes possible. The intern would also have the ability to work on executive-facing work including infographics and slide decks.

Getting Started

  • Check out our feedback site for Firefox. Feel free to play around with date ranges and versions!
  • Describe (through drawing, words, or code) a visualization that uses this data. (Some ideas: help us interpret what the major issues and/or successes are on each day, where feedback is coming from, or which versions are causing strange behavior in feedback. Be creative!)
  • Email results to Ilana Segall at isegall[at]mozilla[dot]com.

Extra credit (optional!)

Super duper extra credit (very optional!)

  • Use the input api to pull some data, and start creating the visualization you proposed above.