Shortly after being blocked because the test cluster was overloaded, Josh reviewed and approved the proposed pull request, asking for a trivial change. I made the change and asked one more time that Nathan acts as a proxy to push it as an update to the pull request.
Kefu included the pull request into his test run and noticed a bug which he kindly reported to the mailing list, because he knows I don’t have a GitHub account and would not otherwise be notified. He even went as far as to fix the problem and ask for my permission to squash it into my commit.
This showcase benefited from Nathan, Josh and Kefu’s good will and efforts: they went out of their way to make it possible (round of applause). Such a simple contribution is not expected to require so many participants, so much interactions and so many manual operations. To summarize, here is what happened:
- I created a branch on a Ceph mirror with my contribution
- Nathan created a pull request on my behalf with my contribution
- I asked (5 times) Nathan, via the mailing list to synchronize my branch with the pull request with updates
- Nathan updated the description of the the pull request
- Josh reviewed the pull request and Nathan told me, via IRC about his comment because I could not receive notifications
- Kefu reviewed and tested the the pull request and notified me explicitly via the mailing list
- Nathan, Kefu and Josh discussed the last step on the pull request
- Kefu closed the associated issue closed
Here is what typically happens when someone who has a GitHub account makes a contribution:
- They create a pull request with their contribution
- The reviewer comments on the pull request
- The contributor addresses the comments and push the updates to the pull request
- The tester runs an integration test including the contribution
- The pull request is merged by the tester who also closes the issue
It’s not very rigid but it’s more or less what happens. The difference between the two workflows is:
- There is no need for a proxy (Nathan in this showcase)
- The tester does not need to send notifications to additional communications channels (Kefu in this showcase)
- Changes do not need to be pulled and pushed twice (Nathan again)
- The contributor is able to participate in all discussions (the final exchange between Kefu, Josh & Nathan in this showcase)
The goal of this story was to demonstrate, with an actual example, the additional work and the communication delays when a Free Software developer contributes to a project that lives on a forge where they do not have an account (for whatever reason).