Janitor Alpha 0.0.7 is Live February 2017

What better day to release Janitor Alpha 0.0.7 and the new MOZ1 backend server than on a Friday?

"All of these improvements should be live by the end of the week, and all new invite emails should be sent out by that time as well."
Famous last words from last week's newsletter.

1) How do I try this?

Simply log in to janitor.technology, click on any of the supported projects and start hacking.

If you don't have an account yet, the Alpha invite process is bit complicated (but we're working on making it much simpler). You will receive two emails:
- one to create a free Cloud9 account (no credit card required),
- and another to access your Janitor account.

Please carefully read the steps in the "Janitor Invite" email, as they explain how to properly link Cloud9 IDE so that you can use it to hack on Firefox, Servo, Chromium, Thunderbird, KDE (and more projects coming soon) directly from Janitor. If you don't do it, it won't work.

2) New backend server!

The Janitor service now runs on two very powerful Docker servers:
- IRILL which is located in Paris, and will continue to host open source projects,
- MOZ1 which is located in California, and will host all Mozilla projects going forward.

MOZ1 is a brand new AWS EC2 instance sponsored by Mozilla, which has 16 CPUs, 32GB RAM, 1TB disk space and that can build (from scratch):
- Servo in 08:27,
- Firefox in 11:10,
- Thunderbird in 12:19 (all clobber build times are from today).

The new project images also contain a few surprises for you:
- a Terminal prompt with colors, Git completions and a fancy branch indicator,
- cool scripts: `z` to navigate faster and `rg` to grep faster,
- the official `hub` script to interact with GitHub repositories,
- and a hidden feature as well (more about it soon).

MOZ1 is very recent (activated today) so if you started a Janitor contribution before, chances are it's still hosted on IRILL. If you want to try the new, even faster MOZ1 server, you'll need to back up your work, delete your previous contribution (and its associated workspace on Cloud9) and click on any Mozilla project again. You'll then automatically land in a new Docker container hosted on MOZ1. (If Cloud9 doesn't work instantly, please wait a few seconds and refresh the page.)

A huge thank you to everyone who helped ship Janitor Alpha 0.0.7 by writing code, reviewing code, solving problems, or finding more problems! (Please report any new bugs here or here.)

With love,

Janitor News #7 February 2017

Happy 2017 everyone!
This is your recurrent burst of good news about the Janitor.

1) What's new in Janitor 0.0.7?

We're about to release our biggest update yet, "Alpha: Mark 7". It took six months of dedicated efforts, touched almost every line of our code, and will greatly improve our ability to scale by adding more servers to what is now becoming a distributed system.

This means that our resource shortage is almost over, and that we'll finally be able to send out new invites (and also update all project images more frequently). We know that many of you have been waiting to try the Janitor for months now, and we would like to acknowledge that and thank you for your patience. We hope you'll enjoy what we built for you.

Here is a list of changes made since Janitor 0.0.6 (released September 2016):

- Upgraded the Janitor source code to ECMAScript 6
- Updated all project images with the latest sources and the greatest tools (clang 3.9, git 2.11, hg 3.7, vim 8, rust 1.15, node 7.5, rr 4.5, hub, rg, z, …)
- Implemented several important security features
- Implemented an OAuth2-based Single-Sign-On to work transparently across all Janitor hosts
- Started implementing a self-documenting and self-testing JSON API
- Implemented an RSA helper to generate certificates on the fly for SSH, Docker/TLS and HTTPS (automatically signed by Let's Encrypt)
- Automated all server initialization tasks, making most of the Makefile obsolete
- Automated all cluster-joining tasks in a separate helper script (which will eventually allow adding your own servers with a single command and support your own projects on Janitor)

All of these improvements should be live by the end of the week, and all new invite emails should be sent out by that time as well.

2) Announcing Firefox IDE

Now that we've laid the foundation for a fast, powerful and ever-growing container service for developers, it's time for Janitor to enter a new phase. Now we would like to automate the development processes of every major open source project out there, starting with Firefox.

We plan to empower Firefox developers by integrating relevant tools, services and workflows directly in Janitor's IDE, in order to make them discoverable and easy to use, from a single web interface that can be accessed from anywhere instantly. Contrary to other, more general-purpose development tools, we aim to be highly specialized by implementing all the processes and best practices specific to the Firefox project.

