Skip to content

Contribution process including Maturity Levels #155

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

Merged
merged 30 commits into from
Jun 8, 2020
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
30 commits
Select commit Hold shift + click to select a range
10ecec4
Dropped meta/publishing.md because it's outdated
maxcapraro Apr 24, 2020
b3a52a4
Deleted file explaining meetings - outdated
maxcapraro Apr 24, 2020
003483d
Simplified contributing.md file
maxcapraro Apr 24, 2020
e2b081f
Fixes in formatting, links of contributing.md
maxcapraro Apr 24, 2020
3ef2e0c
Added contributor handbook
maxcapraro Apr 26, 2020
b94d1b9
Fixed faulty link
maxcapraro Apr 26, 2020
7936767
Added (obvious) reference to patterns format
maxcapraro Apr 26, 2020
8109a71
Dropped pattern states
maxcapraro Apr 26, 2020
ca136c1
Made patterns lifecycle more explicit
maxcapraro Apr 26, 2020
819447c
Minor changes to formatting
maxcapraro Apr 26, 2020
31e22c9
Replaced 'holy' with 'established'
maxcapraro Apr 28, 2020
05e781f
Update meta/contributor-handbook.md
maxcapraro May 7, 2020
401c5aa
Added to contributing.md invitation to discuss via issues
maxcapraro May 21, 2020
7be4364
Raised requirements for validation based on recommendations by @newme…
maxcapraro May 21, 2020
b47f00f
Dropped 'usage'column from overview table
maxcapraro May 21, 2020
aa05c0b
Fixed broken links
maxcapraro May 21, 2020
b7001bd
Droped link to meetings
maxcapraro May 21, 2020
0b1fca8
Merge branch 'master' into master
maxcapraro May 21, 2020
626f66a
Added directories for maturity levels
maxcapraro May 21, 2020
610581a
Merge branch 'master' of github.com:maxcapraro/InnerSourcePatterns
maxcapraro May 21, 2020
44fb228
Update CONTRIBUTING.md
maxcapraro May 25, 2020
a7849d6
Added invitation to contribute early stage thoughts and ideas
maxcapraro May 25, 2020
dd45bd3
Update meta/contributor-handbook.md
maxcapraro Jun 2, 2020
aa1d931
Applied consistent naming of stage 'validated' proposed by @spier
maxcapraro Jun 2, 2020
d1db6f8
Update meta/contributor-handbook.md
maxcapraro Jun 2, 2020
a61cd87
Added top level patterns/ folder
maxcapraro Jun 2, 2020
3d0bbe0
Merge branch 'master' of github.com:maxcapraro/InnerSourcePatterns
maxcapraro Jun 2, 2020
6ba3bd1
Dropped double space
maxcapraro Jun 5, 2020
f8c1213
Dropped maturity level four
maxcapraro Jun 5, 2020
a269324
Update CONTRIBUTING.md
maxcapraro Jun 8, 2020
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
92 changes: 18 additions & 74 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
@@ -1,95 +1,39 @@
# How to Contribute
# Contributing to the InnerSource Patterns

