What's your idea?
Pull requests implemented in drupal.org and the ability to edit files in browsers.
There is a similar proposal: Move Git repositories to Github
What are the benefits?
Reduces barrier to entry for contributions
A short story
Today I noticed a documentation issue in with composer. I found the project on github, navigated to the file, made the edit in my browser and hit save, which in the background forked the repo and created a pull request for me. It took me exactly 3 CLICKS to contribute to composer. I don't even want to count how many clicks/commands it takes for me to make a similar change on d.o.
What are the risks?
Projects migrating off of d.o due to lack of velocity with regard to improvements on d.o
How can we measure the impact of this idea? (metrics)
Number of pull requests vs number of patches
Who directly benefits from / will use this improvement? (target audiences)
Everyone who wants to contribute to Drupal
Comments
Great idea -- pull requests are a superior workflow
I tried to make the drupal.org workflow better with the Drush Issue Queue extension; while this tool has made it much easier to create patches, interdiffs and new releases on drupal.org, it still falls short of the pull request workflow. Also, when drupal.org is ported to Drupal 7, drush_iq will break, and probably will not be updated. Most of my work in the issue queue has been in the Drush queue; Drush is on Github now, and Github has the 'hub' cli. The pull request workflow is a really big improvement.
Another thing to consider is whether all drupal.org projects should be migrated to GitHub. There is a big advantage to having all of the Drupal modules within the purview of drupal.org. Drush isn't as tightly integrated with the rest of Drupal as contrib modules are; there would be a cost to just migrating contrib out. However, it is also hugely complicated to integrate a large website like drupal.org with a git workflow. Porting project project to Drupal 7 added a lot of extra work to the d7 upgrade for drupal.org -- and it will have to all be done again for d8.
GitHub has an API; perhaps an easy way to provide pull requests on drupal.org would be to utilize that API, and find a way that drupal.org project pages could be integrated with the GitHub repository they are associated with.
Regardless of what means are used to achieve it, it would be great to have the pull request workflow on drupal.org.
Pull requests are more of a mixed bag--not clearly superior
Just thought that I'd update my comment above after having more experience using GitHub with Drush for a while. It is true that GitHub adds some very nice features, like inline comments in diffs, that drupal.org does not have. However, it's also a little awkward to do some things. GitHub is designed primarily for projects where maintainers collaborate with a single non-maintainer PR submitter. On drupal.org (and in Drush), it is common for multiple non-maintainers to collaborate on the same patch. This sort of workflow is a little awkward on GitHub; the easiest way to do it is for each contributor to fork the primary repository, and make commits in their own repository, with each commit comment referencing the original issue number in the GitHub issue queue. The multi-contributor workflow still is not as nice on GitHub as it is on drupal.org, though, as it is not as convenient to set labels on issues, assign issues to non-maintainers, or quickly merge commits from a third-party forked repository into your own fork. The cli is required for this, and for testing a PR after merge, but before committing it.
I'm sure these activities will get easier on GitHub over time. At the moment, what we'd ideally like is a system that had features from both platforms.
Move all of issue tracking and SCM to GitHub
Really I think Drupal could benefit by moving all of the issue tracking and SCM over to GitHub. It seems like a barrier to that would be packaging releases and automated testing. It looks like the team at PreviousNext has figured out the testing problems http://previousnext.com.au/blog/automated-drupal-testing-github-pull-req... and I don't think it would be too tough to get the release manager to look to GitHub for generating releases. We could then dedicate fewer resources to maintaining to maintaining a project management system and spend more time on other improvements to d.o. Man other open source projects have moved to GitHub so it may even reduce the barrier to entry to contributing to Drupal.
I would strongly be against
I would strongly be against this proposal. I find d.o. to be miles ahead of other tools, because community modules are centralised in one place. For example, I use puppet, and wish the 'puppetforge' were as fully-featured, visible, and usable as the d.o. project pages. I also notice that puppet modules are strewn randomly across github, with no real centralisation, and no reporting mechanism to track their usage.
I see the appeal of GitHub over d.o. in several key features:
1. Pull requests. This, a million times this.
2. This also implies forking. We have 'sandbox' repos, but I suspect they're not used much, because the process of creating a sandbox has a number of steps, and may not be obvious.
3. Simple creation of new repos ('sandboxes'). GH only needs the name of repo…and for sandboxes, we don't necessarily need all the project information that's currently requested.
Right now, GitHub is a much better code-management system, but I would prefer to see the tools on d.o. improved, than for us to migrate to GitHub.
--
Marcus Deglos
Founder / Technical Architect @ Techito.
Releases can be centralized
Releases can be centralized in d.o, even using GH for hosting repositories.
See http://plugins.jquery.com
See http://plugins.jquery.com for an example of community using GitHub to host contributions, while still providing a central "plugins repository" user interface/experience.
This is a nice interface ..
This is a nice interface .. seems like you could combine data from the github api's with metrics from d.o. statistics to create a useful view of contrib. Here's an example of someone using the github data in new ways http://adereth.github.io/blog/2013/12/23/counting-stars-on-github/
The extremist side of me
The extremist side of me would like drupal.org to be a wrapper on top of github but the realist in me doesn't think that will ever happen.
It actually sounds like the
It actually sounds like the feature being requested here is being able to edit files and submit changes to the project maintainer through the UI in a couple of clicks. If this were to be implemented, it doesn't necessarily have to be done via pull request on the back-end; it could also auto-generate and auto-post patches, for that matter... at least as an interim step.
If this idea is in fact about Github-style pull requests, where you fork repos into your own sandbox and then submit branches for consideration, etc. etc. then it might be best to split the two into separate submissions, IMO.
However, "Move Drupal.org development to Github" is definitely a separate proposal. ;)
it doesn't necessarily have
I agree that forking the whole repository is not necessary, but if you did not have that capability, you'd at least need to commit to a branch in order for the web button to be able to access the code to make the change. That, in my mind, would be equivalent to a pull request. Without a branch to commit to, where would the web button (pull-request equivalent) get the code from?
As for auto-generating and auto-posting patches from your local system to drupal.org today, as an interim step, you should really try the drush_iq project. That's what it does. It's gone largely unnoticed, but it's fairly slick. Not quite as good as pull requests, but still pretty fun to use. It even makes interdiffs. And posts releases, with release notes (using the grn project). From the command line. Yup.
Move Git repositories to Github
see https://groups.drupal.org/node/313068
Rephrase the title and add link to similar proposal
@webchick
I've almost voted in this proposal thinking it was the same thing. I guess many people did vote on it when they first read "pull requests".
Maybe rephrase the title to something like "Implement pull requests in drupal.org" AND include a note on top of the issue description linking to the similar proposal. Of course, linking back from the other proposal. In addition, explain the differences: one is for implementing in d.o, the other is to make PR in Github.
I went ahead and did this,
I went ahead and did this, but anyone else can do that too. These are wiki pages. :)
Thank you webchick
I was not sure if I should do it myself or wait for the proposal author or the poll organizer.
I just added links from/to each similar proposal.
Stepping back from this a
Stepping back from this a bit, I remember the idea which maybe the way to go for the d.o. There was a lot of talk about per issue repositories which mean that many people can work on and edit as they do not, but push directly into an issue.
Then it would not be a big step to do an interface to be able to edit text on d.o and push it in.
--
Gordon Heydon
There has been quite some
There has been quite some discussion on how to properly use pull requests for multiple people collaborating within an issue.
https://groups.drupal.org/node/50438#comment-136863
Have we settled upon a strategy in that regards?
i think this would be awesome
to have pull requests in drupal. there have been many times when i just wanted to submit a fix to a module...but didnt bother with pulling the repo...making an issue, making a patch, waiting for the maintainer to test the patch...etc.etc.etc.etc.
id much rather, make the change and it get directly submitted to the maintainer. i agree, the barrier to entry would go down significantly.
I think therefore I Drupal
I updated the title and
I updated the title and description to match the "short story" section because they were different. Now that people have voted on it, though, I'm not sure that was the right thing to do. Maybe the "short story" should be removed?
Anyway, the phabricator idea has more of a substantive suggestion on how to achieve a pull-request-like tool (right?).
knaddison blog | Morris Animal Foundation