We will start by building Cloud9 plugins to update bugs on Bugzilla; trigger new jobs on TaskCluster; send contributions to Autoland; send push notifications about a patch's progress all the way from review, to automated tests, to finally being merged into the central repository; and augment the IDE's code editor with static analysis and automatic code quality suggestions based on amazing tools like clang-tidy. You can participate in this process by reviewing, contributing or implementing ideas in this GitHub issue.

And if this Firefox IDE experiment is successful, we will create similar IDEs for Servo, Rust, Chromium, Thunderbird, KDE, and all other open source projects that Janitor will support.

That's all Folks! As always, previous newsletters can be found on our blog, and if you have the time, please drop by to say hi in our very own IRC channel (on freenode).

Peace out,

Janitor News #6 November 2016

This is your monthly* burst of good news about the Janitor.

* Well ok, this is actually more of a quarterly thing at the moment, but that doesn't mean nothing is happening—in fact quite the opposite is true. See for yourself:

1) Janitor & Mozilla's A-Team

In September, I officially joined Mozilla's Engineering Productivity team (also known as "A-Team") to help boost the productivity of developers working on Mozilla's software projects.

If this sounds like the Janitor to you, then you're spot on! In fact I'm now working full-time on improving the Janitor, with the support of some amazingly talented A-Team folks, and with the goal of making contributions to Mozilla's projects like Firefox, Servo and Rust (coming soon) much faster and easier for everyone.

And because Mozilla is awesome and a fierce supporter of Open Source in general, non-Mozilla projects like Chromium and KDE will continue to be supported, and we won't stop there—over the next months we'll continue adding more and more amazing projects to the Janitor, like for example Git, Mercurial, Vim, Clang, and one day maybe even the Linux Kernel. The Janitor's long-term objective is to make open source contributions a breeze for everyone, anywhere in the world.

2) Say hello to Docker Host 2

Due to a swift increase in popularity over the last months, the Janitor's back-end resources became saturated much faster than expected. After a quick datacenter visit to install a new 1 TB drive on Docker Host 1 (which is now 98% full), we realized that adding more disks wouldn't help much longer.

So we re-designed the Janitor from the ground up and turned it into a multi-server cluster, which will allow the service to grow significantly over the coming months.

This is the Janitor cluster today:
- Docker Host 1 (16 CPU, 64 GB, 1 TB) hosted by IRILL in a French datacenter,
- Docker Host 2 (16 CPU, 32 GB, 1 TB) hosted by Mozilla on an EC2 instance.

Everything is still hosted on Docker Host 1 (98% full), but all Mozilla projects (about half of the entire load) will be gradually and seamlessly migrated to Docker Host 2 soon. This will free up resources to support more users and projects, and will enable more frequent image updates as well as some overdue server maintenance.

We've also put special efforts into completely automating the addition of new hosts, from automatic TLS and Let's Encrypt certificates to cluster discovery and software updates, so that adding more resources becomes quick and easy. We could even make the cluster grow automatically following demand now.

If you're one of the almost 40 people still on the waitlist, we're so sorry to keep you waiting. We worked relentlessly on building a cluster with more resources, and we're happy to announce that the waiting is almost over—new invites should be headed your way over the coming weeks.


A cool spin-off from the cluster effort is the JSON API we designed to automate all things Janitor. It's based on Self API, a system that can automatically document and test API functions against their own examples, removing the need to maintain separate documentation or test suites.

The resulting API documentation will soon be available on the website, and anyone interested in using it will be able to do so using the website's password-less authentication, or dedicated OAuth 2 access tokens.

4) Even more news

- On November 5, there was a Rust / Servo hackathon with Janitor support at the 
Coredump hackerspace in Zurich.
- On November 12, Patrick Trottier gave a great talk about open source contributions and the Janitor at GDG DevFest in Sudbury. Here are his slides and a video.
- On December 7, I will present a few Janitor-based productivity hacks at the Mozilla All Hands in Hawaii.
- We're currently evaluating how many contributions we've enabled. If you shipped code using the Janitor, please send us links to your contributions so we can count them.
- We recently published an NPM module which will eventually allow running private cluster hosts to support your own software projects on the Janitor (coming soon™).
- We would like to open a Discourse. If you know how that works and want to help, please reach out.

