Dear All, As a next step toward the CF community using GitHub tools to discuss and refine the specification, we need contribution guidelines for this repository. For background and interesting reading, this issue follows #106 and #112 and is more or less governed by the CF community conversation in [Trac ticket 160.](https://cf-trac.llnl.gov/trac/ticket/160) The consensus in that ticket has lead us here.
The outcome of this issue should be an initial [CONTRIBUTING.md](https://help.github.com/articles/setting-guidelines-for-repository-contributors/) and modifications to the [pull request template](https://help.github.com/articles/creating-a-pull-request-template-for-your-repository/) per the requirements described below. We should use this issue to discuss and evolve these requirements then I will submit a pull request with content according to the consensus. __Please review the use case and guidelines below. I will begin work on the CONTRIBUTIONS.md document in a few weeks based on the consensus we have sometime in May.__ __Top level use case:__ As a contributor to the CF specification, I need to know the rules and instructions for *how* GitHub should be used, so I know the right way to submit my suggested addition or changes. Guidelines: (derived from correspondence between @JonathanGregory, @dblodgett-usgs and others.) - Some simple instructions are needed so that anyone who does not use GitHub for any other purpose can follow them successfully. GitHub can be used in a variety of ways and we need clear guidance regarding how the CF community wants to use the tools. - A given proposal should be discussed as one issue. It shouldn't fork or be superseded by another one, unless that reflects what has happened to the proposal, in the same way that we continue discussion under one trac ticket for a given proposal. This is so that it's easy to trace the discussion which led to a given agreed proposal. - It has to be easy to see what is being proposed in the context of the discussion. In Trac we say: I propose to do X, Y and Z, with the result that the text will read as follows in Section N _blah blah blah_ and as follows in Section M _rhubarb rhubarb_ Thus it's possible to see the reasoning and the effect on all the sections, all gathered together, and understand it. In GitHub, there is no relation between the argument and the modified text, unless the argument is put as annotations in the text, but in that case the bits of argument are all over the place. **Somehow you need to get an overview of the changes all together.** - In the case of short changes, I think that excerpting the existing spec in a GitHub issue with suggested new content in the body of a GitHub issue would work well. Once agreed to in the issue, the change can be implemented and submitted as a pull request referencing the issue. - In the case of long changes (i.e. where the body of an issue isn't long enough or changes are in many parts of the specification) the significant addition would likely come in the form of added content in a persons fork of the specification. They might register the contribution and their intent with the community in an issue for general feedback, work on the content in their fork, then submit a pull request when the consensus is that it's ready to be submitted. If the community finds utility in line by line comments in a pull request, that's great, but I don't think we need to force that issue. Line by line comments are really great for code. They can be a great for text, but they can also be very cumbersome. - Regarding "long changes" Maybe we could recommend that the discussion *begins* with proposed changes in the issue itself, but if the proposal involves changes in many places in the document, so it's awkward to spell them all out, it would be better to do this in a fork, but it's not worth doing that until it seems that the proposal is likely to be agreed. Moreover, if it does look like a proposal is going to be agreed, or when it has been, it would definitely be useful for the proposer to fork and update the documents, because otherwise someone else will have to do it later (as for trac tickets). So we should encourage that. However, to enable it, we need really simple instructions about how to do it! - Regarding a hybrid approach of GitHub and trac, it seems that part of that ship sailed when we started managing the text in GitHub. That said, I see no reason not to allow changes to be vetted in trac until we have enough success using GitHub to track modifications that the community is ready to leave trac behind. We are already referencing trac from GitHub. Opening the option to not use Trac seams like the next step to me. Best, Dave Blodgett -- You are receiving this because you are subscribed to this thread. Reply to this email directly or view it on GitHub: https://github.com/cf-convention/cf-conventions/issues/130