[llvm-dev] [cfe-dev] Phabricator -> GitHub PRs?

David Greene via llvm-dev llvm-dev at lists.llvm.org
Wed Jan 15 08:19:38 PST 2020

Joerg Sonnenberger via llvm-dev <llvm-dev at lists.llvm.org> writes:

>> GitHub PR is the "de facto standard", everyone knows, the entry cost
>> is practically zero. The UI is lean and missing features, but the
>> large availability of tooling (either targeting GitHub directly or
>> plain git) makes up for a lot of it.
> Just like with the "Everyone knows git", I call bullshit on this. Sorry,
> but the far majority of GitHub users know little more than the most barebone
> functionality of Pull Requests and the typical use case in most projects
> is to squash all changes. But at this point it seems clear that the real
> goal is to just move everything to GitHub just for the sake of it.

Let's try to assume good faith on the part of all parties.

>> Phab has a very complex UI with a lot of features that people have
>> come to rely over the years. But it's far too complex for new people
>> and requires specially crafted tooling to work with.
> Can you at least try to make reasonable arguments without ridiculous
> hyperbole? Using phabricator for the casual user requires no special
> tooling. Patches can be easily submitted via patch upload. There are
> better ways to integrate it into a workflow, arcanist and git-phab just
> to mention two.

I for one cannot get arcanist to work because of its reliance on PHP
which for whatever reason refuses to install on my machine.  It it's
hard for me to do a simple install of a tool for code review, I can't
imagine the frustration of new people trying to get everything working.

I wasn't aware of git-phab and don't recall seeing it mentioned in the
LLVM documentation.  I just checked and there is no mention of it.  I'm
not sure how new people are supposed to know about it.  It does look
nice from a cursory review of its front page.  I'll give it a try!

I have never used Phab's more complex features.  There's nothing in the
LLVM documentation that talks about patch series or patch parents or
anything more advanced than "submit a patch and pick reviewers."  For
many people that is enough.  But if I were to run into a situation where
one of the reviewers asked to link my change to some other change, o
present things as a patch series I would have no idea how to do that.
If I were new to the project I would just give up at that point.

There's this bit in the documentation:

  Phabricator has many useful features, for example allowing you to
  select diffs between different versions of the patch as it was
  reviewed in the Revision Update History. Most features are self
  descriptive - explore, and if you have a question, drop by on #llvm in
  IRC to get help.

As has been noted in other threads, new users find IRC intimidating.  I
haven't used IRC since I don't know when.  I'm not even sure I *can*
given company policy.  It's another hurdle to getting things done.  And
important features are not "self descriptive" (see below).

The Phab instance has very little documentation and what there is is
difficult to find (I have to go to "More Applications" and click
"Guides" under "Utilities" -- really, does this organization make any
sense at all?).  And then the guides seem limited to configuration, not
actual use-cases.

"More Applications" looks very intimidating with nonsensical names for
things I might want to do ("Harbormaster?"  "Drydock?").

GitHub uses Markdown, which is another de facto standard.  Phab uses
"Remarkup" which I guess is similar but different.

The front-page of Phab makes little sense to a new user.  What is
"Differential?"  What is "Diffusion?"  Do they both have something to do
with diffs?  Oh wait, "Diffusion" brings me to a list of "Active
Repositories."  What?

Ok, let's try "Differential."  Looks promising.  There's a list of "LLVM
Needs Review."  Looks like a code review tool.  But I just want to
create a patch and submit it.  Grumble, grumble, look back at the LLVM
documentation.  Oh, it's the tiny inconspicuous button on the very top
right corner "+ Create Diff."  The documentation told me about the
button but not where it's located.  Took me some time to find it.

The above journey to get a patch submitted was my actual first
experience with Phab.  It did not leave a good taste in my mouth.


More information about the llvm-dev mailing list