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.
  • mozphab contains the deployment scripts and configuration for our Phabricator installation. The files are a mixture of Python, PHP, shell scripts, and config files.
  • bmo-extensions is a docker-based development environment for our Bugzilla-Phabricator integration pieces.
  • conduit-docs contains the source for the docs you are reading now.
  • autoland-transplant is a tool that automatically lands patches from one Mercurial tree to another.
  • suite allows you to connect and run all above services in a local development environment.