Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

GIP-0061: Improvements to the GIP process (WIP) #30

Draft
wants to merge 9 commits into
base: main
Choose a base branch
from

Conversation

pcarranzav
Copy link
Member

Early draft of some proposed changes to GIP-0001 and GIP-0001, with an accompanying GIP-0061 explaining the rationale for the changes.

gips/0000-template.md Outdated Show resolved Hide resolved
gips/0001-gip-process.md Outdated Show resolved Hide resolved

Once a GIP is published on the GitHub repo and the forum, some time should be left for the community to discuss. Some more complex or controversial proposals may require more time and discussion, while others that are more straightforward may be accepted more quickly, always at the Council's discretion.

After publishing, the authors are encouraged to present the GIPs in one or many of the relevant community calls, for instance, Indexer Office Hours that happen weekly on Discord, or the monthly core developer calls. To request a speaking slot in one of these calls, you can use this form (TODO: add form link) to get in touch with organizers from core dev teams and The Graph Foundation.
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@pcarranzav, @dmachotka and I will propose a form link for people to get in touch

gips/0001-gip-process.md Outdated Show resolved Hide resolved
gips/0001-gip-process.md Outdated Show resolved Hide resolved

**To avoid conflicts in GIP numbers, proposals should be posted as a Pull Request on GitHub with a GIP number _before_ being posted to the forum**.

After creating the Pull Request, post a thread in the GIPs and Governance category with a link to the Pull Request. The post should have the same title as the GIP, and include the Abstract and Motivation sections but linking to GitHub for the full GIP text. (Older GIPs may include the full proposal text in the forum post, but this is now discouraged as it is hard to keep the forum and GitHub versions in sync).
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@pcarranzav with the new GIP Tracker, we're considering having a GPT-powered TLDR/Summary for all GIPs, so people can quickly understand what the whole proposal is all about without having to read the entire thing (after clicking a link from the forum). It might make sense for us to do the same in the Forum discussion for all subsequent GIPs, with some automation. Do you see any problem with this?

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think that'd be pretty cool! I would just suggest adding a disclaimer noting this is a GPT-powered summary so it might be biased

@RembrandtK
Copy link
Contributor

Subproposal to consider as part of this: Should we consider changing GIP filenames (and therefore the URL) to exclude the name?

For example instead of 0001-gip-process.md use 0001.md?

Examples of how done elsewhere, demonstrating the pattern:

  1. https://eips.ethereum.org/EIPS/eip-1559
  2. https://www.rfc-editor.org/rfc/rfc2119
  3. https://github.com/bitcoin/bips/blob/master/bip-0032.mediawiki

Advantages:

  1. GIP can be easily looked up by URL (https://github.com/graphprotocol/graph-improvement-proposals/blob/main/gips/0001.md), without knowing or needing to type (or otherwise encode) the title.
  2. The title can be changed without breaking links.
  3. There is no ambiguity what the filename should be. (I see different variations of how to encode the title.)
  4. There is one authorative source for the title, what is specified in the file, rather than multiple versions.

Disadvantages:

  1. You cannot tell what the GIP is about just by looking at the filename.
  2. This is a change from what we are currently doing. (Bias to not changing unless there is a good reason.)

On balance I think the change will not be too disruptive (we might decided to leave historical GIPs 'as-is' to avoid breaking existing links) and worth doing. Not including the filename is the norm elsewhere.

Thoughts?

Additionally, we should consider configuring GitHub pages to provide GIPs links showing just the GIP, rather than wrapped in GitHub navigation and context.

@RembrandtK
Copy link
Contributor

And, while I think of it, I would be tempted to setup GitHub action requiring MD files pass MD lint tests. I have not checked if this is a good one, but as an example: https://github.com/marketplace/actions/markdown-lint

@RembrandtK
Copy link
Contributor

Another comment. :) I just got access to the GIP Tracker. That seems to be a manually maintained table? Could an automated version be created? Using GitHub action we could automatically create an index with the relevant information?

@p-diogo
Copy link

p-diogo commented Aug 7, 2024

@RembrandtK , thanks for all these suggestions.
I do see value in some. My take:

  1. Set up CI with MD lint tests: I agree; nothing is controversial here.
  2. On the more public-friendly Notion-based GIP Tracker: we plan to revamp it fully and have a better UI and navigation system. As we will stick with Notion, I agree we should automate it.
  3. Removing the GIP title from file name (and URL): I only find it useful to have the name in the .md file if navigation is based on GitHub-hosted GIP files. Given we'll have a better GIP Tracker and that we can indeed consider start using GitHub pages instead (will need some testing), I think we can go forward with your proposal and be more aligned with what seems to be the norm.

I unfortunately don't have the time to test all these proposed changes, but the Foundation will very soon have a new collaborator that will own governance end-to-end. Updating the GIP process and merging this PR will be that person's top priority. 👍

Copy link
Collaborator

@Andrew-Clews Andrew-Clews left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I've added my changes. As a next step @pcarranzav please double check my comments and I will directly update proposed changes.

