Contributing to Conduit

General Guidelines

We appreciate any contributions to the applications that make up the Conduit system. There are some common tools, processes, and guidelines that most of the Conduit apps follow. Each application also has specific setup instructions; see the individual Conduit Repositories.

We’ve created the Suite project to simplify the integration of all containers within the developer’s machine.

Bugs

We use Bugzilla for bug tracking, even for those repos hosted on GitHub. Although Bugzilla is a heavier-weight tool than GitHub issues, it provides us with better tracking and coordination, along with support for security bugs and other confidential information. Most bugs belong in the Conduit product, with the exception of the PhabBugz BMO extension.

Code Review

We use our Phabricator instance for code review, even for those repos hosted on GitHub. It is tied to our Bugzilla instance for both identity and issue management. See the Mozilla Phabricator User Guide for more information.

Note

Please test your code before creating a revision in Phabricator.

Technologies

We have a wiki page detailing the tech stack we have chosen. Although it is, and will always be, a work in progress, it lists both our chosen technologies and reasons behind them. New Conduit applications are expected to follow these guidelines unless there is good reason to deviate, which should be discussed with the Conduit development team.

Conduit Repositories

The source code for most Conduit applications lives on GitHub.

  • lando-api has the main logic of the custom automatic-landing system that has been integrated with our Phabricator instance.

  • lando-ui is a separate web application that is the main graphical user interface to lando-api.

  • PhabBugz, the BMO extension that maps BMO security policy to Phabriator and other such integrations, is a directory within the monolithic BMO repo. As with the rest of BMO, it is written in Perl.

  • phabricator-extensions contains our Conduit extensions to Phabricator, which mainly relate to integration with BMO. As with Phabricator itself, these are written in PHP.

  • Phabricator contains our custom fork of Phabricator. The files are a mixture of Python, PHP, shell scripts, and config files.

  • moz-phab contains the moz-phab tool to submit patches for review on Phabricator.

  • mots contains the Module Ownership in-Tree System, which defines modules and their responsible code paths in the source tree.

  • conduit-docs contains the source for the docs you are reading now.

  • suite allows you to connect and run all above services in a local development environment.