-
Notifications
You must be signed in to change notification settings - Fork 4
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
Initial SIP process proposal #21
Open
aaronsteers
wants to merge
13
commits into
main
Choose a base branch
from
12-proposal-process
base: main
Could not load branches
Branch not found: {{ refName }}
Loading
Could not load tags
Nothing to show
Loading
Are you sure you want to change the base?
Some commits from the old base branch may be removed from the timeline,
and old review comments may become outdated.
Open
Changes from all commits
Commits
Show all changes
13 commits
Select commit
Hold shift + click to select a range
dfec5b0
initial proposal documentation proposal (draft)
aaronsteers 778e5d4
rename with PR ID
aaronsteers f180b2d
incorporate template
aaronsteers fde29bc
fill template
aaronsteers c5b14b2
update proposal and template text
aaronsteers a660c63
add issue link
aaronsteers 1058cfc
additional vote process details
aaronsteers 51818ea
updated proposal, add group page
aaronsteers 344fa2f
accept suggested fix
aaronsteers a4cffd0
more direct "downsides" prompt
aaronsteers 3ebfbe8
add clause about Members as tie breakers
aaronsteers 8606878
Merge branch '12-proposal-process' of https://github.com/MeltanoLabs/…
aaronsteers 8bcb399
fixed math
aaronsteers File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,33 @@ | ||
# Working Group Membership | ||
|
||
The Singer Working Group is comprised of several companies each invested in the success of the Singer Spec. | ||
|
||
## Member Companies | ||
|
||
In working group documents, members are referred to as "Member Companies", "Group Members", or simply "Members". | ||
|
||
Members do not pay dues and do not receive any payment for membership. To be considered for membership, a company must have some history of using Singer and contributing within the community, and they should have reference to their own use of Singer on their company's external website. | ||
|
||
## Group Leadership | ||
|
||
We aim to always have 3 companies in position of leadership, called "Leading Members" in our working group documents. | ||
|
||
The current Leading Members are: | ||
|
||
- [Meltano](https://www.meltano.com) - Maintainers of the [SDK for Taps and Targets](https://sdk.meltano.com/en/latest/) and [MeltanoHub for Singer](https://hub.meltano.com/singer/). | ||
- [Talend](https://www.talend.com) - Maintainers of [Singer.io](https://Singer.io), the [Singer Spec docs](https://github.com/singer-io/getting-started/blob/master/docs/SPEC.md), and [StitchData.com](https://stitchdata.com). | ||
- [Wise](https://wise.com/us/) - Maintainers of [PipelineWise](https://transferwise.github.io/pipelinewise/). | ||
|
||
### Responsibilities of Leadership | ||
|
||
Leading Members are expected to: | ||
|
||
1. Regularly attend and participate in working group sessions, | ||
2. Participate in proposal review discussions, and | ||
3. Register a vote on new proposals within the designated voting period of each proposal. | ||
|
||
## New Members | ||
|
||
In general, we are open to accepting any company into our group which is similarly committed to the success of the Singer spec and the Singer community. | ||
|
||
New membership invites may be proposed by way of nomination internally. Any existing Member Company may nominate a company to be invited, subject to approval by majority vote from the Leading Members. |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,192 @@ | ||
# Proposal Documentation and Review Process | ||
|
||
## Proposal Status | ||
|
||
| Status | _Reviewing_ | | ||
| ------ | ------ | | ||
| Issue Link | [#12](https://github.com/MeltanoLabs/Singer-Working-Group/issues/12) | | ||
| Created | 2021-09-27 | | ||
| Updated | 2021-02-21 | | ||
|
||
----------------------- | ||
|
||
## I. Proposal Summary | ||
|
||
### TL;DR Overview | ||
|
||
A proposal for drafting, submitting, reviewing, voting on, and approving proposals. | ||
|
||
### What specific change do you propose to make? | ||
|
||
We propose a process for submitting and managing proposals, as described here in this proposal. | ||
|
||
### Motivation | ||
|
||
In order to deliberate on and select specific changes to the Singer protocol and established standards and best practices. | ||
|
||
### What problem does it solve? | ||
|
||
The process provides a specific and actionable path to propose improvements to the Singer specification, documentation, and other community resources. | ||
|
||
### Why is it needed? | ||
|
||
This proposal established means for proposals to be incorporated back into the spec, and there is no specific process for those proposals to receive careful review and constructive feedback. | ||
|
||
----------------------- | ||
|
||
## II. Proposal Details | ||
|
||
Each new "Singer Improvement Proposal" (or "SIP") shall leverage the following process. | ||
|
||
### Phase 1: Open an Issue | ||
|
||
First, open an issue in GitHub to confirm the idea is viable and has some interest from the community. Ask others to comment on your issue and provide their feedback. | ||
|
||
### Phase 2: Create the proposal doc | ||
|
||
When you are ready to draft the proposal, create a new branch starting with the issue number followed by a dash ('-'). The branch may be created in the primary repo if permissions allow, or a forked version of the repo otherwise. | ||
|
||
Given an original issue number `14` and PR number `21` in GitHub: | ||
|
||
- Example Proposal Title: "Add Widget to Singer" | ||
- Example Branch Name: `14-add-widget-to-singer` or `forkid/14-add-widget-to-singer` | ||
- Example File Name: `proposals/PR21 - Add Widget to Singer.md` | ||
|
||
Copy the [document template](../template.md) and fill out the proposal. Commit to your branch, push, and then open a new PR that links back to your original issue. | ||
|
||
When your proposal is ready for review, change the status to "Ready for Review" and post a note to the original issue. | ||
|
||
### Phase 3: Review Period | ||
|
||
The working group will pick 1-3 topics each month to review from those in "Ready for Review" status. Once selected for review, update the doc status to "Reviewing" and enter the comment-by-date deadline here into the proposal document. | ||
|
||
Over the course of review, the working group members may add comments and suggestions to the pull request directly. If changes to the text of the proposal are needed as a result of the review process, the author(s) shall update the relevant proposal text to address this feedback to continue moving forward in the review process. Author(s) shall also update the "Date Updated" field in the doc whenever changes are applied. | ||
|
||
### Phase 4: Voting Period | ||
|
||
At the end of the review period, and when all feedback has been addressed, a member of the leadership group will post to the pull request that "voting is open" on the proposal. | ||
|
||
#### Voting | ||
|
||
Once voting is open, one representative from each Members Company may post a vote: | ||
|
||
1. "Strong Yes" | ||
2. "Yes" | ||
3. "No" | ||
4. "Strong No" | ||
|
||
All Member Companies are encouraged to vote, but only the Leading Members are _required_ to vote. | ||
|
||
#### Vote Scoring | ||
|
||
Votes from all Member Companies are scored, but only votes from Leading Members will typically impact whether or not the proposal passes. | ||
|
||
| Vote | Leading Members | Other Members | | ||
|--|--|--| | ||
| "Strong Yes" | `+1.0` | `+0.01` | | ||
| "Yes" | `+1.0` | `+0.01` | | ||
| "No" | `-2.0` | `-0.01` | | ||
| "Strong No" | `-2.5` | `-0.01` | | ||
|
||
After summing the value of all qualified votes, and after the voting period has passed: | ||
|
||
- Scores `>=1.0`: `Approved` | ||
- Scores `<1.0`: `Not Approved` | ||
|
||
Note that with 3 Leading Member Companies, a "Strong No" from a Leading Member is essentially a veto vote. If a Leading Member does not want to approve but also does not want to veto, then a simple "No" vote may be logged. In that scenario, the proposal will then be approved only if both other Leading Members vote "Yes" _and_ if "No" votes from other Members do not outweigh the Members' "Yes" votes. (The 'Other Members' votes are the tie breakers in this case.) | ||
|
||
### Phase 5: Approval or Non-Approval | ||
|
||
If the SIP is approved, the author shall perform the following steps: | ||
|
||
1. Update the document status to "Approved". | ||
2. Update the document file name to use the next available SIP number as three digit 0-padded integer. | ||
- For example: if your proposal is titled `Process for XYZ` and the prior approved SIP number was `012`, then your new file name would be `013 - Process for XYZ.md`. | ||
3. Add the new document title, with hyperlink, to the "Approved" section of the index (`proposals/index.md`). | ||
4. Merge the pull request. | ||
|
||
If the SIP is not approved, it will return to draft status and/or it may be replaced by a new or altered submission based on Working Group feedback. | ||
|
||
### Document Lifecycle Edits | ||
|
||
Occasionally, existing Proposal documents may need to be edited or updated for readability or clarification. Modifications to approved proposals will be managed using the following process: | ||
|
||
1. Any Member Company may propose edits or clarifications by submitting a pull request against the document. | ||
2. The author shall add a "Change log" section to the document, with an entry describing the nature of the update(s). | ||
3. The author should request approval from one or more Leading Members. | ||
4. The pull request may be merged by the author, pending at least one approval on the pull request from a Leading Member. | ||
|
||
This Edit process _should not_ be used for any significant changes which would significantly alter or undo prior decisions. Significant modifications and revisions shall require a fresh vote, and any Leading Member may reject the proposed edit and/or request the edit be submitted as a formal Proposal. | ||
|
||
Examples of valid lifecycle edits: | ||
|
||
1. Expanding upon documentation which may have otherwise been unclear. | ||
2. Correcting small grammatical or spelling issues. | ||
3. Creating or updating section headers for readability. | ||
4. Improving readability by providing examples of a specific use case or behavior. | ||
5. Adding hyperlinks and references to related resources. | ||
6. Adding or updating a table of contents. | ||
7. Minor updates to working group processes, especially if those updates don't impact general function or outcomes. (For example, extending a review period from 14 days to 21 days.) | ||
|
||
Examples of significant edits which should instead be submitted as formal proposals: | ||
|
||
1. Updating from one standard framework to a newer version of the same standard. | ||
1. Introducing significant changes to key processes or to a critical function of the spec. | ||
1. Any other substantive change that could impact the stability or interoperability of the spec. | ||
|
||
----------------------- | ||
|
||
## III. Additional Information | ||
|
||
<!-- Note: Author may delete any headers in this section which are not relevant. --> | ||
|
||
### Which layer(s) of the Singer ecosystem does this proposal directly touch? | ||
|
||
Select all that apply: | ||
|
||
- [ ] Singer Specification - required capabilities and behaviors | ||
- [ ] Singer Specification - optional capabilities and behaviors | ||
- [ ] Singer best practices and other guidance | ||
- [x] **Singer Working Group - practices and procedures** | ||
- [ ] Singer documentation (Other) | ||
|
||
### What are the downsides to this change, if any? | ||
|
||
None. | ||
|
||
<!-- ### Is the change backwards compatible? | ||
|
||
N/A - Not applicable. --> | ||
|
||
### Other Considerations | ||
|
||
1. We may want to incorporate into the process a set of rules for what is in or out of scope for this working group. | ||
2. We should plan for the process (or at least the proposal template) to evolve over time. | ||
|
||
### How are Singer developers affected by the change (if applicable)? | ||
|
||
Developers may receive guidance and/or provide feedback by reading and engaging with SIP documents through the draft, review, and approval process. | ||
|
||
### How are Singer users affected by the change (if applicable)? | ||
|
||
Users over time should see more robust capabilities and more uniform behaviors across taps and targets. | ||
|
||
<!-- ### Prototype Implementations (if available) | ||
|
||
Not applicable. --> | ||
|
||
### Future Plans | ||
|
||
Over a period of submissions, we likely will continue to evolve this format and process based on learnings. | ||
|
||
<!-- ### Excluded Alternatives | ||
|
||
Not applicable. --> | ||
|
||
<!-- ### Acknowledgements | ||
|
||
N/A --> | ||
|
||
### What defines this SIP as "done"? | ||
|
||
The process will be approved for use by the Working Group. |
Empty file.
Empty file.
Empty file.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
As mentioned in the Feb meeting, I'd like to propose that this not have any sort of language like "if any" to strongly encourage documenting the thought process that went through thinking about downsides, since there are always some kinds of downsides to any change (e.g., influencing a process towards a specific direction, less flexibility in some use cases, effects if someone is using a different language/platform/orchestration tech, etc.), and perhaps connecting this to alternatives, potential weaknesses, etc.
In this proposal, there aren't many clear downsides, other than the ever present scary unknowns. It might be worth poking holes in the potential weaknesses of the voting approach, maybe what happens if this process turns out to be too rigid, any potential for locking proposals in a back and forth, etc.
Otherwise, at least acknowledging the research that went into this SIP and the feeling that, given that, it is at least a good starting point would be good to mention here I think :)