Proposal tracking
Pull request
Table of contents
Problem
How should we:
- Draft proposals?
- Store under review proposals?
- Archive proposals?
Each of these is a distinct, important step. We may be able to use the same
storage for multiple steps.
Background
One thing that is not under question is that we will have accepted proposals
in Markdown. This is critical, as we are essentially only delaying when a
proposal goes to Markdown.
The evolution process expects that community contributors will author proposals
for review by the core team. Things to consider are:
- How easy is it for an author to write a proposal?
- What if there are multiple contributors to a proposal?
- How easy is it to comment on a proposal?
- What about small typo fixes?
- How do we prevent unwanted edits during the comment process?
- How much work does it take to convert a proposal into a final doc edit?
- How do we prevent edits after a decision is complete?
In any situation, it's necessary that proposals be clearly contributed to Carbon
(even if in a draft phase, even if never accepted), and have an appropriate
license attached.
Although the evolution document currently makes statements about how to manage
proposals, changes in approval from this doc may affect the evolution process.
Explicit wording changes aren't outlined here because they are assumed to be
part of executing this proposal rather than the substance of this proposal.
For reference, a version of this proposal is also available in GitHub (broken
link:
https://github.com/carbon-language/carbon-proposals/blob/d1946fab824742b4857fa74ffc1b9fe9af37375d/proposals/p0001.md).
Proposal
Overview
This proposal presents two possible flows: one Google Docs-centric, one
Markdown-centric. This is an open question.
In either case, it's assumed that we will want a Carbon language shared drive
for any Google Docs we may create, and a Proposal archive GitHub repository.
Open question: Do we use a Google Docs-centric or GitHub Markdown-centric flow?
Decision: GitHub Markdown-centric flow
All documents will end up in Markdown. Some members of the core team have a
stated preference for reviewing proposals in Google Docs, and some have a
preference for Markdown. No other clear options exist. This would yield two
possible flows:
Option: Google Docs-centric flow
Overview
- Draft proposals: Google Docs
- Under review proposals: Google Docs
- Archive proposals: Google Docs + PDF
- Final format: Markdown
Flow summary
For reviewing a proposal:
- Authors create a Google Doc in the Proposals shared folder.
- Authors may want to trim down edit access, leaving only comment access.
- When ready for review, the authors share the Google Doc on Discourse Forums.
- Community comments on the Google Doc.
- To move for a decision, ownership is transferred to a review manager.
- The review manager trims down all access to comment access.
- When a decision is reached, the review manager updates the doc and moves it
to the Proposal Archive folder in the Carbon language shared drive.
- A PDF is saved to the carbon-proposals GitHub repository.
- The author converts any long-term documentation portions of the doc to
Markdown.
If the proposal needs to be checked later to figure out why a decision was made:
- Pragmatically, the PDF should have the same viewable content as the Google
Doc, and so can be used.
- The Google Doc's comments will be a mess to read, and so should likely be
treated as inaccessible later.
- The edit history of a Google Doc is only visible to users with edit access.
Since most people will have comment-only or view-only access to reviewed
docs, we should treat edit history as not accessible.
Advantages/Disadvantages
Advantages:
- Supports collaborative editing.
- Commenting in Docs is a slightly better UI, even though the commenting
workflows are equivalent.
- Images can easily be embedded in the Google Doc, without needing separate
files.
Neutral:
- Has an easier suggested edit workflow than GitHub.
- For commenters, this may be a pro because they can see their suggested
edit as they make it.
- For the author, this is a mixed bag:
- When a suggestion is for multiple, fragmented edits, it's harder to
read.
- for example, "foo ~~bar
baaz bangwiz ~~bing" -> "foo baaz
bangbing"
- It's easier to accept changes.
- It's harder to comment on changes, as the change is still visible
and hiding the original state of the doc.
- This is especially true when trying to respond to comments by
others on a suggested edit, as you can't both have a
discussion and apply/reject the edit.
- It's harder to make alternative edits and/or reject changes, as it
effectively resolves the comment thread and hinders further
discussion.
- For other readers, this is likely a con: it's harder to read the
original state of the doc that's been suggested on, and it's not clear
how the author will respond.
Disadvantages:
- Documents will go through at least three different file formats (Docs, PDF,
Markdown).
- Docs->Markdown conversion has limited tooling support.
- Comment history will be lost on conversions.
- Using different formats for proposals and documentation/specification
creates additional work when pulling text into a proposal to suggest
modifications, and when applying those modifications.
- Any differences between the text in different formats will be difficult
to notice, particularly if the author makes a change when converting
long-term documentation from Docs to Markdown.
- Difficult to manage access control on files.
- Docs does not provide access to version history (desirable) without
granting full edit access (undesirable).
- Shared drives combine permissions for adding files to a folder and
editing files. Permissions can also only be added, not removed, from
individual docs. As a result, contributors who can create new proposals
will also receive the ability to edit all proposals.
- Docs will not automatically mirror permissions if we use two different
sharing systems (shared drive and shared folder).
- Difficult to archive documents as read-only.
- If we set archived documents to be view-only, users won't be able to
read comments. At that point, the PDF version that we plan to commit to
the Proposal archive GitHub repository is sufficient, and we could
delete the proposal.
- If we set archived documents to allow commenting, then users can comment
on and add suggested edits to archived documents. Only review managers
could close suggested edits. This could confuse the history of the doc,
and stop archives from looking read-only.
- In any case, archived documents would not be editable, and so revision
history could not be seen.
- Managing comments over time is infeasible.
- It's infeasible to point people to old comment threads, to suggest they
read and engage if they disagree with the original request.
- Even identifying whether a comment led to a particular change is
infeasible.
- Comments vanish if the text they're on is removed.
- There is no way to quickly check for unresponded comments: instead,
authors will need to repeatedly crawl the doc. This is exacerbated by
process advice that the commenter be left to decide whether to resolve
comments, or slow-to-respond commenters.
- No support for seeing deltas.
- Only editors can see the delta. However, it should be expected that only
the author is an editor.
- Even if deltas were accessible, Docs delta support requires extra work
on the part of a doc editor to set up markers in the version history.
- Restricted support for extensibility.
- Proposals frequently have duplicated/boilerplate text that the authors
may need to rewrite in bulk, for example when renaming something. Google
Docs has built-in regex search. However, regex replace with capture
groups isn't directly supported, so users would need to learn and use
Google Apps Script to do the replacement.
- When URLs need to be replaced, Google Docs has no support. Authors
must audit every URL.
- No low-friction support for formatted code blocks and inline code snippets.
- Extensions exist; we'll probably want to
recommend a specific extension to the community.
- Intra-document links break frequently, just from moving headers.
- It's also difficult to determine when an intra-document link is broken.
There doesn't seem to be support (built-in or add-on) for identifying
issues.
- It's also not supported to search through links, so even if the author
knows what they're breaking, they won't be able to find it.
- Google Docs comment syntax is essentially text-only.
- Syntax can interfere with "*" insertion in code snippets due to bolding
confusion.
- May enhance Google-centric views of Carbon.
- Swift and Rust use Markdown-centric flows.
- Some companies may block Google Docs, because it's a file transfer service.
- It's unclear how prevalent this would be. GitHub may also be blocked
under similar security rules, but it's a requirement for participation
whereas Google Docs is avoidable.
- Ref:
[1],
[2],
[3]
- Some individuals may refuse to use Google Docs over privacy (or other)
concerns.
- We've considered creating a GSuite domain for Carbon contributor
accounts to help address this. However, it may not address everyone's
concerns.
Option: GitHub Markdown-centric flow
Overview
- Draft proposals: Markdown, possibly in Google Docs (but not required)
- Under review proposals: Markdown with review comments by way of GitHub
- Archive proposals: Markdown
- Final format: Markdown
Flow summary
For reviewing a proposal:
- Authors prepare a markdown doc using their favored tooling.
- Authors create a pull request with the markdown doc, to the carbon-proposals
GitHub repository.
- Community comments on the pull request.
- To move for a decision, no special action is taken.
- When a decision is reached, the review manager ensures the markdown doc is
updated appropriately and approves the pull request.
If the proposal needs to be checked later to figure out why a decision was made:
- The committed markdown represents the final state of the proposal.
- The pull request may be viewed to read through comments, even after it is
merged.
- The pull request will have edit history publicly visible.
- GitHub has a nice renderer for markdown diffs.
Advantages/Disadvantages
Advantages:
- No need to convert file formats.
- Markdown reviews can be committed directly, putting all history in one
place.
- When dealing with a proposal that results in separate long-term
documentation, any differences between proposal text and long-term text
will be relatively easy to see in a diff.
- Access control is straightforward, determined by location.
- Referring to older comments is feasible.
- There may be some cases where comments disappear in certain situations,
but these problems should be avoidable.
- The archival copy of a document will include an easy link to comment
history.
- Easy to see Markdown-formatted deltas in GitHub.
- The style of all documents can be updated centrally by changing a style
sheet.
- Multiple comments may be sent together in a review.
- Comments may also be sent individually as in Docs.
- GitHub comment syntax supports Markdown, allowing code in comments.
- Multi-author editing is possible by using a shared GitHub branch as a
source.
- This may still be less convenient than Google Docs flows, but
multi-author proposals could still use Google Docs to collaborate on the
Markdown.
Neutral:
- Has a more difficult suggested edit workflow than
Google Docs.
- For commenters, this may be a con, as it takes a little more work to add
a suggested edit. This may still lead to fewer suggested edits.
- For the author, this is a mixed bag:
- Whereas Google Docs may often see multiple, fragmented edits for the
same sentence, commenters would be more likely to suggest them
together (a pro).
- It's seamless to comment on changes, as it follows the normal
comment flow.
- It's seamless to make alternative edits and/or reject changes.
- The author may need to do extra reformatting/word wrapping after
accepting a Markdown change, which Docs would handle internally.
- For other readers, this is likely a pro: the current state of the doc
remains visible.
Disadvantages:
- GitHub comments on pull requests can be difficult to find in certain
situations.
- Comments can disappear when a pull request is rebased and force-pushed.
- Comments generally don't get tracked across revisions to a pull request.
- If we disallow force-pushes on pull requests, they are probably okay
most of the time.
- Can't comment on the rendered Markdown, only the raw Markdown.
- Images need to be stored separately from the main Markdown file.
- Final documentation may or may not need the images; they may only be
added to explain the proposal. that is, this may be extra work without
later benefit.
Details
Carbon language shared drive
Main shared drive
A shared drive will be used as a nexus for any Google Docs materials. This
mainly offers a central point for contributors to locate materials, as most will
not be able to modify contents.
A shared drive should be assumed to be present, regardless of whether we choose
a Google Docs-centric flow: if we allow/encourage the use of Google Docs for
collaborative editing in a Markdown-centric flow, we should still provide
storage.
Access controls:
- Managers: a minimal set (chandlerc + review managers?) to prevent accidental
edits.
- Not the entire core team, in order to discourage the core team from
using privileges not accessible to the rest of the community (including
sub-teams).
- Content managers: the review manager group, so that they can archive
proposals.
- Contributors: none - does not provide sufficiently distinct access from
content managers.
- Commenters: full community
- Viewers: none
Proposals (shared folder)
Community members need to be able to add proposals to the shared folder. This
will be available as a shortcut from the main shared drive.
In shared folders, edit access to the folder allows adding/moving/removing
files, but doesn't grant control over the actual file, which is still owned by
the individual creator. Unlike shared drives, proposal authors can remove edit
access from individual files.
Access controls:
- Owner: chandlerc
- Editors: full community
- Commenters/viewers: none (non-public)
Proposal Archive (folder in shared drive)
The archive will be used to store reviewed proposals. This will mainly make
comments on proposals available for future reference.
To allow viewing comments, comment access must be granted: Google Docs
comments are not visible to users with view-only access. At the same time, this
means contributors will still be able to comment on archived docs: this should
be discouraged.
Access controls:
- Inherited from Carbon language shared drive.
Google Docs proposal ACLs
In this setup, pending proposals go into the Proposals shared folder, where
they'll still have their own ACLs.
Note that, in the Markdown-centric flow, this is generally not relevant: using
Google Docs is optional and may often be skipped.
Access controls:
- Owner: proposal author (transferred to review manager, for proposals going
to decision)
- Editors: any collaborators
- Commenters: community
- Viewers: none
Markdown-specific questions
Open question: Where should proposals be stored in GitHub?
Decision: Store proposals in the repository they affect
Option: Proposal archive GitHub repository (carbon-proposals)
In this approach, the review managers are presumed to be responsible for commits
to the proposal archive.
Access controls:
- Commit privileges: review managers
Advantages:
- Easy to find pending proposals; just look at the carbon-proposals issue
tracker.
- All proposals will be uniquely numbered.
- No need for a proposal label: everything's a proposal.
Disadvantages:
- Proposals affect other repositories; may miss opportunities to combine
changes.
- Harder to filter for proposals that are relevant to a specific repository.
Option: Store proposals in the repository they affect
In this approach, we would store proposals in the same repository as they
affect. for example, a proposal about the spec would be stored in carbon-lang,
while a proposal specific to the compiler would be in carbon-toolchains. If a
proposal affected multiple repositories, we'd probably choose a single primary
repository for the proposal.
Specific to a GitHub Markdown-centric flow, we could additionally allow the
proposal's pull request to include the specific proposed changes to
documentation where appropriate, allowing for the author to avoid duplicating
text in the proposal itself.
We would likely still want a proposal document with a summary at a minimum, even
for small proposals. The summary can link to the pull request for details,
creating additional breadcrumbs for reading the full (with additional document
edits) proposal.
Rejected proposals should commit only the proposal document. A link to the
pull request in the proposal document should make it easier to research
rejections. Alternatively, rejected proposals could have their pull request
abandoned, but that would leave only the tracking issue as a breadcrumb for
history.
Access controls:
- Commit privileges: normal repository access, possibly with review managers
getting broad access in order to finalize proposals.
Advantages:
- Makes it easier to demonstrate the actual changes a proposal suggests
making.
- Reduces possible redundant work by the author of making changes in two
places (the proposal, and affected documents).
- Keeps discussion about the proposal and discussion about the proposed
changes on a single review thread, for most cases.
- Makes it easy to find most/all proposals relevant to a given repository.
Disadvantages:
- Proposals would need to be tracked separately per-repository.
- This could also end up being a pro if we get a bunch of different
repositories, as it may become easier to find relevant proposals for a
given repository. It's only really a con for as long as we have few
repositories (which may last long-term, as having many repositories may
lead to other scaling problems).
- Access controls are part of the parent repository, and so will be less
restricted than if we had a separate proposals repository.
- Proposals won't be uniquely numbered.
- We'll need to refer to proposals with the repository, for example,
carbon-lang/456.
- Need to make sure we have a proposal label, to separate from non-proposal
traffic.
Open question: Should we push comments to focus on GitHub?
Decision: Push high-level comments to GitHub
Common principles
- Proposals will be declared on Discourse Forums at important stages; for
example, asking for input on ideas, RFC, decisions, etc.
- Some discussion is expected to occur on the GitHub PR.
Option: Push high-level comments to Discourse Forums
We could push for high-level comments to be added on the same thread as the
Discourse Forums RFC.
Advantages:
- Discourse Forums offer better interfaces for pure, non-code-comment
discussion.
- Email notifications are easier to parse with less threading, more use of
quotes, and "In Reply To" automation.
- More familiar for people familiar with mixed Discourse/GitHub workflows.
- Both Rust and Swift use Discourse, and are closer to this option.
- May also be better for people used to using email lists to discuss
proposed changes.
Disadvantages:
- Leads contributors to two different places for comments - some high-level
discussion will inevitably be in GitHub.
- Contributors must read both Discourse Forums and GitHub to get context.
Option: Push high-level comments to GitHub
We could push for high-level comments to be added to the proposal PR, with other
discussion.
Advantages:
- The GitHub PR becomes a single hub for conversation.
- More familiar for people familiar with GitHub-only workflows.
Disadvantages:
- Discourse Forum topics cannot have "create" without "reply" permissions, so
some high-level discussion will inevitably be in Discourse Forums.
- We could address this by only allowing moderators to post RFCs, but that
may be overly exclusive.
- Email notifications include only the lines of code affected, not what is
being replied to. This will generally make it infeasible to get context from
emails.
- Comment threads sometimes make it unclear what's being replied to. for
example, (broken link:
https://github.com/carbon-language/carbon-proposals/pull/5#discussion_r423401993)
and (broken link:
https://github.com/carbon-language/carbon-proposals/pull/5/files/a51ff951561accfb4aee403d7add6e8e69009ce1#r423401993)
are equivalent, but the replied-to-comment is only visible in the file view.
- This may be particularly visible as an issue if high-level discussions
are often not line-specific.
- Not clear what to do about resolving high-level discussion comment threads.
- If comment threads are resolved, it's harder to read them, discouraging
third-party comment.
- If comment threads are not resolved, they may create a bunch of noise.
As noted above, GitHub manages the file view better than the discussion
view.
- Mixed solutions will leave it to the author to choose the balance of
issues.
Option: Give no guidance, see what happens
Rather than trying to guide high-level discussion to a particular medium, we
could offer no guidance.
Advantages:
- Less policies, more freedom.
- Discover what happens, switch back and forth over time based on
individual contributor preferences.
Disadvantages:
- Advantages of a primary hub are discarded. Disadvantages of multiple hubs
should be assumed to remain.
Open question: Should there be a tracking issue?
Decision: Don't require tracking issues
Common principles
- Discourse Forum topics are minimally used to announce when a decision is
going to RFC, going to decision, and the decision once made.
- The proposal's PR may be used for discussion of the proposal.
Option: Tracking issue for all proposals
In a workflow where there's always a tracking issue:
- Create the tracking issue, for example #123.
- Create the PR, for example #456, naming the proposal p0123.md after the
tracking issue.
- Use GitHub features to link #123 and #456.
- Update the status in p0123.md and labels of #123 when progressing a
proposal.
- When a decision is made, create a new PR, for example #789, containing the
decision p0123-decision.md.
- This does not replace the Discourse Forum topic announcing a decision.
- Use GitHub features to link #123 and #789.
- Comments on the decision may go on the decision PR, similar to the
proposal PR discussion.
- Declined/deferred proposals may be committed or not; it doesn't matter.
Advantages:
- Easy to find the full decision in p0123-decision.md.
- The PR to create the decision is clearly visible in the associated tracking
issue.
Disadvantages:
- The tracking issue separates more state.
Option: Don't require tracking issues
In a workflow where there's no need for a tracking issue (although contributors
may create them for bucketing work, they are non-essential):
- Create the PR, for example #456, naming the proposal p0456.md.
- Update the labels of #456 when progressing a proposal.
- Don't bother putting the status in p0456.md: people should rely on the PR
labels since it's in the same place.
- When a decision is made, add it as a comment to #456.
- This does not replace the Discourse Forum topic announcing a decision.
- Comments on the decision should go in Discourse Forums.
- The author is asked to link to the decision in p0456.md before the commit
is approved.
- If declined/deferred proposals are committed, it would be best to add a
status in p0456.md before committing.
Advantages:
- Lighter weight process: no tracking issue, and no need to update status in
p0456.md.
Disadvantages:
- Harder to store the decision in a way that clearly links it to the original
proposal.
- In particular, finding discussion about the decision is hard to resolve.
Neither below ideas clearly improve on this, so preference to keep
everything in Discourse Forum topic.
- Could in theory have the full decision in p0456.md. Pro is it's easy to
find, con is it makes it look more like the author's writing the
decision.
- Could keep storing p0456-decision.md. Pro is it's easy to find, con is
the lack of association with #456 and extra file+PR. Not clear that
storage offers enough independent value to justify.
- Restricts where discussion about a decision should occur.
Open question: Should declined/deferred proposals be committed?
Decision: Do not commit declined/deferred proposals
Common principles
- Accepted proposals are always committed.
- We may (or may not) commit decisions for any committed proposal (accepted or
otherwise).
- See notes in the above open question.
Option: Do not commit declined/deferred proposals
Under this approach, declined/deferred proposals are never committed. Instead,
the PR is abandoned and we at most save a link to it.
Note that GitHub does (at least to some extent) retain closed PRs, even those
coming from a fork.
Advantages:
- The proposals directory remains a list of only accepted proposals.
- No need to spend effort saving declined/deferred proposals.
\
Disadvantages:
- Lose an easy way to check declined/deferred proposals for history.
- More reliance on searching forums for history.
Option: Commit declined/deferred proposals
Under this approach, declined/deferred proposals are committed.
Advantages:
- Easy to skim through declined/deferred proposals.
Disadvantages:
- Finding accepted proposals may become more difficult.
- Could put declined/deferred proposals in a different directory.
- Requires a little more effort in order to save declined/deferred proposals.
Alternatives considered
Use a shared drive for everything
Instead of adding a shared folder for proposals, we could instead use a shared
drive for everything. However, this puts us in a bad situation for taking in new
proposals. We would need to choose between:
- Allowing all community member edit access to all proposals.
- Requiring authors ask a review manager to create a blank proposal for them
to edit.
Neither of these feel like great situations - they are either overly-broad or
overly-restrictive sharing, neither approximating what we actually would want,
which is for anybody in the community to easily create proposals.
Appendix
General concern about multiple Markdown flavors
Different markdown implementations have subtly different rendering rules for the
same input. for example, per
CommonMark Spec, table syntax is not
specified, although
GitHub uses a table extension.
However, we do plan on using GitHub consistently; this only stands to confuse
users of other Markdown systems.
Choosing the Google Docs-centric flow does not eliminate this issue, since
proposals will be archived in Markdown either way.
Google Docs vs GitHub comment flow comparison
Comment clustering
Google Docs only allows sending comments individually.
GitHub supports either sending comments individually or clustering multiple
comments together, as in a review.
Basic comments
Google Docs:
- Follow the link to the doc
- Select text to comment on
- Click on "+" to add a comment (or use keyboard shortcut)
- Enter text
- Click "Comment"
GitHub:
- Follow the link to a pull request
- Click on "+" next to line to comment on
- Enter text
- Click "Add single comment"
Suggesting edits
Google Docs:
- Follow the link to the doc
- Select text to suggest edit on
- Type suggested edit
GitHub:
- Follow the link to a pull request
- Click on "+" next to line to comment on
- Optionally select multiple lines
- Click on the left-most button
- Edit quoted text
- Click "Add single comment"
Google Docs add-ons
Docs to Markdown
https://gsuite.google.com/marketplace/app/docs_to_markdown/700168918607
This plugin actually looks pretty good, and may actually work better than
Google's internal-only equivalent. I'm not seeing obvious downsides.
Advantages:
- Provides easy conversion of Google Docs to Markdown.
Disadvantages:
Code blocks
https://gsuite.google.com/marketplace/app/code_blocks/100740430168
This is another code formatting tool, but doesn't seem to work as well as
Google's internal-only equivalent. Google's internal-only equivalent happens to
do some syntax highlighting, whereas Code blocks does none.
Advantages:
- Public code formatting.
- Works with "Docs to Markdown" plugin to get ```-block escaping.
Disadvantages:
- Mediocre syntax highlighting for Carbon.
- No inline
foo highlighting, unlike Google's internal-only equivalent.
- Different highlighting from that in the eventual Markdown document.
Advanced Find & Replace
https://gsuite.google.com/marketplace/app/advanced_find_replace/11210842879
Advanced Find & Replace offers more advanced functionality than the built-in
features, particularly around URL and regexp support.
Advantages:
- Offers improved functionality around key Google Docs friction problems.
Disadvantages:
- 2 of 5 stars: we should not expect quality.
- \$6 purchase price may turn off contributors.
- Requires permissions that are banned by Google internally.
Markdown editing
There are multiple markdown editing tools.
StackEdit
https://stackedit.io/
StackEdit may look good on the surface, but we may effectively be restricted to
using it as a WYSIWYG markdown editor, not for collaboration. For that, it's
simply one option amongst many, and not necessarily the best.
Advantages:
- Provides preview when editing Markdown files.
- Provides application-specific comment support.
Disadvantages:
- Cannot use shared Google workspaces with Google corp accounts, due to
security restrictions. Will likely cause issues for others, too.
- Google Docs only works as passive storage.
- StackEdit docs aren't Google Docs, comments aren't Google Docs comments.
GitHub Markdown syntax highlighting
GitHub's syntax highlighter
allows adding third-party extensions,
but requires them to have significant use.
Note we can't take advantage of this until Carbon is public. We may be able to
find a language with sufficiently similar syntax to
override the language and get
reasonable highlighting.
Rationale
During the decision process, several of the individual rationales were
influenced by the idea that one could view the proposal process in one of two
ways:
A PR-centric model. The review team is trying to achieve consensus around a
PR as a whole. The PR may (and often will) implement the proposed changes.
The proposal as essentially a description of the changes.
A proposal-centric model. The review team is trying to achieve consensus
around a proposal. The PR may show a preview of the implementation, but it
is purely informative.
If one favors a PR-centric model, this steers one away from committing proposals
that are not accepted, towards committing proposals to the affected repository,
etc. In general, the PR-centric model was favored.
Rationale for using a GitHub markdown-centric flow
- The GitHub markdown-centric flow makes the on-ramp as smooth as possible for
external contributors.
- This positions the project to maximize the ease of engaging with and
gaining contributions from the wider industry.
The final documents must be in markdown form, so it is best if contributors
have the option to stay in markdown for the whole process. This is
significantly less complex than something that converts between formats:
- Less to learn
- Fewer steps in the process
- No outdated versions in the old format left behind
The technical flow seems on balance better than the Google Docs-based
workflow. The proposal does a really good job explaining advantages and
disadvantages. In summary, the Google Docs-centric workflow has a lot of
disadvantages that make it difficult to work with proposals over the long
term.
Rationale for not requiring tracking issues
There were several members who had no strong preference on this issue. The
consensus was that until there is a compelling reason to require tracking
issues, the process is more light-weight without them.
Rationale for not committing proposals that are declined or deferred
- This approach seems simpler.
- When a proposal PR includes the changes put forth in the proposal
(PR-centric model), the declined PR might need to be considerably
changed--and might lose context--in order to be committed.
- The community will put a lot of work into developing, discussing, and making
a decision on a proposal. There may be valuable insight in rejected
proposals, so it makes sense to archive them. However, as noted, committing
the PR will not always be possible with reasonable effort if not working in
a proposal-centric model, as the proposal text may not stand on its own.
- While we may discover issues with this approach, it is better to try this
way, see if any issues can be rectified, and propose changes as necessary.
Rationale for committing a proposal to the repository it affects
- This keeps the proposal close to the repository, and therefore, the
community, that it affects.
- It facilitates autonomy of (future) review teams responsible for a
particular aspect of Carbon. For example, a reference implementation team
responsible for the carbon-toolchain repository.
- It simplifies the common case and makes it easier to find how each
repository evolves over time.
Rationale for pushing high-level comments to GitHub
While opinions were not as strong, reasons given for preferring comments in
GitHub:
- This flow will maximize the alignment with “normal” GitHub development flow.
- This both improves pulling external/new people into the flow, and will
reduce the number of flows they need to learn/remember/tool for.
- We will get ecosystem benefits as this flow continues to be optimized by
GitHub and those using it.
Open questions
Do we use a Google Docs-centric or GitHub Markdown-centric flow?
Decision: Use GitHub Markdown-centric flow.
Where should proposals be stored in GitHub?
Decision: Store proposals in the repository they affect.
Should we push comments to focus on GitHub?
Decision: Push high-level comments to GitHub, rather than focusing these
discussions in Discourse.
Should there be a tracking issue?
Decision: Don't require tracking issues.
Should declined/deferred proposals be committed?
Decision: Do not commit declined/deferred proposals.