Title: <The title of this GIP>
Authors: <A list of authors. Include full name or pseudonym. At least one author must have valid contact information provided in angle brackets.>
Created: <The date the GIP was created.>
Updated: <The date the GIP was last updated.>
Stage: <The current stage of the proposal. Specified by the author and confirmed by editors by virtue of a GIP being accepted into an editor's view of the repo.>
Stage: <The current stage of the proposal. Specified by the author and confirmed by editors by virtue of a GIP being accepted into the main branch of the GitHub repo. See GIP-0001 for the possible stages and process.>
Discussions-To: <The forum post where this proposal is discussed.>
Category: <(Optional) The type of GIP or GRP. This field should be left blank for GRCs. Valid types are "Protocol Logic," "Protocol Interfaces," "Subgraph API," "Process," "Economic Parameters," and "Protocol Charters".>
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This line refers to GRP which I believe will be removed going forward. Should this reference be removed?

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Good point

Created: 2021-02-21
Updated: 2021-04-09
Updated: 2023-09-28
Stage: Living
Discussions-To: https://forum.thegraph.com/t/gip-0001-and-getting-started-with-gips-grps-grcs-etc/1722/4
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Good idea

@@ -35,80 +35,138 @@ The high-level process is captured in the diagram below.

## Before a proposal is written

The author(s) should do the leg work to assess whether their idea is a good one that is likely to be supported by the community. This includes discussing the idea in public formus such as Discourse, Discord and Twitter.
The author(s) should do the leg work to assess whether their idea is a good one that is likely to be supported by the community. This includes discussing the idea in public spaces such as [Discord](https://discord.gg/graphprotocol), [Twitter](https://twitter.com/graphprotocol), and [The Graph forum](https://forum.thegraph.com/).

The author should also make sure the proposal is in line with the values and mission of The Graph. This may include reading past blog posts that allude to The Graph's design philosophy as well as talking to existing contributors to The Graph.
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Is there a page or source that spells out the values and missions of The Graph that could be used as a point of reference?

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Good question, the closest I could find that is public facing is this: https://thegraph.com/blog/introduction-to-the-graph/ - but there may be others or we may want to publish something updated and more thorough

- Brandon Ramirez
- Jannis Pohlmann
- Michael Macaulay
- Pedro Diogo
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Should we provide a method of contact on how to reach the editors?

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think the same Form we're using for other things should work?


## Simplified Stages

The Strawman and Proposal stages have been removed and merged into the Draft stage. In practice, proposals evolve from a simple abstract to a full blown spec, and tend to change throughout the process, and it's hard to draw the line between different stages. Keeping the stage updated in the GIP takes time, so we believe it's simpler to just differentiate between a proposal that is in progress ("Draft"), one that is ready for acceptance/deployment ("Candidate"), and one that has been concluded ("Accepted/Deferred/Withdrawn/Living").
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The original stage was referred to as Strawperson. Should this be updated to reflect the original term used?

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ah, Strawperson rather than Strawman? Good catch, missed it

4. **Candidate.** A proposal at this stage has a reference implemenetation that has been linked in the document and can be used to validate the idea described in the protocol.
5. **Accepted | Deferred | Withdrawn | Living.** These are resolution stages for a proposal:
1. **Draft.** This stage encompasses all proposals that are not ready for deployment. The proposal might include just Abstract and Motivation, or have a full-blown Detailed Specification. It can evolve through community feedback when in this phase, and the key requirement to move to "Candidate" is to have an implementation that is ready for deployment.
2. **Candidate.** A proposal at this stage has a reference implementation that has been linked in the document and can be used to validate the idea described in the protocol. The implementation must be ready for deployment, having completed any relevant audits and test plans.
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

After reviewing the stages here, please consider the following categories and associated definitions as they may enhance GIP tracking going forward:

  1. Draft - Day 0 through to Candidate stage
  2. Candidate - The Author may move their GIP to the candidate stage in Github to indicate to the Council and to the public that they believe enough support has been gathered from the community and sufficient due diligence has been completed for the Council to make a decision for approval. A minimum of 1 week draft on forum for public review is required.
  3. Approved - Council approval has been obtained for the GIP
  4. Deferred - The GIP is on hold or otherwise working through remediations to obtain Council approval
  5. Withdrawn - The submission was withdrawn by the Author or was withdrawn due to Inactivity. If more than 6 months have elapsed with no activity editors may move the status of a GIP to withdrawn. Authors may still contact editors to re-activate their proposal if the Author would still like to proceed with their submission at a later date.
  6. Implemented - Indicates that a GIP has either been deployed in the case of a code change or is in use today for procedure changes or other non-code based changes.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I have also started using 'Reserved', for GIP numbers that are reserved for future use but might not have any details associated yet. This is an optional stage before 'Draft'. If necessary or simpler they could have 'Draft' status and state they are reserved in the text.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I like the idea of adding an "Implemented" stage.
And for simplicity @RembrandtK I would suggest just using Draft, rather than adding an additional stage for Reserved.

For clarity it would be good if we outlined the "happy path" first, i.e. Draft-Candidate-Approved-Implemented, and then separately mention the other possible states (Deferred/Withdrawn), so that readers can get a general idea of the usual flow and then learn about the "exceptions". Wdyt?

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Agreed, we should present Deferred and Withdrawn after the natural progression of stages. I also agree having one stage for draft reduces complexity without losing effectiveness.

Updated the Category field to remove a reference to GRP.
Added additional "Discussions-To" link to more recent forum post. Added link to new intake form wherever TODO was noted. Updated the GIP stages and descriptions.
Updated the Discussion-To portion of the form with the relevant link to the forum. Changed the Strawman reference to Strawperson to reflect the original language used.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants