Skip to content

Commit d253cee

Browse files
author
Nick Yeates
authored
Merge pull request #50 from paypal/contributing-revamp
Contributing revamp
2 parents 1f53d3c + ff52dc1 commit d253cee

File tree

7 files changed

+226
-164
lines changed

7 files changed

+226
-164
lines changed

CONTRIBUTING.md

Lines changed: 59 additions & 161 deletions
Original file line numberDiff line numberDiff line change
@@ -1,184 +1,82 @@
11
# How to Contribute
22

3-
1. [Take part in our Meetings and Roles](#roles-tasks-and-meetings)
4-
2. [Learn our github workflow](#innersource-patterns-workflow) (Add & Review patterns)
3+
First, checkout our complete list of patterns: [Google Doc](https://docs.google.com/spreadsheets/d/17KPZdCoquTnYSj03pX4v2vn8lrSYO_6HK20u1cwaLPg/edit#gid=0) OR [public GitHub](https://github.com/paypal/InnerSourcePatterns#reviewed-patterns-proven-and-reviewed)
54

6-
We encourage beginners seeking answers to jump in by creating ''donuts'' (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). We encourage experts to pad their experience - these could easily become part of a book one day. Anyone can offer reviews and comments for [in-progress patterns](https://github.com/paypal/InnerSourcePatterns/pulls).
5+
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).
76

8-
We work together via github, phone-meetings, 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 (there is an email list).
7+
Anyone can offer reviews and comments for [in-progress patterns](https://github.com/paypal/InnerSourcePatterns/pulls). We encourage experts to pad their experience - these are hoped to become part of an Inner Source handbook one day.
98

10-
[To learn about our technical github workflow, see below.](#innersource-patterns-workflow)
9+
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).
1110

12-
# Roles, Tasks, and Meetings
11+
Select one of the following ways to contribute, to learn our workflow:
1312

14-
Become involved with the people and communications of Inner Source Patterns:
13+
* A. [Write a new pattern](#a-writing-a-new-pattern)
14+
* B. [Discuss/Record early ideas](#b-discussing-early-ideas-in-issues)
15+
* C. [Review existing patterns](#c-interacting-with-patterns-reviews)
16+
* D. [Take part in our Meetings and Roles](/meta/meetings.md) <-- link to separate doc
1517

16-
* See our [complete list of patterns](https://docs.google.com/spreadsheets/d/17KPZdCoquTnYSj03pX4v2vn8lrSYO_6HK20u1cwaLPg/edit#gid=0) (discussed so far)
17-
* See Action Items for all who are interested in patterns:
18-
* Add any missing pattern or add new ones anytime
19-
* Add your name if you want to be on the author team. Mark your name in blue if you want to be the coordinator.
20-
* Add your name to the reviewer team if interested in the pattern
21-
* Coordinator role (per pattern): Setup meetings with pattern Authors to work through the patterns. Note the team can use Google docs or any other tool to work on the pattern. However github is the final destination for the patterns. It is recommended that github be kept as up-to-date as possible. Please keep the status and target updated for each pattern in the spreadsheet.
22-
* Every 2 weeks (or even sooner if necessary) we will have a meeting with a larger team and review the patterns.
23-
* Folks who want to join the pattern mining team but are new to this please let us know. We can bring you up to speed.
2418

25-
If you don't have access yet to the google drive shared folder, contact @thyao, @silona or @cedric on the Slack channel. They can add you to the google group. @cedric or @duane can ensure you have access to the #innersource-patterns slack channel.
26-
27-
Note: A transition from Wiki to Github is in the works. For the time being, some of both are being done until all is transferred. Default to github.
19+
# A. Writing a New Pattern
2820

21+
The below steps can be used to create a new `donut`, `idea`, or complete pattern. The use-case here is that you have a relatively thought-out 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](#discussing-early-ideas-in-issues).
2922

30-
# InnerSource Patterns Workflow
31-
32-
The rest of this document describes the workflow / process for writing, reviewing and publishing
33-
InnerSource ideas, donuts and patterns. It utilizes Pull Requests to facilitate
34-
collaborative reviews.
35-
36-
## Workflow
23+
The simplest way to create a pattern is with your browser:
3724

38-
![branch, commit, pull request, review](assets/img/branchCommitPullReview.png)
39-
40-
The basic steps below can be thought of as *branch*, *commit*, *pull request*, and *review*.
25+
1. Assure you are logged into GitHub & go to the [patterns web repo](https://github.com/paypal/InnerSourcePatterns)
26+
2. Click on the 'Create new file' button
27+
3. Name the file like this example: "project-management-time-pressures.md"
28+
4. Use the [pattern template](https://raw.githubusercontent.com/paypal/InnerSourcePatterns/master/meta/pattern-template.md) to create your new [markdown](/meta/markdown-info.md) file with the description of your _idea_, _donut_, or _pattern_
29+
5. Enter a commit message
30+
* If you are asked to 'Commit directly' vs 'Create a new branch', see [branching details](#use-branches-when-creating-new-patterns).
31+
6. Propose this new file and then also create a Pull Request (PR)
4132

42-
1. [Create an issue](https://github.com/paypal/InnerSourcePatterns/issues) for each new idea, donut or pattern. The issue should:
43-
* contain a title of the pattern in format ex: ``pattern/badly-named-piles``
44-
* contain a short description (at least the problem) and
45-
* be labeled with the appropriate label (_idea_, _donut_, _pattern_)
46-
2. Create a new branch either in your browser, clone, or fork of the
47-
[patterns repository][patternsRepo]. Please use the similar convention for
48-
naming branches: `pattern/<pattern-name>`. Example:
49-
`pattern/contracted-contributor`.
50-
3. Create a _Markdown_ file with the description of the _idea_, _donut_ or
51-
_pattern_ and store it in the main directory. Commit and push.
52-
4. Once your contribution is ready to be reviewed, create a pull request (PR)
53-
targeted at `master` and label it with _pattern_. Additionally decide whether
54-
to label it with _idea_, _donut_, or _draft_ and _Ready for Review_ or _Incomplete_
55-
5. Reviewers can now use the PR features to comment on the pattern.
56-
6. In case of required rework, the author should apply the labels
57-
_Ready for Additional Review_ and/or _Revised_ to indicate that a 2nd review is requested.
58-
7. After reviews are complete, the reviewers or author should remove the label
59-
_Ready for Review_ and label the pattern _Accepted_.
60-
8. Once a pattern is labeled _Accepted_ by the reviewers, one of the TCs of the
61-
[patterns repository][patternsRepo] will then move the pattern to either the
62-
`ideas`, `donuts` or `patterns` subdirectories, merge it to `master` and
63-
close the associated issue.
33+
Your 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 multi-step Review process. See next steps in [Interacting with Pattern Reviews](#c-interacting-with-patterns-reviews).
6434

65-
When completed patterns (reviewed and accepted) are ready to be published from this InnerSourcePatterns repo to the InnerSourceCommons repo, [see our seperate PUBLISHING.md instructions](PUBLISHING.md).
66-
67-
68-
69-
# Technical steps
70-
71-
If you are unfamiliar with git or github, you can either:
72-
* follow the technical instructions below (command line) or
73-
* [use Github's GUI-based application](https://desktop.github.com/) (its rather nice and makes everything easier for a beginner).
74-
75-
If you want to contribute, the workflow is done through branches. You can see the
76-
available branches of this repository at [the branches URL](https://github.com/paypal/InnerSourcePatterns/branches)
77-
or by clicking on the 'branches' button on the main page.
78-
79-
Branches and Pull Requests (PR's) are used to bring discussion/review about a specific inner source pattern.
80-
New patterns should use, as a first approach, the
81-
[pattern template](meta/pattern-template.md). There are indeed multiple ways to start a discussion:
82-
* Pull request your branch and the maintainers will receive a notification.
83-
* Ask directly for comments to some of the maintainers. You can mention them
84-
using the symbol '@' prior their nickname.
85-
* Add reviewers to the Pull Request on the website - this sends requests to review your work
35+
Like the command-line better? *As an alternative, you can utilize git's native command line instead*. [We have a separate set of technical instructions here](/meta/technical-git-howto.md).
8636

87-
Please, when starting a new pattern, be aware that this does not exist. You can
88-
have a look at some of the existing patterns in this repository.
8937

90-
## How can you create a branch?
38+
## Use Branches When Creating New Patterns
39+
We develop new patterns in branches with the naming convention:
40+
`pattern/<title-of-pattern-here>`.
9141

92-
In first place you need to create a branch (no need to ask for permission!).
93-
For this, let's clone the repository:
42+
If you are asked to 'Commit directly...' vs 'Create a new branch...'
9443

95-
```
96-
$ git clone https://github.com/paypal/InnerSourcePatterns.git
97-
```
44+
* Assure you select **'Create a new branch...'** and name the branch like this example: "pattern/project-management-time-pressures".
45+
* This occurs when writing a new pattern via the web interface (section A above).
46+
* Only [Trusted Collaborators](/meta/trusted_collaborators.md) (TC's) are asked this; we are adding most contributors as TC's.
9847

99-
Then you should see some message similar to the following one:
10048

101-
```
102-
Cloning into 'InnerSourcePatterns'...
103-
remote: Counting objects: 73, done.
104-
remote: Compressing objects: 100% (37/37), done.
105-
remote: Total 73 (delta 35), reused 73 (delta 35), pack-reused 0
106-
Unpacking objects: 100% (73/73), done.
107-
Checking connectivity... done.
108-
```
10949

110-
This means that you successfully cloned the repository. Then we need to access
111-
the directory and check that everything is as expected.
112-
113-
```
114-
$ cd InnerSourcePatterns/
115-
$ ls
116-
first-test.md README.md second-test.md third-test.md workflow.md
117-
$ git branch
118-
* master
119-
$ git branch -a
120-
* master
121-
remotes/origin/HEAD -> origin/master
122-
remotes/origin/master
123-
remotes/origin/master-public
124-
remotes/origin/pattern/badly-named-piles
125-
remotes/origin/pattern/commonRequirements
126-
remotes/origin/pattern/contained-innersource-enables-collaborative-product-development
127-
```
128-
129-
The command 'git branch' shows you which branch you are currently working within.
130-
And with 'git branch -a' you see additional branches which are local and remote (on the web).
131-
There is extra information using the command '$ man git branch' in linux based systems.
132-
133-
Next, in order to create a new branch as a way to start creating a new pattern,
134-
you need to 'checkout' that branch. As a common nomenclature, all of the
135-
pattern-related branches should start with the keyword 'pattern/'. Thus, a new
136-
branch with a new pattern named as foo should be as follows:
137-
138-
```
139-
$ git checkout -b pattern/foo
140-
```
141-
142-
You are now in the 'pattern/foo' branch. When you create a new branch, the files
143-
in the directory might appear change. Each branch can have slightly different content,
144-
and that is intentional. If you need to go again to the 'master' branch or another
145-
branch, you can easily 'checkout' to those as follows:
146-
147-
```
148-
$ git checkout <branchname>
149-
```
150-
151-
## Adding a new pattern
152-
153-
Let's imagine we want to work a new pattern related to the activities of the
154-
Ewoks that for some reason gave up hunting. We should choose some initial
155-
name for this pattern file that could be 'ewoks-do-not-hunt.md'.
156-
157-
```
158-
$ git checkout -b pattern/ewoks-do-not-hunt
159-
$ touch ewoks-do-not-hunt.md
160-
```
50+
# B. Discussing Early Ideas in Issues
16151

162-
Once our pattern file is ready to go, we need to add the file to the repo and
163-
commit that change to our new branch.
52+
If you feel that you need extra advice when dealing with patterns, please open an issue in the [ticketing system](https://github.com/paypal/InnerSourcePatterns/issues). This process is only needed when contributing early ideas that you are uncertain about.
16453

165-
```
166-
$ git add ewoks-do-not-hunt.md
167-
$ git commit -m "Inner Source Pattern to deal with Ewoks that do not hunt"
168-
```
169-
170-
And we should finally upload that branch and file to the server.
171-
172-
```
173-
$ git push origin pattern/ewoks-do-not-hunt
174-
```
175-
176-
Then, if you feel the pattern is ready to review, you can start a Pull Request (PR) asking
177-
to join your new branch to the master branch. To do this, navigate to the github web repo
178-
and get into your new branch. You should see a 'Create pull request' button while in in your branch.
179-
180-
181-
182-
[commons]: http://innersourcecommons.org
183-
[patternsRepo]: https://github.com/paypal/InnerSourcePatterns
184-
[commonsRepo]: https://github.com/paypal/InnerSourceCommons
54+
Here are tips on starting this discussion:
55+
56+
* [Create a new ticket](https://github.com/paypal/InnerSourcePatterns/issues/new).
57+
* Add a concise title like this example: "pattern/badly-named-piles"
58+
* 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?
59+
* 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?
60+
* [Apply the label](https://help.github.com/articles/applying-labels-to-issues-and-pull-requests/) `Idea`. Labels can be found in the right column settings.
61+
62+
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.
63+
64+
65+
66+
# C. Interacting with Patterns Reviews
67+
68+
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. There are multiple steps involved, sometimes requiring multiple re-writes, and peer-reviews. Usually though, we first look for a pattern with all the fields filled out, and then go through TWO peer-reviews.
69+
70+
Our workflow is done through Pull Requests (PR's) and Branches. Branches are meant to separate content, so that multiple people and patterns can exist all at once. Pull Requests (PR's) are used to bring online discussion/review about a specific Inner Source pattern.
71+
72+
FIXME Explain how to add content to in-review patterns. Explain how to add review comments and accepting a review.
73+
74+
Below are the major steps in our Review process:
75+
76+
1. Label your Pull Request with `pattern`. Additionally decide whether to label it with `idea`, `donut`, or `draft` and `Ready for Review` or `Incomplete`
77+
2. Reviewers can now use the PR features to comment on the pattern.
78+
3. In case of required rework, the author should apply the labels `Ready for Additional Review` and/or `Revised` to indicate that a 2nd review is requested.
79+
4. After reviews are complete, the reviewers or author should remove the label `Ready for Review` and label the pattern `Accepted`.
80+
5. Once a pattern is `Accepted` by the reviewers, one of the [Trusted Collaborators](/meta/trusted_collaborators.md) (most authors are by this point) can Merge the PR on Github. This places the .md file into the master branch / root directory.
81+
82+
When completed patterns (reviewed and accepted) are ready to be published from this InnerSourcePatterns repo to the InnerSourcePatterns Gitbook, [see our separate PUBLISHING.md instructions](/meta/publishing.md).

README.md

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,9 @@ What are Inner Source Patterns?
55

66
Patterns are a way of describing a repeatable, proven solution to a problem with a context. They follow a simple form that helps people wanting to implement the solution to understand the constraints on the problem, the forces that must be balanced and the resulting context (the situation you are left with after the solution is applied). In inner sourcing, patterns can provide a way for the InnerSource Commons participants to concisely share information with each other, improving the practice of inner sourcing. Each of the patterns are divided into Title, Problem Statement, Context, Forces, and Solutions as their main sections.
77

8-
* [InnerSource Patterns template](meta/pattern-template.md)
8+
* [Watch a set of 2-5 min youtube videos explaining Patterns](http://bit.ly/innersource_patterns_videos)
99
* [See the presentation from Tim Yao and Padma Sudarsan from the ISC Fall Summit in 2016](https://drive.google.com/open?id=0B7_9iQb93uBQbnlkdHNuUGhpTXc) (PDF)
10+
* [View our InnerSource Patterns Template](meta/pattern-template.md)
1011

1112

1213
How can you use Inner Source Patterns?
@@ -22,9 +23,9 @@ How to Contribute?
2223

2324
[See our CONTRIBUTING.md for details on getting involved](CONTRIBUTING.md)
2425

25-
We encourage beginners seeking answers to jump in by creating ''donuts'' (problems without solutions). We encourage experts to pad their experience - these could easily become part of a book one day. Anyone can offer reviews and comments for [in-progress patterns](https://github.com/paypal/InnerSourcePatterns/pulls).
26+
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/paypal/InnerSourcePatterns/pulls).
2627

27-
We work together via github, phone-meetings, 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 (email list).
28+
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).
2829

2930

3031
Reviewed Patterns (proven and reviewed)

meta/markdown-info.md

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
# What is Markdown?
2+
3+
A markdown file is a plain ASCII text file that is meant to be easy to read in plaintext, while also being pretty once rendered.
4+
It is similar to the format that many wiki's have. As an example, you can see
5+
[this rendered pattern](https://github.com/paypal/InnerSourcePatterns/blob/master/dedicated-community-leader.md)
6+
of ours also [in plain text](https://raw.githubusercontent.com/paypal/InnerSourcePatterns/master/dedicated-community-leader.md).
7+
You can do this for any markdown file by clicking the ``Raw`` button when viewing a file online.
8+
9+
The ASCII is marked up in a standard format. Here are two cheatsheets for that format:
10+
11+
* https://guides.github.com/pdfs/markdown-cheatsheet-online.pdf
12+
* https://github.com/adam-p/markdown-here/wiki/Markdown-Cheatsheet
13+
14+
If you have content in Word or Google docs, you can simply copy the existing text and paste it in to plain text, and then modify the titles and bullets to be in markdown format. There might be a converter.

0 commit comments

Comments
 (0)