There are two levels of leadership in the illumos project: Members of the Developer Council, and Request To Integrate (RTI) Advocates.
The Dev Council is a technical steering committee drawn from well-known developers of Solaris, whose role is to make high-level architecture decisions.
|Garrett D'Amore||RackTop Systems|
Advocates are the gatekeepers to the illumos core: they have the ultimate say in what code is accepted, and their primary job is to ensure quality and stability for all illumos users.
Advocates are appointed by the illumos Developer Council.
|Albert Lee||trisk||SoftNAS||Storage, drivers, userland.|
|Dan McDonald||danmcd||Joyent||Cryptography, Networking|
|Garrett D'Amore||gdamore||RackTop Systems||Drivers, etc.|
|Gordon Ross||gwr||Nexenta||CIFS/SMB, VFS layer, ZFS ACLs, etc.|
|Joshua M. Clulow||LeftWing||Joyent||Misc.|
|Robert Mustacchi||rmustacc||Joyent||Virtualization, SMF, PCI, MDB, DTrace, x86 platform, etc.|
Life as an Advocate¶
Contributors send you patches, build results, test results, check results, review results. If you're happy with all of this, you integrate the change on their behalf.
You should have received a patch in
git format-patch or similar format,
including a full set of metadata (
Reviewed by: lines, authorship, etc.). If
you didn't, feel free to ask whoever submitted the patch to submit it in this
format. You shouldn't have to go search the list archives for reviewers.
While the advocate role is fundamentally one of gate-keeping, it is expected that advocates are willing and able to help drive towards a positive result. Use your experience where you can to actively help contributors get to integration, rather than simply denying changes that aren't well-formed.
Things Advocates Focus On¶
Do you know the areas of the system affected well enough to even have an opinion? If not, determine whether another advocate is better placed to make a decision. The codebase is large and our finite resources mean that we'll never have complete coverage; sometimes an absence of an obvious expert is a learning opportunity!
Is the commit well-formed? The
Authorfield should include both a name and a well-formed e-mail address for the change contributor. Ensure that any non-Latin characters in names are correctly rendered in UTF-8. The same should be true of any
Portions contributed by:lines in the commit message.
git pbchkoutput as clean as you want it to be? In general there there should be no noise from any check, however some areas are not clean for the various style checks. It will generally be quite obvious upon inspection when a file is not already free of issues.
Is the user's build clean?
- The contributor should be using the current primary and shadow
compilers (i.e., GCC 4.4.4 and GCC 7.3).
mail_msgfile for the compilers used during the build.
- The build should be free of compiler warnings and other post-build checks.
- The contributor should be using the current primary and shadow compilers (i.e., GCC 4.4.4 and GCC 7.3). Check the
Did the submitter test their changes to your satisfaction?
- Can you think of anything else that should be tested? Ask for it!
- Did the testing actually cover the area changed by the patch? Check!
Inspect the diff! Check that nothing stands out that reviewers may have missed.
If there are any open questions about possibly breaking the build, the advocate can always elect to run their own build once they have imported the patch.
The following is a basic checklist for those pushing to the gate, whether they are an advocate, or someone granted the right to push their own approved changes.
When importing a patch, record the approving advocate with an
Approved by:line in the commit message after the existing
Portions contributed by:lines.
Make sure when you import the patch that the
Author:field reflects the submitter of the change and not you, the committer.
You can (and should) visually inspect outgoing commits prior to pushing (to ensure you have done all of the above) with something like:
$ git show --pretty=fuller origin/master.. commit 54a92aefa4a67c25d292cdc6f70533e6737db987 Author: Harry Nilsson <firstname.lastname@example.org> AuthorDate: Sat Jan 19 13:32:20 2019 +0200 Commit: Joshua M. Clulow <email@example.com> CommitDate: Thu Apr 11 21:20:14 2019 +0700 52034 put the lime in the coconut Portions contributed by: Fred Dagg <firstname.lastname@example.org> Reviewed by: Gérard de Pamplemousse <email@example.com> Reviewed by: Don Quixote <firstname.lastname@example.org> Approved by: Joshua M. Clulow <email@example.com> diff --git a/usr/src/uts/common/io/coconut/lime.c b/usr/src/uts/common/io/coconut/lime.c index adc83b19e79..54a92aefa4 100644 --- a/usr/src/uts/common/io/coconut/lime.c +++ a/usr/src/uts/common/io/coconut/lime.c @@ -3134,7 +3134,7 @@ drink_them_both_up(void *state, ...
If a push to the gate fails, you MUST NOT force push (i.e.,
git push -f). There will always be a reason for the error, which you must fix before proceeding.