From: Laszlo Ersek <lersek@redhat.com>
To: Jeremiah Cox <jerecox@microsoft.com>,
stephano <stephano.cetola@linux.intel.com>
Cc: "edk2-devel@lists.01.org" <edk2-devel@lists.01.org>
Subject: Re: TianoCore Community Meeting Minutes
Date: Mon, 22 Oct 2018 12:14:40 +0200 [thread overview]
Message-ID: <b5377cc4-e331-6811-17db-5aee2c66f61e@redhat.com> (raw)
In-Reply-To: <MWHPR21MB0176FE8331DBF2087A3E24DDADF90@MWHPR21MB0176.namprd21.prod.outlook.com>
Hello Jeremiah,
On 10/19/18 18:09, Jeremiah Cox wrote:
> I'd like to better understand assertions of GitHub "lock in". GitHub
> provides a comprehensive REST API that you can easily drive via Python
> ("pip install PyGithub").
> I recall one assertion that GitHub holds PR comments hostage, but it
> is trivial to dump out all Comments on all PRs in a repo.
>
>
> g = Github( <access_token> )
> repo = g.get_repo("chipsec/chipsec")
> pulls = repo.get_pulls(sort='created', base='master')
> for pr in pulls:
> for comment in pr.get_review_comments():
> print(pr.number)
> print(comment.body)
> ...
>
> Can folks help me better understand examples of GitHub "lock in"? I
> think it would be trivial to author a daemon that listens for PRs and
> comments, and forward those to a mailing list, if that is preferred
> for archival.
> With respect to web-based, we believe it facilitates convenient,
> multi-platform access, and GitHub's REST APIs can be leveraged to
> provide a command-line driven experience. I believe Sean's point was
> that GitHub provides a 1-stop shop for code reviews and issue tracking
> such that there is no need to spend TianoCore resources set up,
> maintain, and update separate Bugzilla and Gerrit services, VMs, OSs,
> & machines. The REST APIs could be used to maintain a mailing list or
> other mirror. I am not asserting that GitHub provides the best code
> review and issue tracker experience, our team finds Azure Dev Ops is
> superior, but GitHub is sufficient for most use cases while handling
> the infrastructure so that we can focus on getting things done.
>
> I think it would be helpful to construct a PROs/CONs table for each of
> the proposed end-to-end solution (source control, code review, gates,
> CI/CD, issue tracking, testing, ...). Perhaps this table is on a wiki
> to enable faster iteration than emails on the DL.
> We think of "Pull Request" as a contribution & review process akin to
> GitHub, GitLab, or Azure DevOps. Feedback, responses, automated
> check-in gates, and signoff can be handled within each PR ticket.
> Policies can be assigned, automated tests that must pass, enforcement
> of community wide rules (# of reviewers, reviewer list, all comments
> "resolved"). Tests could start as simple as successful build and over
> time could grow to a more comprehensive set of boot, functional,
> static analysis, ...
> By leveraging a popular hosting provider's built-in workflow we enjoy
> significant efficiencies. Its fully documented and known to most. New
> capabilities are being added daily. No TianoCore resources would be
> required to manage systems, OS patches, network issues, etc and can
> instead be focused on TianoCore code, building tests, and driving
> process improvements.
I don't have anything against GitHub specifically. I also don't have any
"favorite" WebUI (beyond Bugzilla, of course :) ). I'm concerned about a
number of general anti-patterns that might not be obvious, and might not
be easy to prevent with any given modern web application. Perhaps I can
word this as a personal wish list:
* Full email audit trail (all changes mailed out, even own ones), about
patch submission, PRs, patch review comments, and bug tracker actions
alike.
One should be able to establish the full history of a bug or a pull
request just from the emails. (This would be for human readers, not
for machines.) Review comments made on the web, in reference to
specific parts of a patch, should preserve that context in email form.
The messages generated for a given bug or PR should form a thread on
the mailing list. (Proper use of In-Reply-To and References headers.)
The generated emails should be readable without HTML support (i.e. as
plain text). As a counter-example for this, I'll mention JIRA --
JIRA's emails are practically unreadable without HTML rendering
support in the MUA.
If a WebUI can offer such an email gateway as a feature, that's
awesome. It is fine if the gateway is one-way only (web to email). The
service should not be an external one however, in order to minimize
email lossage when the WebUI works but the gateway goes offline for
some reason. The gateway should be tightly integrated.
* The comment editing interface on the WebUI should support, in addition
to the default rich editing interface, a plaintext mode that uses
monospace font, interprets no markdown sequences, and preserves the
exact layout of the plaintext comment (including indentation and line
wrapping).
Counter-examples abound. Perhaps somewhat unexpectedly, I'll call out
Launchpad. Among other things:
(a) Launchpad truncates comments it thinks are "too long", in the full
bug display -- and then readers have to open the bug comment
separately, to see it in its full length;
(b) Launchpad inserts invisible breaks into words it thinks are "too
long" -- and then, if someone double clicks a 40-nibble commit
hash in the middle, they will not see it wholly selected; only a
middle section will be selected between the hidden word breaks.
The invisible word breaks will also allow commit hashes to be
wrapped.
* A similar "stick to basics" criterion exists for commit message
authoring, and display.
Commit messages are to be authored with monospace font in mind, and 74
character line length.
Commit messages should not be reflowed or rewrapped automatically on
display. BZ numbers and commit hash references may be highlighted and
turned into actual links, but they should not be shortened or
otherwise reformatted. The original formatting of a commit message is
not a mindless process, and any WebUI should respect that, and
preserve the original author's work, for display too.
* Old versions of patch series (pull requests) and their associated
review comments must remain publicly available forever. No historical
review comments must ever turn into dangling references on the WebUI,
nor must old (rejected) pull requests (topic branches) ever be
possible to delete (or to overwrite by force-pushing), even for the
original author.
* No "squash on merge". Structuring a patch series is a first class
development activity, and the git history is a first class aspect of
the codebase.
* More generally, admins should have fine-grained control to disable
unwanted WebUI features.
* "Edit by reviewer on merge" should be restricted to minimally invasive
changes, and participants must agree on such actions up-front.
* I don't know how a WebUI can support "rebase by maintainer". On one
hand, such a feature would have to be used very carefully (see the
previous point); on the other hand, adding Reviewed-by and similar
tags without it is not possible for the maintainer.
* Support for displaying and perhaps editing "git notes" (see
git-notes(1)) would be a plus. They permit developers to attach
patch-level changelogs (incremental change descriptions) to individual
patches, such that these changelogs never make it to the final git
history. Such notes are useful for repeated reviews, but not really
useful for the long-term git history (which does not capture the
discussion context / previous versions of the pull requests anyway).
Thanks!
Laszlo
next prev parent reply other threads:[~2018-10-22 10:14 UTC|newest]
Thread overview: 11+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-10-19 16:09 TianoCore Community Meeting Minutes Jeremiah Cox
2018-10-22 10:14 ` Laszlo Ersek [this message]
-- strict thread matches above, loose matches on Subject: below --
2018-10-11 17:43 stephano
2018-10-12 13:27 ` Leif Lindholm
2018-10-12 16:07 ` Laszlo Ersek
2018-10-12 18:06 ` Leif Lindholm
2018-10-12 18:30 ` Kinney, Michael D
2018-10-12 19:44 ` Andrew Fish
2018-10-12 18:50 ` Andrew Fish
2018-10-14 21:15 ` stephano
2018-10-12 20:28 ` Andrew Fish
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-list from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=b5377cc4-e331-6811-17db-5aee2c66f61e@redhat.com \
--to=devel@edk2.groups.io \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox