ReleaseEngineering/Contribute

From MozillaWiki
Jump to: navigation, search

Mozilla's Release Engineering team is responsible for the project's build, test, and release pipeline. 'Releng' deals with problems at great scale, and there's always room for new contributors!

What is Release Engineering?

"Release engineering deals with all activities in between regular development and delivery of a software product to the end user, i.e., integration, build, test execution, packaging and delivery of software" From the RELENG 2014 Workshop

"Release Engineering As A Force Multiplier" is a talk given by Mozilla's former Director of Release Engineering and is a highly recommended introduction to the field.

Release Engineering at Mozilla

Release Engineering at Mozilla is concerned with building Mozilla's release pipeline - the infrastructure that takes the work developers do on our products and delivers it to our customers. This involves being responsible for Mozilla's build and test infrastructure, ie. continuous integration. Release Engineering at Mozilla works to make everybody else to be more efficient and more effective, thus allowing a relatively small organisation like Mozilla to compete with corporate giants and advance Mozilla's mission.

On a day-to-day basis, Mozilla's release engineers write Python applications, maintain the pipeline, and configure & wrestle thousands of servers.

Contributing to Releng

We're always looking for new contributors to help us advance the open web! If you have experience in Python, system administration, or configuration management - or you're looking to learn - we'd love to have you onboard.

Mozilla's Release Engineering team is highly remote and distributed, and we live online. Our timezone spread means that there will always be someone online to help you contribute to the open web.

Getting Started

Lots of projects have now begun to use Tupperware, but there are many others that are yet to make this move. If you're interested in contributing to Release Engineering, find a project or bug you like and that'll help decide whether you need to setup and run Tupperware.

If your project does not use Tupperware, feel free to leave a comment in the bug asking how to get started.

We'll reply soon. We promise :)

Tupperware

The quickest and easiest way to get up and contributing with Release Engineering is by running Tupperware

Great for keeping an unpolluted development environment, testing patches and enabling new contributors to join the effort by lowering the barriers to entry (being one of the biggest deterrents to potential new contributors).

Vagrant is used as a quick and easy way to provision the docker apps and make the setup truly plug n' play. The current setup only has a single Vagrantfile which launches BuildAPI and BuildBot, with their dependency apps RabbitMQ and MySQL.

First Projects

Mentored Bugs

The Mozilla Project has the idea of a 'Good First Bugs' and 'Mentored Bugs'. A 'Good First Bug' is a bug which has been marked as a good first step into the Project and a 'Mentored Bug' is a bug which an experienced contributors has marked as one they will help a new contributor to fix.

Here you can see RelEng good first bugs.

Mozilla Releng has both! You can see a list of them here. Don't be discouraged if you don't understand much (or anything!) about the bug, that's completely normal. Just ask for help and you'll be a contributor in no time.

RelengAPI

RelengAPI is our new interface to Release Engineering services. It's a Flask application, with services registered on it as blueprints. We're aiming for it to be a modern, scalable architecture for the services we provide.

We're building new services on top of it, and porting old ones to the new structure. Porting an existing application could be a great way to gain familiarity with a big chunk of the existing architecture at your own pace.

Plenty of documentation exists, and there's a example and template application available.

Ask the team how you can help, there's always a bunch to do!

Further Information

This page is only intended as a starting guide, more information can be found starting from the main Release Engineering page or from the sources below.

IRC

Come find us in irc.mozilla.org channel: #releng with your questions, we want you to be able to successfully work on code and submit useful patches so don't be afraid to ask about whatever is blocking you.

Planet Releng

To help the team keep in touch with each other and contributors, many members of Mozilla Releng write regular blog posts on what they're doing. You can find an RSS feed of those posts here.

Highly recommended is the 'This Week in Releng' series, which is a round-up of what the team have been up to in the past week.

Glossary of terms

If you ever feel lost with all the jargon around you, here's a handy reference (Google doc) .