And this wraps up today's news! If you like to review code, you're welcome to pick a Janitor commit and post feedback on what you don't like or don't get about the code. Many thanks!

Until next time,

Janitor News #5 August 2016

We hope that you've enjoyed a hot and relaxing summer. It's time to resume your monthly burst of good news about the Janitor.
1) A New Order of Magnitude
Earlier in June, the Janitor greeted its 100th user, and we're now growing fast into the three digits. Today, there are 189 of us, and we've collectively landed 31 official code contributions to the 5 supported software projects. Most of them went to Firefox, with Chrome a close second. (Note: If you've made a contribution using the Janitor, please tell me, they're hard to keep track of!)
Thank you so much for all your enthusiasm and help. It's been an incredible journey so far, but the most exciting is what's yet to come.

2) What's Next
At Mozilla we're currently in talks with Cloud9 to make their IDE even better for Firefox development. We'd love to build a dedicated ide.firefox.com service (domain pending) that would be accessible to any developer in just a single click. Then we'd like to expand this concept to other projects, with additional services like ide.servo.org and ide.rust-lang.org (domains pending) that should all work seamlessly with the Janitor. And to support these at scale, we'll move your back-end Docker containers onto a more powerful cloud platform.
Expect open source contributions to become ever easier with the Janitor, thanks to quick and intuitive UX integrations. For example, you should soon be able to send a patch for review directly from your IDE interface, or trigger an automated test run on your code, or even debug it step-by-step to look for bugs, and all these helpers will work simply with the click of a button.

3) Fixing Account Problems
A few things have changed in the way Janitor Alpha accounts are set up. A separate Cloud9 account is still required, but it appears that Cloud9 asks for your credit card now, even for free accounts. I don't know why they chose to do this, but I'm sorry for that experience.
If you're having trouble getting the Janitor to work, please make sure that you've added both your Cloud9 username and Cloud9 SSH public key to your Janitor account. Adding your username will enable your Cloud9 account to work with the Janitor (this can take a short while, because I need to add you to our sponsored Team Account manually) while adding Cloud9's SSH public key will authorize their IDE to access your Janitor environments via SSH (without that, the IDE part won't work).

4) Janitor Events
Here is a recap of all Janitor-related events that happened since the last newsletter, or that will be coming soon.
June 13-17, 2016: Mozilla All Hands in London
- I held two sessions where Mozillians could learn more about the Janitor. High five if you were there!
- Here are the slides I presented.
- The room was not equipped for recording, but we shot a video anyway.
August 27, 2016: Gecko Inside in Tokyo
- During the next monthly community event at Mozilla Japan, there will be a Firefox Hackathon.
- Mantaroh will tell attendees about the Janitor, and anyone interested will be able to try it.
October 28-30, 2016: MozFest in London
- Each year, the Mozilla Festival is abuzz with exciting people and sessions.
- I offered to host a Firefox contribution workshop using the Janitor.
- I'll let you know if they accept.
And that's it for today. If you missed any previous "Janitor News" email, they're now permanently available here.

Stay tuned for more progress soon,

Janitor News #4 May 2016


This is your monthly burst of good news about the Janitor.

1) Welcome to 27 new users!

We're so happy to have you. Our small community of pioneers and cloud-development enthusiasts is growing fast, there are almost 100 of us now.

- Look for the "Janitor Invite" email, it contains a link to your Janitor Alpha account.

- Reminder: The Janitor currently requires a Cloud9 premium feature. Please send me your Cloud9 username, so that I can request a free upgrade for you (otherwise, you'll see errors like "SSH workspaces are a premium feature").

2) Major Dockerfiles upgrade

We recently finished a complete overhaul of all Docker images. Here is what changed:

Across all images:
- Ubuntu 14.04 Trusty → 16.04 Xenial
- Git 1.9.1 → 2.8.2 (a lot faster, especially for large repositories)
- Node.js v5.6.0 → v6.1.0 (now with ES6! also npm 3.6.0 → 3.8.6)
- Clang 3.4 → 3.9
- Ability to use `sudo`
- Pre-opened `xterm` window in noVNC

