Intent to Implement: Firefox IDE service

published

#1

(This email was sent to Mozilla’s tools mailing list.)

Dear Firefox tooling community,

Janitor, the zero setup, browser based development environment, has already made it easy for ~300 people to contribute to Firefox, Servo, Thunderbird, Chromium, KDE, Kresus and Janitor itself. It does this by eliminating the complexity that we have in setting up a development environment and reducing it down to a single click.

It uses Cloud9 IDE + noVNC as front-ends, and Docker containers as back-ends (here is a short video). The environment images are updated every day, and new containers are created on-demand from the website in just a few seconds.

This gets new contributors making contributions that we care about more quickly: Instead of the minutes/hours/days usually needed to bootstrap these projects, it just takes 2 seconds to get a working environment.

Now we want to go even further by leveraging this platform to solve key software development issues encountered by more experienced Mozilla developers. Please help us by listing the problems that you encounter in your daily work in this document.

To seed this discussion, we’ll slightly abuse the “Intent to Implement” email format. Here goes.

Summary

We want to build a “Firefox IDE” web service that automates the setup and maintenance of development environments for Firefox and Servo, providing containers that are quick to startup and that integrate the tools our developers need to produce high quality code without wasting time setting it all up.

Firefox IDE will provide a developer-friendly cloud environment that ties together:

  • Services like Janitor, Bugzilla, Phabricator and TaskCluster (among others),
  • Tools like gdb, rr, clang-tidy, eslint, clippy, ripgrep…,
  • Code coverage and static analysis feedback, directly in the code editor.

This will help automate time-consuming Firefox development workflows, and will ease access to the most powerful Firefox tools & services from a single location: an efficient IDE web front-end connected to auto-configured Docker containers.

Non-goal: We do not aim to replace local development setups with something new, but instead we wish to complement our current services offering with a developer service that brings live software development much closer to the Firefox CI infrastructure, and that offers convenient access to specific tools and workflows which might be harder to set up locally.

Timeframe

We start by collecting key problems encountered by experienced Mozilla developers while working on Firefox and Servo in this document.

We will then work on solving the most compelling problems (with the highest estimated return on investment, based on feature interest and feasibility) and present a minimum viable “Firefox IDE” service to address the selected problems by the end of Q3.

After that, we hope to invite all Firefox and Servo developers to a Beta of this service; continue collecting feedback and address more problems from our list; and demo our solutions during the All Hands in Cancun.

Tracking progress

Firefox and Servo development problems: https://docs.google.com/a/mozilla.com/document/d/1KmIURMgpAPBi8Bkramo8ITr0fAH1f3XFYLl2hzv0s8M/edit
Repositories on GitHub: https://github.com/JanitorTechnology/
Issues and milestones: https://github.com/JanitorTechnology/janitor/issues
IRC: #janitor on Freenode: https://kiwiirc.com/client/irc.freenode.net/?#janitor

Thanks!
Jan