Outreachy: Difference between revisions

From MozillaWiki
Jump to navigation Jump to search
(Adding bstack to help me out :))
Line 270: Line 270:
What you can do to get involved:
What you can do to get involved:
* Set up a local Firefox build ( https://developer.mozilla.org/en-US/docs/Simple_Firefox_build )
* Set up a local Firefox build ( https://developer.mozilla.org/en-US/docs/Simple_Firefox_build )
* Claim an unclaimed failing test to investigate from https://etherpad.mozilla.org/wpt-csi-starter-tests
* Claim an unclaimed failing test to investigate from https://public.etherpad-mozilla.org/p/wpt-csi-starter-tests
* Figure out precisely what's failing, file a bug describing your results,  and await further suggestions on how to fix it (alternatively seek out  help on IRC (https://wiki.mozilla.org/IRC ) in #introduction)"
* Figure out precisely what's failing, file a bug describing your results,  and await further suggestions on how to fix it (alternatively seek out  help on IRC (https://wiki.mozilla.org/IRC ) in #introduction)"



Revision as of 20:29, 28 March 2016

Mozilla has participated in the GNOME-OPW program for several years. Originally called GNOME-OPW (GNOME Outreach Program for Women), this program is now called Outreachy and has a broadened scope. The goals of the program are to increase participation from under-represented groups in free and open source software. Internships are open:

  • internationally to all women (cis and trans), trans men, and genderqueer people
  • also open in the U.S. to all Black/African American, Hispanic/Latin@, American Indian, Alaska Native, Native Hawaiian, and Pacific Islander people

We provide a supportive community for beginning to contribute any time throughout the year and offer focused internship opportunities twice a year with a number of free software organizations.

Useful links

Upcoming Outreachy Program: Round 12 (June-August 2016)

Key Dates

  • February 22 Applications are open!
  • February 28 Mentor applications close
  • March 22 Participant Applications due

Application Process

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

First steps for applicants to Mozilla:

  1. Set up IRC.
  2. Set up a Bugzilla account and a Mozillians profile. Please include your IRC nickname in both of these accounts so mentors can work with you more easily. For example, Eve Smith would set their Bugzilla name to "Eve Smith (:esmith)", where esmith is their IRC nick.
  3. Please look at the projects below, consider your options, and chat with Mozilla mentors on IRC. You need to make a small contribution to the area you wish to apply for.
    • To chat with Mozilla mentors, join the #outreachy channel on irc.mozilla.org.
    • To ask general questions about Outreachy or the application process, you can also try #outreachy IRC channel on irc.gnome.org.

Projects to Apply for

There will be several Mozilla Outreachy projects for Round 12. Each project and its mentor are below.

Got Questions? Ask:

Outreachy Coordinator:

IRC: #outreachy

Convert Mozmill tests to Marionette [No longer taking applications]

Mentor: John Dorlus <jdorlus@mozilla.com>, Silne30 on IRC

This project involves reading and writing code in both Python and Javascript. Mozmill is one of Mozilla’s older automated testing frameworks; tests written in Mozmill are being ported to Marionette, which is an implementation of the Webdriver standard, capable of interacting with both web content and browser UI. Applicants should have a strong knowledge of Python and at least some exposure to Javascript. The starting point (and main focus) for this project will be the work outlined in Bug 1132680; there is other work in the same area that can be done if that bug gets finished early.

SVG Reference Documentation

  • Mentor: Jean-Yves Perrier (teoli on IRC, feel free to ping me)
  • The participant will have to perform the following tasks:
    • Write a reference page for each SVG-related interface.
    • Create a code sample showing the use of each interface.
    • Write a reference page for each property and method, adapting the code sample of the relevant interface for displaying the usage of the specific entity.
    • Adapt the SVG tutorial to the newly written reference documentation.
  • The following skills are needed:
    • fair knowledge of HTML and SVG
    • basic knowledge of JavaScript and DOM, ability to create and access nodes of the DOM tree.
    • ability to write fluently in English (English as a native language is NOT required)
    • ability to write basic code samples (10-20 lines of code each)
    • familiarity with a wiki and/or github is a plus.

Realtime Push Notifications for Kinto

Kinto is the Mozilla storage solution to backup and sync Firefox Account Users data. It is currently used as a backend for Firefox OS applications and for Firefox and Fennec updates in the Go Faster projects. https://kinto.readthedocs.org

Today a notification system allow us to notify Firefox and Fennec users for them to come and get updates.

The participant would extend the notification system to implement realtime updates between devices.

  • On the server side we are using Pyramid and Python with a bit of AsyncIO
  • On the client side this will involve JavaScript and Websocket management.

Enhancements to Python testing tool plugin for generation of HTML reports [no longer taking applicants]

The successful candidate will be responsible for developing enhancements to pytest-html - a plugin based on the popular Python testing tool pytest, which generates a HTML report based on test results.

The desired enhancements include: gracefully degrading when JavaScript is not available; saving CSS, images, and other resources as additional files rather than embedding in a single file; grouping results by package/module/class; and including test docstrings in the report.

Any new enhancements to the plugin must also be accompanied with tests, which will ensure that these new features work in all expected environments, and reduce the chances of regression.

It would be advantageous for potential candidates to have experience in creating simple HTML pages using JavaScript and CSS, however this is not essential. It would also help if the candidate has experience with Python or pytest, but again this is not essential so long as the candidate is willing and able to learn these skills during the internship.

For more information, see the project's Outreachy help.

Test-driven Refactoring of Marionette's Python Test Runner [no longer taking applicants]

Marionette's Python Test Runner is slated to become the canonical harness for running most new automated tests for Firefox, but it needs to be lovingly cleaned up and stabilized first. We've already started this work and we're excited to have you help us continue.

We want it to be easy and safe for teams around Mozilla to customize the Test Runner for their needs, so we're writing a suite of tests for the Test Runner itself to prevent breaking any existing automation infrastructure -- i.e. we're testing the thing that runs Firefox tests. Part of your role will be to write more of these tests. While writing tests, you will naturally find areas in the Test Runner code that need to be improved or reorganized in order to be testable in the first place. This is what we mean by "test-driven refactoring". Other tasks might include:

  • Making the test results more informative and easy to read on Treeherder's log viewer.
  • Making the tests more convenient to run locally with mach.

In order to participate, the following skills are need:

  • programming in Python or other object-oriented language: you have written small, stand-alone projects yourself from scratch and you have used concepts like inheritance
  • some very basic experience with using command-line tools and any version control system
  • motivation and patience to read/understand lots of messy code/documentation and to ask lots of thoughtful questions about it

Aside from general Mozilla-contribution skills, you will learn:

  • More Python as well as Python libraries related to testing and logging
  • How Mozilla's release cycle and giant automation infrastructure work
  • How to write good tests and write modular, testable code

To get started, please follow these instructions.

Add robust AMI management to the TaskCluster AWS Provisioner

TaskCluster (https://tools.taskcluster.net) is a distributed task execution system Mozilla uses to build, test, and release Firefox. The AWS provisioner is the component responsible for managing the AWS EC2 instances that execute tasks. The project is to improve its management of AMIs, making them easier to create, deploy, and clean up.

For this project, you should have some programming experience in JavaScript, and be ready to learn more. You should know a thing or two about communicating with web services via HTTP APIs. And you should be familiar with Amazon's EC2 service (work through a tutorial or two if you haven't already).

Everything we do is open-source, and we love to see open-source contributions, so improve your chances with a link to your github account or highlight a pull request you are proud of. We would also love to see code (in any language) to talk to an HTTP API (for example, the Github API). Contributing to one of the projects under https://github.com/taskcluster will send your application to the top of the pile!"


Improving user experience of Firefox Accounts [no longer taking applicants]

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 you will be involved in improving user interaction, running experiments, and measuring success of certain features. Your 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. This will give you developer experience working with the Firefox Accounts UX team.
  • Experimenting with “Show Password” UX. Determining which design is more effective in terms of speed and popularity.
  • Improving the verification rate and speed of new users signing up for Firefox Accounts.

We have existing metrics infrastructure that will assist you in this task. You need strong skills and experience working with front-end JavaScript and CSS projects. It is good to have some node.js, git and Backbone.js experience.

To get involved:

Webcompat.com Web Application Engineer [no longer taking applicants]

"Webcompat.com Web Application Engineer

Mozilla's Web Compatibility team builds and maintains a web application 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.

What is Web Compatibility?

Web compatibility is about making sure web sites work consistently across all browsers and devices. Sometimes, sites have bugs or policies that prevent them from working well in every browser. We work to help web developers and site owners identify and fix such issues. And when Firefox is missing crucial standards features that sites rely on, we help communicate this back to the Gecko Platform.

In this Outreachy project, you will contribute to one or more of the following projects to help us succeed from a few different angles (depending on your interest).

  • Design and implement a system that allows site owners and developers to register for notifications (i.e., RSS, E-mail) for issues related to a given domain
  • Design and build a user interface that allows bug reporters to identify possible duplicate problems
  • Use cutting edge features like Service Workers to enable offline and sync capabilities between the client and server
  • Migrate webcompat.com front-end to use ES6 modules (likely powered by something like Babel)

Skills you will use (or develop!):

  • Python + Flask
  • SQLite
  • JS - both on the frontend and Node.js for tooling
  • CSS
  • UX and UI prototyping

To be successful in this Outreachy project, you should be comfortable with Python and relational databases -- we talk to SQLite via an ORM called SQLAlchemy. The more experience with JavaScript and CSS the better, but most important is the willingness to jump and in learn.

What you can do to get involved:

  • Clone the webcopmat.com repo at https://github.com/webcompat/webcompat.com/
  • Follow the instructions at CONTRIBUTING.md to set up a local build
  • Find a bug labeled ""good-first-patch"" and use it to familiarize yourself with the code base
  • Introduce yourself in the #webcompat IRC channel (and ask questions if you get stuck!)

If you find yourself wanting to work on some other issues or area of the codebase, check out the ""good-next-patch"" label as well!

Note: Issues with a "outreachy-project" label are intended to be possible projects for the Outreachy intern. Good to look at and think about - but not ready to work on just yet. :)

Content Process Management Tool [No longer taking applications]

"With multi-process Firefox going out the door in the very near future, we're looking at scaling up and tuning the number of content processes that Firefox starts and uses.

Memory usage is something we want to keep an eye on while we do this, so this project is about building a Content Process Management tool that can track real-time memory usage across each process. We might increase the number of uses of the management tool over time, but we'll start with memory management.

To be successful, this participant should be very comfortable with JavaScript, HTML and CSS. XUL experience would definitely be an asset, but is not required. Comfort with C++ would be useful as well - at least, the ability to read it and to learn what some C++ is doing, and to not be overwhelmed by it."

Develop REST/API automation tests for a voice interface for Project Vaani [No longer taking applications]

The participant would be involved with developing robust automation suites for existing and emerging Connected Devices projects, specifically Project Vaani.

Skills needed:

  • Basic proficiency in JavaScript
  • Basic proficiency in Java
  • Basic proficiency in C++
  • Familiar with Open Hab
  • Familiarity working with Raspberry Pi
  • Natural Language Processing testing methodologies
  • Understanding of black box testing and white box testing
  • Understanding of Webdriver 2/Selenium
  • Interest in learning more about Continuous Integration

Taskcluster tools UI/UX improvements [No longer taking applications]

Taskcluster is the new Mozilla CI that will in future be responsible to run every build and test for Firefox, Firefox TV, rust and other Mozilla projects. We are a small and passionate team engaged to make Taskcluster the best CI ever.

taskcluster-tools is a modern frontend for several tools and services provided by Taskcluster. If you are passionate about web frontend, this project is for you. During your internship, you will have a lot of fun hacking into the tools codebase to make a lot of UI/UX improvements.

The applicant must have good HTML, CSS and Javascript skills. Knowledge of React js is desired, but not required.

Automation of Taskcluster Documentation

Our task execution platform TaskCluster consists of many small services. We would like a system to which each component can upload its documentation in a reference format markdown for text, JSON for API references, etc. From the uploaded references we would then generate the entire documentation site.

By uploading documentation and reference files from the services, we can have it automatically update when we deploy new features. Services already uploads some formal JSON references, but this needs more structure.

Technically speaking:

- A node.js module for uploading a directory of JSON files + a manifest
- A service generating a static documentation site from uploaded documentation.

Useful skills:

- node.js
- HTML/CSS/JS (react.js would be nice to have)
- Some graphical design skills

This is not a project about writing documentation, most of it already exists. It needs automatic deployment and structure.

Fixing some papercuts in the Firefox desktop user interface

Firefox for desktop is used by hundreds of millions of people every day. We control how it works and what it looks like using CSS, XUL (a markup language that's a bit like HTML), and JavaScript. There's also a small amount of C++ here and there.

Some of the work will cover:

  • Improving entering and exiting of Reader Mode
  • Cleaning up the styling of our getting-started tour
  • Improving shadows of the dropdowns for the URL and search box
  • Increasing legibility of the menubar on Windows 8
  • Researching and improving the Windows 10 Start Menu tile for Firefox
  • Showing the Windows 10 accent color in the Firefox title bar

You'd mostly be writing JS and CSS, though being comfortable with some of the other technologies we use will be helpful. To gauge your JS and CSS skills, you should be able to comfortably explain how JavaScript's prototype inheritance works, the difference between a capturing and a bubbling event listener, and how the CSS box model works.

To get a feel for things before the project begins, you can open up the Browser Toolbox and ""inspect"" the UI of the browser. From there you can use MXR (http://mxr.mozilla.org/) to go from searching for some text on a button you see in the user interface to finding the code that is executed when the button is clicked.

Make Firefox look great on desktop! [no longer taking applicants]

Firefox for desktop is used by hundreds of millions of people every day. We control what it looks like using CSS, XUL (a markup language that's a bit like HTML), and JavaScript. There's also a small amount of C++ here and there.

For this project, we'd like your help to address a number of styling problems where Firefox does not currently look its best. First we would show you around the codebase we have. We'd show you how the JS, CSS and UI is organized, and some of the different configurations in which people use Firefox. You would then be responsible for things like:

  • Making sure the separators between Firefox's tabs look good and appear in the right places;
  • Fixing arrow panels to appear at a consistent distance from their anchor points;
  • Improving our support for Windows' High Contrast themes;
  • Adjusting the styling of complex toolbar buttons such as the bookmarks button;
  • Creating better-looking <select> popups in Firefox with process separation;

You'd mostly be writing JS and CSS, though being comfortable with some of the other technologies we use will be helpful.

Want to get started? You can:

Web Platform Test Crime Scene Investigation

"We run a lot of automated tests against each revision to Firefox’s code, and we verify that code changes do not cause tests to stop passing. One group of tests, called Web Platform Tests, is shared among all major web browsers, and we have only begun running them recently. As a result, we imported thousands of tests and marked some of them as currently failing, and they have languished in that state. Some of these failures are caused by Firefox not correctly implementing an edge case, while others may be very important problems - as things stand, it's hard to figure out which ones are which. We need your help cleaning up this mess!

In this project, you will:

  • identify the failures reported for a test file by running it and reading through the output, and perhaps investigating Firefox's behaviour using your favourite debugging strategies
  • file an issue in Bugzilla tracking this information in an appropriate component
  • either fix the failure or add useful information about the test failure to the bug and move on to a new test, with guidance from the mentors
  • repeat!

You will read lots of existing tests written in JavaScript (using the [testharness.js](http://testthewebforward.org/docs/testharness.html) framework), while fixing the failures will require prior experience writing C++. Use of a debugger (like gdb or lldb) is strongly encouraged when investigating the cause of test failures. The goal of this work is to understand the nature of our existing test failures, and solve the ones which are not too complicated and do not require any prior experience. Your work will allow other developers to focus on the complex failures in the future, and increase Firefox's conformance with web standards today! Additionally, you will gain experience with a number of the APIs that make up the Web platform.

What you can do to get involved:

Prototype new Firefox features with the Test Pilot team [no longer taking applicants]

The Mozilla Test Pilot team is seeking someone to join a small, enthusiastic team focused around rapidly testing new features in Firefox. The team's process is built around getting feedback frequently and directly from an active user base which allows rapid iteration of the feature design.

In this program, you will participate in a well-documented four step process:

  • Lo-Fi Validation: Sketches, ideation, paper prototypes, and user research.
  • Prelaunch: Define and build a minimum viable product, establish your testing protocols, and validate the research.
  • Active Testing: Launch and test your prototype, collect metrics and feedback, evolve and re-test.
  • Sunsetting: Analyze the tests and determine release platforms.

As this program is about rapidly evaluating potential new features, the specifics of what you’ll be developing this summer haven't been settled yet--but ideas are floating around security, privacy, tracking protection, and file transfer. Below are some examples of what the team is currently prototyping as of February 2016:

  • Universal Search: adding recommendations from sources around the internet directly into the Awesome Bar.
  • Tab Center: rethinking tab management by moving tabs to the side of the browser and making them easier to search.
  • Better 404s: Using the Internet Archive's Wayback Machine to replace 404 pages with an older version of the page.
  • Page Shot: Enabling smarter sharing of screenshots by copying DOM content as well.

Most of our development work involves writing Firefox add-ons, so you should be familiar with JavaScript, CSS, and HTML. Intellectual curiosity, enthusiasm, and interest in the Open Web matters more than your past experience.

Find out more and get in touch with us at https://wiki.mozilla.org/Test_Pilot

Past Outreachy/OPW internships

Complete List of Participants

ROUND 11

Lauren Conrad

Participant: Lauren Conrad

Based in: Rye Brook, New York USA. (For anyone who doesn't know, that's a suburb right outside New York City!)

Mentor: Joni Savage

"I am thrilled to be working for such a well known company and to be translating my writing skills into the tech world."

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

Project blog: www.laureneconrad.com

Roxana Ilie

Participant: Roxana Ilie

Based in: Bucharest, Romania

Mentor: Patrick McManus

"I am very excited to be joining the Mozilla Outreach Program because after enjoying so much using the browser, I will have the opportunity to give something back and use my knowledge in order to help the community to improve Mozilla Firefox."

Project: Battery Friendly Platform Networking Deadline Scheduler

Richa Rupela

Participant: Richa Rupela

Based in: Bikaner, Rajasthan, India

Mentor: Anne van Kesteren

"Super excited to work on Whatwg project, mentored by Anne van Kesteren. Mozilla Outreach program has given me a great opportunity of working with a such a elite community. Looking forward to an awesome winter where I will work on the HTML standards!"

Richa's project blog: https://richarupela.wordpress.com/

Project: Contribute to the HTML Standard!

Shweta Oak

Based in: Mumbai, India

Mentor: Alexis Metaireau

"I am extremely excited to be a part of an organization that is so instrumental in the development of the open web and get a chance to make contributions that enrich the lives of people."

Project: Kinto — Make instances discoverable

Jullie Utsch

Participant: Jullie Utsch

Based in: Belo Horizonte - MG Brazil

Mentor: Ilana Segall

“What makes me excited about Outreachy: Being part of a great community, sharing with incredible people and taking part in making the tech industry a little more diverse. :)”

Project: Visual Design with Research Data

Cynthia Anyango

Participant: Cynthia Anyango Based in: Nairobi , Kenya

Mentor: Karl Thiessen

"I am excited to join Mozilla for the outreach program especially the project I am attached to because I get to contribute to open source Mozilla services that make lives better"

Project: Enumerate (and Dockerize) the tests! (Quality Assurance)

Nikki Bee

Participant: Nikki Bee

Based in: Alberta, Canada

Mentor: Josh Matthews

"I'm excited at the chance to learn Rust and contribute to a major FOSS project, especially for an organization that has been as welcoming as Mozilla."

Project: Servo: Complete implementation of Fetch standard

My Lê

Based in: Paris - France

Mentor: Ricardo Vazquez

"Proud to be part of Mozilla Outreachy Program, sharing knowledge and contributing to the Open Web."

Project: Open Source Designer, Mozilla Foundation

ROUND 10

https://wiki.gnome.org/Outreachy/2015/MayAugust#Participating_Organizations

Thalia Chan (Tchanders), London, UK - Socorro crash statistics front-end development - Adrian Gaudebert

Alice Duarte Scarpa (adusca), Rio de Janeiro, Brazil - Integrate the ability to arbitrarily retrigger jobs into functional tools & production quality code - Armen Zambrano Gasparnian

Gloria Dwomoh (blossomica), Piraeus, Greece - Air Mozilla web design and development - Peter Bengtsson

ROUND 9

https://wiki.gnome.org/OutreachProgramForWomen/2014/DecemberMarch#Participating_Organizations

Lisa Hewus Fresh Portland, OR, USA - Air Mozilla Web Design and Development - Peter Bengtsson

Tessy Joseph (tessy), Kerala, India - One and Done - Rebecca Billings

Barbara Miller (galgeek), Portland, OR, USA - QA/Automation - Henrik Skupin

Adam Okoye (aokoye), Portland, OR, USA - SUMO/Input Web Design and Development - Will Kahn-Greene

ROUND 8

https://wiki.gnome.org/OutreachProgramForWomen/2014/MayAugust#Participating_Organizations

Francesca Ciceri (MadameZou), Massa, Italy - Bug wrangling - Liz Henry

Joelle Fleurantin (Queeniebee), New York, NY, USA - Maintaining the Gateway: Improving Mozilla Wiki through updating Information Architecture and Theme - Christie Koehler

Maja Frydrychowicz (maja_zf), Montreal, Quebec, Canada - Django development for One and Done - Liz Henry

Sara Mansouri (sara_mansouri), Saskatoon, Saskatchewan, Canada - Redevelopment of badges.mozilla.org and other contributor gamification infrastructure - Larissa Shapiro

ROUND 7

https://wiki.gnome.org/OutreachProgramForWomen/2013/DecemberMarch#Participating_Organizations

Isabelle Carter (ibnc), Springfield, MO, USA - Servo - Lars Bergstrom

Jennie Rose Halperin (jennierose), Carrboro, NC, USA - Community building - Larissa Shapiro

Jennifer "Nif" Ward (nif), Oberlin, OH, USA - Rust - Tim Chevalier

Sabina Brown (binab), Santa Cruz, CA, USA - SUMO (Support.Mozilla.org) community building - Ibai Garcia

ROUND 6

https://wiki.gnome.org/OutreachProgramForWomen/2013/JuneSeptember#Participating_Organizations

coordinators: Selena Deckelmann and Liz Henry

Gabriela Salvador Thumé (gabithume), São Carlos, São Paulo, Brazil - Socorro - Selena Deckelmann

Tiziana Sellitto (tiziana), Salerno, Italy - Bug wrangling - Liz Henry

ROUND 5

https://wiki.gnome.org/OutreachProgramForWomen/2013/JanuaryApril#Participating_Organizations

Lianne Lee (llmelon), Sydney, Australia - Release metrics dashboard - Lukas Blakk