- Mercurial 2.8.2 → 3.7.3
- ESLint pre-configured (works with `./mach eslint path/to/sources`
- Latest moz-git-tools (upload patches with `git bz`, try them with `git push-to-try`)

- Switched build configuration from GYP to GN
- Disabled SUID sandbox to allow running out-of-the-box
- Now with pre-compiled binaries in every image update

- Now able to run graphically in noVNC with `./mach run -w`

- noVNC goes straight to Plasma desktop, without Fluxbox

I will also upgrade the Janitor's Docker daemon to a newer version, but if everything goes as planned you won't notice a thing (except more frequent image updates and even faster spawns).

3) Janitor events

We already had a few events about the Janitor, with more to come in the near future:

- Daniele showed these amazing slides about the Janitor.
- Participants used the Janitor to fix 10 bugs in Firefox.
- Michael published a nice blog post about their experience.
- Thank you for all the great feedback!

May 2016: JSConf Budapest
- Flaki hosted me at the Mozilla Hackerlounge there.
- I demoed the Janitor and Cloud9 IDE during all 3 days.
- We got very excited and exchanged a lot of ideas.

- I will give a Platform Lightning Talk to pitch the Janitor.
- There will also be a full session about the Janitor later in the week.
- Please come by and say hi!

That's all I could fit into an email, but there is a lot more going on in our Janitor and Dockerfiles repositories, and in our very own IRC channel.

Until next time,

Janitor News #3 April 2016


This is your monthly burst of good news about the Janitor.

1) Moar invites!

Thanks to a recent upgrade sponsored by Cloud9, the Janitor can now accept more users to its Alpha. Hooray!

- If you're not invited yet, you should receive a "Janitor Invite" email soon, with instructions on how to access your account.

- If you're invited, but see this error: "SSH workspaces are a premium feature", please send me your Cloud9 username so I can upgrade you for free, thanks to Cloud9's new sponsoring (yes, they're that awesome).

2) Optimizing the IDE (coming soon)

I'm currently working on adding new project-specific buttons to your Cloud9 IDE interface, allowing you to quickly:

- Update to the latest source code
- Build any changes you've made to it
- Run the project and try your changes live
- Send your changes to an automated test server
- Upload a patch to be reviewed by a project owner

… all in a just single click! If you'd like to help, please reach out.

3) Signing in with GitHub (coming soon)

Enabling GitHub sign-in for the Janitor will have the following advantages:

- It's a cool and fast way to sign in
- The Janitor can automatically grant access to all your public SSH keys
- It can also register a Janitor key, so you can push to GitHub more easily

4) Upgraded Docker images (coming soon)

The project-specific dockerfiles used by the Janitor will soon be based on a new common base image, which will bring the following improvements to your contribution environments:

- Upgrade Ubuntu from 14.04 to 16.06
- Latest and fastest versions of Git and Node.js
- VNC sessions will already have an `xterm` open for you
- You will be able to use `sudo`

That's all I could fit into an email. To learn more about what's going on with the Janitor, have a look at our GitHub issues, or come say hi in our IRC channel!


Janitor News #2 March 2016

Hi there,

Thanks a lot for being a pioneer in trying to change the way we do software development! The Janitor's alpha version is doing great, and things are already shaping up fast toward the beta.

It's very exciting to see this vision becoming reality, and you're making it happen. The Janitor currently has 31 confirmed users (15 on waitlist) and supports 6 large open source projects (source).

# Scaling to Multiple Servers

The back-end code is currently being rewritten to use the Docker Remote API. This will allow exciting improvements, like running multiple Docker servers in parallel, and more control for you on your contributions.

Warning: I will do my best to make this transition seamless, but there is a slight risk of losing some containers in the process. Please back up your work!

# Project Dockerfiles

All the projects available on the Janitor have a Dockerfile that describes a Linux environment suitable for their developers. Writing one is basically all it takes to add a new project to the Janitor. A few examples:

Chrome dockerfile / build times / image size.

# More Invites Coming Soon

Invites used to work like this: Users created a Cloud9 account, I asked Cloud9 to upgrade them to premium for free, and finally I sent out a Janitor invite. While this was great to get started quickly, it obviously doesn't scale. I'm currently working with Cloud9 on a better solution that won't require premium accounts.

It goes without saying that the Janitor will always be free for open source contributors, but in the meantime if you already have a Cloud9 premium account, please let me know (I can invite you right now).

