[llvm-dev] Enable Contributions Through Pull-request For LLVM

Alex Denisov via llvm-dev llvm-dev at lists.llvm.org
Thu Nov 7 01:44:09 PST 2019

Huge +1 from my side.

There are couple of small patches I want to submit, but the fact that I need to deal with phabricator just stops me from doing this.

Looking at the other comments against this step I'm wondering if the goal of the project is to keep existing (dozens?) contributors happy, or to embrace more (hundreds?) people to join the project?


I'd love to leave some comments on other comments as I've been using Github for OSS/Commercial development for many years now and I find it to be one of the best things that can happen to an open source project.

> "Github UI is ugly/slaggish/bad"

that's obviously subjective, and I can only say the same about phabricator.

> Geopolitics/laws/whatnot

this is orthogonal to the subject, right?

>  There is no way to see previous version of the patch.
>  I don't think there is any way to disable force-push for PR's.
>  While this is only 'slightly' limiting for the reviewer,
>  this can be more limiting for the author - how do i go back
>  to previous revision? I can't, i need to maintain a copy
>  of every branch i pushed manually.

Seeing previous version is only possible if the author uses different commits, but is it not possible to enforce it.
Force pushes can only be disabled per repo, so if we allow to submit PRs without forks, then it is possible to solve this issue as well.

>  Impossible to chain reviews - a PR diff can only be made
>  on top of git master branch.

This is also true only for forked repositories.
Though, imo, chained PRs (feature branch based development) contradicts to the trunk-based approach LLVM project is using.
Correct me if I'm wrong.

>  Just recently I submitted a very tiny PR for PcapPlusPlus on GitHub
>  which involved:
>  1). Forking the repository
>  2). Cloning the fork
>  3). Applying the patch
>  4). Pushing it and creating a PR.
>  5). Deleting the fork (Since I didn't want it cluttering up my account
>  and I'm not a regular contributor to PcapPlusPlus).

2) and 3) are not necessary since the repo can have multiple remotes.
For some very simple cases one doesn't even need to leave github UI: it is possible to send patches right from the website.

> On 7. Nov 2019, at 06:32, Mehdi AMINI via llvm-dev <llvm-dev at lists.llvm.org> wrote:
> Hi all,
> Now that we're on GitHub, we can discuss about pull-requests.
> I'd like to propose to enable pull-request on GitHub, as a first step as an experimental channel alongside the existing methods for contributing to LLVM.
> This would allow to find workflow issues and address them, and also LLVM contributors in general to start getting familiar with pull-requests without committing to switching to pull-requests immediately. The community should evaluate after a few months what would the next steps be.
> GitHub pull-requests is the natural way to contribute to project hosted on GitHub: this feature is so core to GitHub that there is no option to disable it! 
> The current proposal is to allow to integrate contributions to the LLVM project directly from pull-requests. In particular the exact setup would be the following:
>   - Contributors should use their own fork and push a branch in their fork.
>   - Reviews can be performed on GitHub. The canonical tools are still the mailing-list and Phabricator: a reviewer can request the review to move to Phabricator.
>   - The only option available will be to “squash and merge”. This mode of review matches the closest our current workflow (both phabricator and mailing-list): conceptually independent contributions belongs to separate review threads, and thus separate pull-requests. 
> This also allow the round of reviews to not force-push the original branch and accumulate commits: this keeps the contextual history of comments and allow to visualize the incremental diff across revision of the pull-request. 
>   - Upon “merge” of a pull-request: history is linear and a single commit lands in master after review is completed.
> As an alternative staging proposal: we could enable pull-requests only for a small subset of sub-projects in LLVM (i.e. not LLVM/clang to begin with for example) in the repo. In this case, we would propose to begin with the MLIR project (as soon as it gets integrated in the monorepo). This would be a good candidate to be the guinea pig for this process since it does not yet have a wide established community of contributors, and the current contributors are already exclusively using pull-requests <https://github.com/tensorflow/mlir/pulls>.
> Here is a more complete doc on the topic: https://docs.google.com/document/d/1DSHQrfydSjoqU9zEnj3rIcds6YN59Jxc37MdiggOyaI <https://docs.google.com/document/d/1DSHQrfydSjoqU9zEnj3rIcds6YN59Jxc37MdiggOyaI>
> Cheers,
> -- 
> Mehdi
> _______________________________________________
> LLVM Developers mailing list
> llvm-dev at lists.llvm.org
> https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20191107/5cfe08fb/attachment.html>

More information about the llvm-dev mailing list