On 05/26/15 22:33, Andrew Fish wrote: > >> On May 26, 2015, at 6:56 AM, Laszlo Ersek <ler...@redhat.com >> <mailto:ler...@redhat.com>> wrote: >> >> On 05/26/15 14:35, B Cran wrote: >>> On Wed, May 13, 2015 at 11:01 AM, Peterson, Joe >>> <joe.peter...@intel.com <mailto:joe.peter...@intel.com> >>> <mailto:joe.peter...@intel.com>> wrote: >>> >>> Sorry for the delay in responding to this. With regard to involving >>> the community in a discussion of solutions, yes, there is no >>> intention of making this an "Intel only" thing. The posting of the >>> list shouldn't be seen as "this is what will be done," rather, this >>> is the list we have developed based upon feedback from the community >>> to date. If you have feedback or know of anything we missed, please >>> provide your feedback here via the mailing list. Also, we do not >>> intend to make this a home grown solution if we can avoid it. >>> >>> Please be encouraged to post questions/comment/concerns to the >>> mailing list. >>> >>> >>> I don't know how many others feel similarly, but I've seen very negative >>> feedback on Gerrit in the past at $work, mostly around its unfriendly >>> and ugly UI. If a code review system is going to be put into place, it >>> might make sense to use something that's more popular, in use by more >>> open source projects? >> >> Nothing comes close to reviews done in email (*). As I stated earlier >> elsewhere: >> >> - No web based application will ever be as flexible as free flowing text >> for expressing thoughts about patches. I skimmed some upstream Gerrit >> page / examples before, and what I saw could certainly not accommodate >> the amount & format of text (eg. ASCII diagrams) that I >> sometimes produce. >> >> - Mailing lists are unbeaten at preserving threading, and at being >> archived / mirrored without coordination. >> >> (*) assuming (a) contributors use git-send-email to post patches, and >> (b) reviewers use sensible MUAs that don't mangle plaintext, >> monospace font emails. >> >> Gerrit may be okay for tight-knit internal teams, but for >> distributed development it's not appropriate in my opinion. Unless I'm >> wrong, Gerrit has been designed for in-house development, from the >> grounds up. >> >> I don't intend to use Gerrit, and I very much hope that all contributors >> will continue posting patches to, and accepting feedback from, the list. >> > > Is it possible to do both? So the Gerrit part is just a link that is > auto added to the commit message? > > I’ve only played with Gerrit one time, so I may be way off…. But this > would be cool. > > 1) Submit patch to Gerrit, much like we do today to the mailing list. > 2) Gerrit runs that patch against the server farm of known compilers and > makes sure everything compiles. Kicks back the patch to the author on a > build fail. > 3) If everything compiles patch is sent to edk2 mailing list with link > to Gerrit auto-added.
We do something similar in the kernel and virt teams at RH. All patch series (which are backports, most frequently) must be submitted to a build farm first. The build must succeed for all supported platforms, and (ideally) the developer should perform his / her final personal testing with those binary packages that result from said build. When everything's fine, the developer is allowed to post the series to the appropriate internal list. All postings must carry (a) a Bugzilla number, (b) a build identifier (a URL, practically). The build URL sticks around forever -- packages are not preserved after a while, but the metadata stays around forever. Assuming the series gathers a sufficient number of ACKs (three on the virt lists, variable / approx. three on the kernel lists), the respective maintainers pick up the patches and apply them to the internal repos. ... So, I definitely agree with the build farm idea; that would help immensely in avoiding warnings-treated-as-errors that hit only on some compilers. However, I'd prefer if the build URL / build ID were stuck manually in the patch submission. I'd like to keep the integration / automation between these two phases (central build & patch submission) minimal. I'd like to keep retain control over the patch submission. If there was very good tooling support (ie. git command line integration) with gerrit, and the gerrit server was extremely stable, then I might change my mind I guess. I've been using the process described above for years; it matches / extends how big upstream projects are developed (Linux kernel and QEMU for example) -- I trust that workflow. On the other hand the gerrit sites / examples I've seen thus far (from a distance, admittedly) looked awful, so I'm wary. > We can still required all the comments happen in the mailing list. > To me the win for Gerrit is workflow automation, getting to test compile > against other tools. I agree about the test compile 100%. I just wouldn't like to relinquish control over the patch formatting and the submission. The mailing list should remain the primary interface for contributions -- we must accommodate drive-by contributors as well. Uploading patches to the build farm and firing off test builds causes very real costs (electricity, cooling, bandwidth) for the operator, so it would likely be tied to authentication (just like RH's internal build farm, which is similar to <http://koji.fedoraproject.org/>, is tied to authentication). We shouldn't introduce barriers for newbies / one-off contributors for *posting* their patches. For applying their patches, we can enforce whatever we want; a seasoned developer could test-build patches for an occasional contributor before applying & pushing his/her patches. > Also I’m a visual diff kind of person, so my brain > likes seeing the visual diff of the change, vs a command line diff. It > would be nice to have access to this on the web, vs. having to apply the > patch to branch manually. Access on the web looks like a step forward (eg. it provides syntax highlighting), but it's actually a small step at a steep price. The price is that a web browser (and a central server) are required. A browser should not be a hard requirement at any point of the submission and review process. (Test builds are a different matter, although command line tools for those would be preferred as well.) I wrote to Bruce earlier, in private, with regard to reviewing patches against a context: > I agree. Which is why the reviewer should apply the patches from the > mailing list (or pull them from the submitter's public repo) and > review them with context. > > Whenever I review a longer series, I create (or pull) a branch with > the patches, and as I progress through the review, I advance with the > local checkout as well. This way I have the full tree at my disposal, > in my own programmer's editor, and I can check even very distant > contexts against the patch, with the full power of my usual work > environment / desktop. I can grep, jump to tags, build in the middle > of the series, and so on. > > There's no substitute for that. > > And when I have things to say, I can insert them at the exact location > in the patch email; I can format or draw my comments the way I want... So, patches, especially each patch in a larger series, should be reviewed against a tree that has all *prior* patches in the series applied -- ultimately that's how the contributor developed the patches in the first place. In my opinion, a web based tool has no chance at being as flexible at this (ie. at moving around in the entire tree mid-series) as everyone's own desktop environment. Assuming we agree on the above, let's discuss how people grab patches. Normally, the easiest way to bring the patches from the mailing list to a reviewer's desktop environment / local branch is (1) save the emails from your MUA (a few clicks or keypresses), (2) apply them with "git am" (a few more keypresses in your terminal). I agree that this presents difficulties to many edk2 developers, because: - They (have to?) use *gravely* sub-standard MUAs. Let's not name names, but I'll say that a MUA that cannot get the absolute basics right (comment at the bottom by default; keep threading pristine; only reflow lines that end with a space etc) cannot be considered anything but utterly broken. In theory such MUAs are plainly unsuitable for distributed open source development; in practice we must cope with them. - edk2 uses CRLF line terminators internally, and git-am has admittedly problems with that, *if* the patches cross MTA boundaries (which is the norm of course). Therefore, we've grown to push edk2 series to personal github repos / branches, and we reference them in the blurbs. Those branches can be fetched very easily. (I do concede that with the same effort we might as well push our branches to a gerrit server, if such pushing makes sense.) ... Okay, this email is again too long; sorry about that. Summary of my opinion: (1) The build farm is a great idea, and we should make its use a requirement for *applying* someone's patches. (For example, Olivier already does this with the ARM-internal continuous integration environment.) (2) The barrier to *submit* patches should be low: the primary interface should remain the mailing list. Pulling should be kept easy for reviewers' (and testers') sake. (3) A web browser should not be a required tool in performing the actions inherent in submission and review. A browser and a web app might be slightly more convenient for *consuming* short series than plaintext email, but (a) for longer series, where individual patches need to be reviewed against a continually advancing context (ie. tree), a web-based tool is much weaker than a local development environment, providing little benefit, (b) a web app will never be as flexible at *producing* careful comments (think diagrams) as plain-text tools / MUAs. (4) A web app is likely worse at preserving the threading of a discussion than a mailing list. Also, data kept in a web app is less suitable for independent archival / mirroring than a mailing list. ... In fact this makes me recall: https://lwn.net/Articles/638090/ (article) https://lwn.net/Articles/639051/ (comment by me) https://lwn.net/Articles/639071/ (comment by me) Thanks Laszlo ------------------------------------------------------------------------------ _______________________________________________ edk2-devel mailing list edk2-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/edk2-devel