That's it for today! If you have any question, or if you'd like to help, please reach out. The Janitor is on GitHub, and we also have an IRC channel on freenode.

Keep in touch,

Janitor alpha is here! February 2016

Good news everyone!

https://janitor.technology is now open for business, which means that you can use it to hack on cool projects like Firefox, Thunderbird and Chrome, and all directly from your browser!

[ Obligatory celebration GIF ]

1) You're invited!

You should receive a follow-up email with instructions on how to access your free and unlimited Janitor account.

Reminder: This currently requires a Cloud9 premium account. If you still do not have one, please create a free Cloud9 account and send me your username, so that I can request a free premium for you. Cloud9 has offered to upgrade all Janitor users for free, which is awesome and insanely generous!

2) What is Janitor?

The Janitor allows you to develop software using only a web browser, without having to install any tools or do any compiling on your own computer.

It works by creating personalized, full-featured development environments (Docker containers) for any given project, and lets you access these environments via Cloud9 IDE for code writing, or via noVNC for a graphical desktop interface.

More details in this excellent demo video we made with my good friend Baptiste.

3) Supported projects

You can hack & build the following projects in Cloud9 IDE, and run them graphically in noVNC (using right-click to launch XTerm):

- Firefox
- Thunderbird
- Chrome
- Cozy (early developer preview)

Also, adding a new project is as simple as writing a Dockerfile for it! If there is a particular software project that you'd like to see on the Janitor, let's work together and make it happen.

Happy hacking!

Janitor News #1 January 2016

Happy 2016 everyone!

I hope you had a great 2015, and I wish you all the best for this upcoming year.

1) Alpha version is coming!

With this, I'll finally be able to send each of you an invite for a free and unlimited account on https://janitor.technology.

This past month I implemented basic support for Dockerfile instructions, successfully automating the creation of Docker images & containers. This means that the projects listed on https://janitor.technology will generally stay "fresher", and that you'll be able to open them in fully-functional development environments with just a single click!

To follow my progress on this upcoming milestone: https://github.com/janitortechnology/janitor/milestones/alpha

2) Free Cloud9 premium accounts

- Please create a free cloud9 account at https://c9.io/web/sign-up/free
- Please send me your cloud9 username, so I can request a free premium for you

The Janitor uses Cloud9 IDE to let you hack on Firefox / Chromium / Thunderbird / etc, by automatically setting up SSH workspaces in your https://c9.io profile.

For this to work, I recently noticed that you need a cloud9 premium account (thanks Daniele and Etienne for checking!). Luckily, you won't have to pay anything, because the Cloud9 team has generously offered to upgrade all Janitor users to premium for free!

3) Useful links

You can follow progress on the Janitor by visiting:

- The Janitor: https://janitor.technology
- The project on GitHub: https://github.com/janitortechnology/janitor
- The currently open issues: https://github.com/janitortechnology/janitor/issues

4) Project pipeline

I'm aiming to make the Janitor the fastest and easiest way to contribute to, in order or priority:

- Firefox
- Google Chrome
- Thunderbird
- Cozy.io

With hopefully many more to come! (Once everything is in place, adding support for a project will be as quick as writing a new Dockerfile.)


Janitor News #0 November 2015

Hi all,

Thanks a lot for subscribing to the Janitor! Your interest has been very encouraging.
Here are a few updates on what's been going on:

1) First invites coming soon!

In the near future, I will send each of you an invite for a free and unlimited account on https://janitor.technology.

Before I can do this, I need to finish up these few things:
- Auto-provision Docker instances (today I'm doing it manually)
- Make the graphical remote desktop secure (a simple authenticated HTTPS proxy will do)

2) Useful links

You can follow progress on the Janitor by visiting:

- The Janitor: https://janitor.technology
- The project on GitHub: https://github.com/janitortechnology/janitor
- The currently open issues: https://github.com/janitortechnology/janitor/issues

3) Project pipeline

I'm aiming to make the Janitor the fastest and easiest way to contribute to, in order or priority:

- Firefox
- Google Chrome
- Thunderbird
- Cozy.io

With hopefully many more to come! (Once everything is in place, adding support for a project will be as quick as writing a new Dockerfile.)

4) Feedback welcome!

If you have any questions about the Janitor, ideas to share, or if you'd like to help out, feel free to shoot me an email!

Thanks again for your interest in the Janitor!