Engineering Workflow/Road Map: Difference between revisions

Commit series work
(include revision-stack landings in "Lando for All")
(Commit series work)
 
(4 intermediate revisions by the same user not shown)
Line 5: Line 5:
== Current ==
== Current ==


=== Phabricator integration ===
=== Better support for commit series in Phabricator and Lando ===
 
Although our [[Phabricator]] instance has been up since September 2017, there has been ongoing work to integrate it into our tools, most notably [[BMO]].  There is a tracking bug ({{bug|1381498}}) for the remaining work before we announce general availability and start encouraging people to move over.


The last remaining item of note is forking Arcanist so that it works with git-cinnabar ({{bug|1443375}}).
The official command-line interface for Phabricator, Arcanist, does not meet the needs of engineering when it comes to first-class support for submitting, updating, and pulling down series of commits.  Lando also does not currently support the atomic landing of an entire series of commits.  We will build a new command-line interface to Phabricator and extend Lando to better support standard Firefox engineering practices.


Impact:
Impact:
* One sole tool for review allows the Engineering Workflow to concentrate its efforts, and eliminates the need for contributors to learn several tools.
* Efficiently submit and update commit series, encouraging smaller commits.
* A more intuitive interface than BMO and MozReview, with a contemporary look to appeal to new contributors.
* Smoothly land commit series, avoiding repetitive clicking and the possibility of merge conflicts.
* Some integration with existing tools and processes, balancing complexity and disruption.
* Eventually, ease the contribution pipeline by not requiring the installation of Arcanist, which can be annoying on some platforms (primarily Windows).
* Excellent support from Phabricator's developers ([https://phacility.com Phacility]) and a large user community.


=== Lando initial release ===
=== BMO Auth0 Integration ===


[https://lando.services.mozilla.com Lando] is the new automatic code-landing tool integrated with Phabricator.  It is (or at least will be) functionally similar to MozReview's Autoland but is designed to be more maintainable and extensible by being less tightly coupled to the review tool.
Our Bugzilla instance will be tied into Mozilla's Auth0 IAM system, which will allow the linking of BMO accounts to LDAP, Mozillians, etc.


Impact:
Impact:
* One-button landing offers an easier way to land code and minimal context switching from reviewing code.
* Easily identify employees, NDAed volunteers, and other contributor groups.
* Queued landings due to tree closures means developers don't have to be around when they open to land their code.
* Applications integrated with BMO, e.g. Phabricator, can access users' LDAP accounts and other Mozillian data.
* Becomes a common gateway to mozilla-central (and other repos) which allows more process and security improvements (see below).
* Applications already integrated into Mozilla's IAM system can access Bugzilla user data.
 
=== Transplant internal improvements ===
 
The Transplant service is the engine that takes diffs from Phabricator (via Lando) and, until its retirement, MozReview and lands them in the destination repository on behalf of a user.  There is some design debt in its architecture and deployability that will benefit future work on related services (particularly Lando).
 
Impact:
* Lower maintenance costs.
* Easier to develop locally.
* Better support from operations.


=== Vendor manifests ===
=== Vendor manifests ===
Line 72: Line 60:
== Next ==
== Next ==


=== BMO Auth0 Integration ===
=== Transplant internal improvements ===


Our Bugzilla instance will be tied into Mozilla's Auth0 IAM system, which will allow the linking of BMO accounts to LDAP, Mozillians, etc.
The Transplant service is the engine that takes diffs from Phabricator (via Lando) and, until its retirement, MozReview and lands them in the destination repository on behalf of a user.  There is some design debt in its architecture and deployability that will benefit future work on related services (particularly Lando).


Impact:
Impact:
* Easily identify employees, NDAed volunteers, and other contributor groups.
* Lower maintenance costs.
* Applications integrated with BMO, e.g. Phabricator, can access users' LDAP accounts and other Mozillian data.
* Easier to develop locally.
* Applications already integrated into Mozilla's IAM system can access Bugzilla user data.
* Better support from operations.


=== Lando for All ===
=== Lando for All ===
Line 96: Line 84:
=== Intent-to-land ===
=== Intent-to-land ===


=== cinnabar-less Git(Hub) gecko-dev support ===
=== Vanilla (cinnabar-less) Git support for mozilla-central ===
 
git-cinnabar was created to allow developers to use Git to interact with Mercurial, mainly [https://hg.mozilla.org|hg.mozilla.org].  It has some downsides, however, such as being a bit tricky to install.  Ideally developers would be able to use vanilla Git to contribute to Firefox.
 
If we view Phabricator and Lando as a conduit to getting code into mozilla-central, then ultimately VCS clients would only need to talk to Phabricator.  Phabricator natively supports both Mercurial and Git<sup>[[#vcs-parent-note|1]]</sup>, and full Lando support means that developers will not need to talk to hg.mozilla.org directly.  We just need to ensure that the user experience of submitting a patch in progress to Try remains as straightforward as it is today.
 
Impact:
* No need to maintain nor educate people on git-cinnabar.
* End to unproductive VCS debates.
* Solidifies Phabricator-Lando as the conduit to hg.mozilla.org; this consolidation will make it easier to add more services and automation to the commit pipeline.
 
<div id="vcs-parent-note><small>
1. There is one wrinkle in supporting two VCSes for the same repository: like figuring out parent commits when a different VCS is used to pull down commits; see {{bug|1443375}} for how this was solved with git-cinnabar.</small></div>


=== Lando headless client API support ===
=== Lando headless client API support ===


=== Lando and Phabricator backout support ===
=== Lando and Phabricator backout support ===
=== Lando Git support ===


===  Run tests from source directory in local and ci builds ===
===  Run tests from source directory in local and ci builds ===
Line 113: Line 111:


=== Artifact caching experiments for builds ===
=== Artifact caching experiments for builds ===
== Done ==
=== Phabricator integration ===
The bulk of Phabricator integration into BMO was completed in May.  Phabricator is now available for general usage.
Impact:
* One sole tool for review allows the Engineering Workflow to concentrate its efforts, and eliminates the need for contributors to learn several tools.
* A more intuitive interface than BMO and MozReview, with a contemporary look to appeal to new contributors.
* Some integration with existing tools and processes, balancing complexity and disruption.
* Excellent support from Phabricator's developers ([https://phacility.com Phacility]) and a large user community.
=== Lando initial release ===
[https://lando.services.mozilla.com Lando] is the new automatic code-landing tool integrated with Phabricator.  It is functionally similar to MozReview's Autoland but is designed to be more maintainable and extensible by being less tightly coupled to the review tool.
Impact:
* One-button landing offers an easier way to land code and minimal context switching from reviewing code.
* Queued landings due to tree closures means developers don't have to be around when they open to land their code.
* Becomes a common gateway to mozilla-central (and other repos) which allows more process and security improvements (see below).
Confirmed users
1,927

edits