From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received-SPF: Pass (sender SPF authorized) identity=mailfrom; client-ip=209.132.183.28; helo=mx1.redhat.com; envelope-from=lersek@redhat.com; receiver=edk2-devel@lists.01.org Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ml01.01.org (Postfix) with ESMTPS id 5D371211944A0 for ; Fri, 7 Dec 2018 04:00:58 -0800 (PST) Received: from smtp.corp.redhat.com (int-mx06.intmail.prod.int.phx2.redhat.com [10.5.11.16]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id 4D6A5A04AD; Fri, 7 Dec 2018 12:00:58 +0000 (UTC) Received: from lacos-laptop-7.usersys.redhat.com (ovpn-120-214.rdu2.redhat.com [10.10.120.214]) by smtp.corp.redhat.com (Postfix) with ESMTP id D06F85C229; Fri, 7 Dec 2018 12:00:56 +0000 (UTC) To: Rebecca Cran Cc: "Brian J. Johnson" , Jeremiah Cox , stephano , "edk2-devel@lists.01.org" References: <838b16fd-9821-c64c-19f4-aafb63140b6c@redhat.com> <1760486.u6MfGjpqfb@photon.int.bluestop.org> <810b8586-af3d-d8d6-a919-c937a72d87f3@redhat.com> <3111298.gzUHUCRiql@photon.int.bluestop.org> From: Laszlo Ersek Message-ID: Date: Fri, 7 Dec 2018 13:00:55 +0100 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101 Thunderbird/52.9.1 MIME-Version: 1.0 In-Reply-To: <3111298.gzUHUCRiql@photon.int.bluestop.org> X-Scanned-By: MIMEDefang 2.79 on 10.5.11.16 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.28]); Fri, 07 Dec 2018 12:00:58 +0000 (UTC) Subject: my Phabricator findings [was: Research Request] X-BeenThere: edk2-devel@lists.01.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: EDK II Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 07 Dec 2018 12:00:59 -0000 Content-Type: text/plain; charset=utf-8 Content-Language: en-US Content-Transfer-Encoding: 7bit Hi, I'd like to conclude my Phabricator investigation now. Indeed I have spent a lot less time on it than on GitHub, however my reason for this earlier finish is not bias or exhaustion. I believe to have found some pretty critical functionality gaps in Phabricator, which make it "secondary" how the emails it sends look and such. (The URLs we used for investigation are: https://code.bluestop.org/D1 https://code.bluestop.org/D2 https://code.bluestop.org/D3 https://code.bluestop.org/D4 ) Namely: Phabricator doesn't integrate natively with git topic branches, or with "git" itself, for that matter. Submitting a series of commits (a topic branch) for review seems to require a tool called "arcanist" (or "arc" for short), which from my perspective is a very unwelcome requirement. (Earlier I expressed my hope that it would be an optional tool.) Rebecca pointed me to the following article: https://smacleod.ca/posts/commit-series-with-phabricator/ and while the method described might technically work, I think it's a large step back in usability if we need to dance around the system with an extra tool (which isn't even packaged by several Linux distributions currently), just for submitting a topic branch for review. In addition, the way a commit series is represented in a Phabricator (for the purposes of comprehensive review), AIUI, is a chain of inter-dependent, but *separate* review requests. While the article above describes a method for interleaving a local "git rebase -i" procedure with re-stacking the patches / review requests on the Phabricator server, it strongly feels like a workaround for a system for which a *series* of patches is only an afterthought, not the core idea. (In git, branches are the core idea -- creating them is very cheap, and merging them is actually possible.) In other words, even though setting up the local commit messages as required by Phabricator, and running "arc diff" in a loop basically, might obviate a manual struggle on the WebUI, for stacking multiple review requests (one per patch) into a series, I don't see how it could work in any sensible way with the size of the patch sets that we regularly post. 10-20 patches in an edk2 series are totally normal, and 50+ patches in a series are not unheard of. Yes, 50+ patches in a series are not frequent, but long series are *exactly* when you need your tooling to support you the most. I can't see myself integrating an external tool with "git rebase" (esp. one that might call out over the network, such as "arc diff") when I'm trying to move code hunks between patches in a 20+ part series. When polishing a large series, it's not uncommon to rebase the whole thing multiple tens of times. Yet further, according to Rebecca's explanation in , fetching a patch under review for local testing again requires "arc". This is not native to git, and I think it causes more problems than it solves. Also, what about fetching a series of patches, i.e. a series of dependent review requests... The local git command line works *already* (once we're given a remote URL and a branch or tag), so let's not mess with that please. To be honest, I'm stumped how Mozilla could adopt (according to the article linked at the top) "Phabricator as the primary code review system for Firefox". Out of this exercise, I'd like to suggest a hard requirement for all future candidates: native integration with "git" is a must, and the system must not require additional command line tools for basic git operations (such as push, fetch, rebase), and basic participation in development. Thanks, Laszlo