First, checkout our complete list of patterns: [public GitHub](https://github.com/InnerSourceCommons/InnerSourcePatterns#reviewed-patterns-proven-and-reviewed) OR [Google Doc](https://docs.google.com/spreadsheets/d/17KPZdCoquTnYSj03pX4v2vn8lrSYO_6HK20u1cwaLPg/edit#gid=0)
The goal of the InnerSource patterns working group is to collect, document, and publish InnerSource best practices. To make the best practices easy to comprehend, evaluate, and apply, we codify them in a specific structure - [the patterns format](meta/pattern-template.md). More infos on the working group can be found in our [README.md](README.md) file.

We encourage beginners seeking answers to jump in by creating `donut` patterns (filling in the problem, context, forces and resulting context fields but leaving the solution blank) as a way of asking the InnerSource Commons community for help (to find a proven solution or to brainstorm things to try).
For this working group to strive, we welcome your contribution - be it small or huge.

Anyone can offer reviews and comments for [in-progress patterns](https://github.com/InnerSourceCommons/InnerSourcePatterns/pulls). We encourage experts to pad their experience - these are hoped to become part of an Inner Source handbook one day.

We work together via GitHub, WebEx, Slack, etc. Do not hesitate to join the [#innersourcecommons](https://isc-inviter.herokuapp.com/) or #innersource-patterns Slack channels and ask to be included in the [patterns meetings](/meta/meetings.md) (there is an email list).
## How to Contribute?

Select one of the following ways to contribute, to learn our workflow:
Please consider contributing in the following ways:

* A. [Write a new pattern](#a-writing-a-new-pattern)
* B. [Discuss/Record early ideas](#b-discussing-early-ideas-in-issues)
* C. [Review existing patterns](#c-interacting-with-patterns-reviews)
* D. [Take part in our Meetings and Roles](/meta/meetings.md) <-- link to separate doc
1. **Share your thoughts & spark discussion**. A fresh perspective, an interesting thought, or an early novel idea can spark discussions and yield unforeseeable results. We invite you to share your thoughts on InnerSource-related topics at any time by [creating an issue](https://github.com/InnerSourceCommons/InnerSourcePatterns/issues/new), [via Slack, or our patterns office hours](#how-to-get-in-touch).

2. **Read & improve existing patterns.** If you want to get started, we encourage you to read through the existing patterns and materials in this repository. Found a misleading phrase or phony grammar? A mistake in the content? Let us know by [creating an issue](https://github.com/InnerSourceCommons/InnerSourcePatterns/issues/new) or directly propose your fix as a pull request.

# A. Writing a New Pattern
3. **Review open pull requests.** Even without knowing all the specifics of the patterns working group, your feedback on existing [pull requests](https://github.com/InnerSourceCommons/InnerSourcePatterns/labels/type%20-%20Content%20work) (especially those propising changes to pattern contents) will be valuable to its authors: As somebody who wants to learn more about InnerSource, you can give input from the perspective of a future reader. As somebody with own InnerSource experiences, you can share your experience with the authors.

The below steps can be used to create a new pattern. The use-case here is that you have an idea or problem in your head and can confidently fill out the barest of pattern fields (Solution doesn't need to be known). If you are unsure your idea is ready for this, [discuss it in an issue first](#b-discussing-early-ideas-in-issues).
4. **Contribute a new pattern.** A key contribution you can make is to document an InnerSource best practice you experienced or know about. We defined different maturity levels for the contents in this repository: First time contributors should aim for maturity levels `1: initial` (for unstructured experience reports or what we call donuts - patterns with missing pieces) and `2: structured` (for best practices adhering to the patterns format and following basic writing style conventions). Our [Contributor Handbook](meta/contributor-handbook.md) discusses all this in more detail. You don't feel ready yet to contribute a new pattern? Please start a discussion by [creating an issue](https://github.com/InnerSourceCommons/InnerSourcePatterns/issues/new).

The simplest way to create a pattern is with your browser (see below).
[Like the command-line better? See here for alternate instructions.](/meta/technical-git-howto.md)
5. **Be a patterns advocate.** The patterns will become better and cover more topics the more people contribute their perspective and experience. A colleague told you about a novel InnerSource best practice? Please invite her/him to contribute to this repository!

<img alt="Creating a new pattern" src="/assets/img/write-new-pattern.png" width="70%">

1. Login to GitHub & inside the [patterns web repo](https://github.com/InnerSourceCommons/InnerSourcePatterns), click on the 'Create new file' button
2. Name the file like this example: "project-management-time-pressures.md"
3. Use the [pattern template](https://raw.githubusercontent.com/InnerSourceCommons/InnerSourcePatterns/master/meta/pattern-template.md) to create your new [markdown](/meta/markdown-info.md) file with the description of your fledgling pattern; it does not need to be complete, as you can add to it later
4. Enter a commit message
* If you are asked to 'Commit directly' vs 'Create a new branch', see [branching details](#use-branches-when-creating-new-patterns) below.
5. Propose this new file and then also create a Pull Request (PR)
## How to get in touch?

You're done! This creates a separate branch and creates a Pull Request (PR) all in one fell swoop! PR's are the mechanism we use for our Review process. See next steps in [Interacting with Pattern Reviews](#c-interacting-with-patterns-reviews).
We are happy to support you in contributing to the InnerSource patterns or to just chat with you. You can reach out to us in the following ways:

1. **Via Slack.** Join the InnerSource Commons [Slack instance](https://isc-inviter.herokuapp.com/) and enter the `#innersource-patterns` channel there.

## Use Branches When Creating New Patterns
We develop new patterns in branches with the naming convention:
`pattern/<title-of-pattern-here>`.
2. **During the patterns office hours.** We established a regular cadence of office hours for you to ask questions. You can find out about the next patterns office hours in the calendar at the bottom of [this page](https://innersourcecommons.org/resources/).

If you are asked to 'Commit directly...' vs 'Create a new branch...'

* Assure you select **'Create a new branch...'** and name the branch like this example: "pattern/project-management-time-pressures".
* This occurs when writing a new pattern via the web interface (section A above).
* Only [Trusted Committers](/meta/trusted-committers.md) (TC's) are asked this; we are adding most contributors as TC's.
## License of Contributions

The contents of this repository are licensed under [CC-BY-SA-4.0](LICENSE.md). By contributing to this repository, you grant us (and everyone else for that matter) the right to use your contribution in accordance with that license.

## Other Tips For Submissions

* Place each sentence on a new line.
_GitHub_ allows leaving comments on a line-by-line basis.
Review and comment on the content of submitted text is much easier if there are multiple lines on-which to leave comments.
Sentences on consecutive lines will be collapsed into a single paragraph (like this one) for the final reader of the content.
## Code of Conduct

# B. Discussing Early Ideas in Issues

If you feel that you need extra advice when dealing with patterns, please [open an issue](https://github.com/InnerSourceCommons/InnerSourcePatterns/issues). This process is only needed when contributing early ideas that you are uncertain about.

Here are tips on starting this discussion:

* [Create a new ticket](https://github.com/InnerSourceCommons/InnerSourcePatterns/issues/new), add a concise title, and describe your problem. Think about the context of your problem and your expected output. Where do you see this problem most? What is the setup of your business and organization? Do you have opinions/ideas on what causes or leads-to the problem?
* Ask any questions that you are unsure about. Are you unsure if this problem belongs here? Are you unsure on how to frame and explain the problem?
* [Apply the label](https://help.github.com/articles/applying-labels-to-issues-and-pull-requests/) `Early Idea`. Labels can be found in the right column settings.

After this process, it is our turn to drive you through the pattern creation process. We will help to land your idea and check if there are existing similar patterns.



# C. Interacting with Patterns Reviews

A pattern is said to be "in-review" or being "Reviewed" when we have a Pull Request with some amount of Pattern detail filled out. We then communally review, and comment-on, and OK these "in-review" patterns. Usually, we first look for a pattern with all the fields filled out, and then go through TWO peer-reviews.

## Editing a pattern that is in-review
Go ahead, edit away - we can always go back - and we encourage action over discussion.

<img alt="How to edit an existing pattern" src="/assets/img/edit-existing-pattern.png" width="70%">

## Reviewing a pattern
FIXME Explain how to add review comments and accepting a review. Basically, this is all done through Githubs web GUI around Pull Requests.

FIXME Give tips for good reviews. We have done both interspersed comments, or pattern-wide advise. Be constructive. If you can fix the problem, [edit the PR](#editing-a-pattern-that-is-in-review) instead of leaving a comment.

## Our Review Process
Below are the procedural steps in our Review process:

1. Decide which Maturity level your pattern is in: `Donut (Lacks solution)`, `Unproven`, or `Proven`; these all describe what state the *Solution* is in.
2. Decide which Review Step you are in: Usually `Incomplete` or `Do 1st Review`
3. Reviewers can now use the PR features to comment on the pattern.
4. In most cases, we do two reviews, and the PR's labels should reflect `Do 2nd Review` etc.
5. After reviews are complete, the reviewers or author should Revise and Finalize the pattern, eventually labeling it with `Accepted`.
6. Once a pattern is `Accepted` by the reviewers, one of the [Trusted Committers](/meta/trusted-committers.md) (most authors are by this point) can Merge the PR on Github. This places the .md file into the master branch / root directory.

## Completed Patterns
When completed patterns (reviewed and accepted) are ready to be published from this InnerSourcePatterns repo to a Gitbook (PDF), [see our separate Publishing instructions](/meta/publishing.md).
We do not yet have a fully formalized code of conduct yet. We expect all contributors to treat each other respectfully and help us to keep this community free of harassment and discrimination.
6 changes: 1 addition & 5 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -91,11 +91,7 @@ The pattern form is useful for describing proven patterns but it can also be use

## How to Contribute?

See our [CONTRIBUTING.md](CONTRIBUTING.md) for details on getting involved. To learn how we define, operate, and upkeep this collection of patterns, take a look at [Pattern Meta Info](./meta).

We encourage beginners seeking answers to jump in by creating **donuts** (problems without solutions). We encourage experts to pad their experience - these are hoped to become part of a book one day. Anyone can offer reviews and comments for [in-progress patterns](https://github.com/InnerSourceCommons/InnerSourcePatterns/pulls).

We work together via Github, Webex, Slack, etc. Do not hesitate to join the [#innersourcecommons](https://isc-inviter.herokuapp.com/) or #innersource-patterns slack channels and ask to be included in the [patterns meetings](/meta/meetings.md) (there is an email list).
We welcome your contribution - be it small or huge! To learn more about how you can become a contributor, please see our [CONTRIBUTING.md](CONTRIBUTING.md) file.

## Related References

Expand Down
63 changes: 63 additions & 0 deletions meta/contributor-handbook.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,63 @@
# Contributor Handbook

This document lays out a basic guideline of how to write and contribute a new pattern.

## Maturity Levels

We defined four maturity levels for patterns: The higher a pattern's maturity level, the more strictly it was validated and the better is its writing.

### In a Nutshell

| \# | Name | Description | Time to merge |
| ---- | ---- | ---- | ---- |
| 1 | Initial | Contains an initial pattern idea or what we call a donut (a pattern with missing sections). | A few days / weeks |
| 2 | Structured | Contains a complete pattern that it is not properly validated yet (e.g. because it only synthesizes an idea or the experiences from one instead of three organizations). | A few days / weeks |
| 3 | Validated | The pattern is validated (e.g. because three or more instances exists and are synthesized by the pattern) and its writing is of high quality. | A few months |

For the first pattern you contribute, you should aim for maturity levels `1: initial` or `2: structured`.

If you want to help promoting a pattern one maturity level up, we suggest to first create an issue to discuss the matter and see if someone else is working on that already. After that, you can create a pull request with the necessary changes.

To achieve a given maturity level a pattern has to satisfy the requirements for that given maturity level and lower levels. The following sections lay out the requirements per maturity level in detail.


### Requirements: Level 1 - Initial

Patterns (or other documents) of level 1 are stored in the directory `/1-initial`.

- Validation requirements:
- N/A

- Content requirements:
- The document is readible & comprehensible for other's than the author(s)
- The author(s) contribute the contents according to the [license](../LICENSE.txt) & are allowed to do so
- Thoughts and contents by third parties are quoted / referenced explicitly


### Requirements: Level 2 - Structured

Patterns of level 2 are stored in the directory `/2-structured`.

- Validation requirements:
- Is validated by at least one known instance
- Alternatively: key elements of the pattern have been validated in separate contexts and, in consequence, it is justified to believe the full solution will function

- Content requirements:
- Complies with the [patterns format](pattern-template.md)
- Complies with *basic style guide*(#) - *Oops! We have not yet developed this*


### Requirements: Level 3 - Validated

Patterns of level 3 are stored in the directory `/3-validated`.

- Validation requirements:
- Is validated by at least three known instances
- Considers all known instances to the best of working group members' knowledge
- Community agreement (via lazy consensus of trusted committers) on correctness of contents

- Content requirements:
- Uses & has no conflicts with working group terminology (defined by glossary / implicit usage) - *Oops! We have not yet developed this.*
- Fits & has no conflicts with existing patterns (of this maturity level or higher)
- Thorough review by at least two trusted committers

14 changes: 0 additions & 14 deletions meta/meetings.md

This file was deleted.

51 changes: 0 additions & 51 deletions meta/pattern-states.md

This file was deleted.

Loading