Skip to content

pattern/common-requirements #11

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 8 commits into from
Aug 31, 2017
Merged

pattern/common-requirements #11

merged 8 commits into from
Aug 31, 2017

Conversation

nyeates
Copy link
Contributor

@nyeates nyeates commented Nov 30, 2016

Common code in a shared repository isn't meeting the needs of all teams that want to use it. The team that made the code available has one set of needs. Its needs are similar to what some of the receiving organization wants, but not quite the same.

This brings in the existing Pattern by Bob Hanmer, which was located here:
https://github.com/paypal/InnerSourceCommons/wiki/Common-Requirements

I did this wrong the first time, trying again, now with work done in a
branch

Info taken from existing wiki file at
https://github.com/paypal/InnerSourceCommons/wiki/Common-Requirements
@nyeates
Copy link
Contributor Author

nyeates commented Nov 30, 2016

Leaving this sit so that someone else can double check my work this time around @gruetter @HaRo87 ?

Context: I have volunteered to help bring over some of the patterns from the wiki to github. Let me know if I am doing it right this time!

@gruetter
Copy link
Contributor

gruetter commented Dec 5, 2016

Looks good, @nyeates ! Thanks for kicking this off. I have added labels, assuming this pattern is ready for review.

@nyeates
Copy link
Contributor Author

nyeates commented Dec 5, 2016

Curiosity question: why does the workflow instructions have you open both an issue and a PR for new patterns? Both have the same labels and similar information. It seems redundant. Why not just have PR's?

@NewMexicoKid
Copy link
Collaborator

For those of us with less experience on managing PRs, what is the common etiquette for merging the pull request? Who should feel responsible to check the status and to push the "Merge pull request" button? Is it a matter of availability to look at something and to make the decision? Or is there an unwritten rule on this?

Thanks for your advice.

@gruetter
Copy link
Contributor

gruetter commented Dec 6, 2016

Why does the workflow instructions have you open both an issue and a PR for new patterns?

@nyeates : I agree that the way we are using the issue tracker now is somewhat redundant. @HaRo87 and I discussed this in the issue for the workflow creation and decided to keep issues to track ideas for patterns not yet written. I guess we can omit the issue if we already have content to be added to a PR.

@gruetter
Copy link
Contributor

gruetter commented Dec 6, 2016

Who should feel responsible to check the status and to push the "Merge pull request" button?

@NewMexicoKid : In the projects I know, merging is restricted to trusted committers. Thus, they are the ones who need to check the status and merge. That's why we should have more than one TC, I think.

Copy link
Contributor

@gruetter gruetter left a comment

Choose a reason for hiding this comment

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

Always good to learn from the master. Thanks Bob.

## Problem Statement
The common code in the shared repository isn’t meeting the needs of all the projects that want to use it.

## Forces
Copy link
Contributor

Choose a reason for hiding this comment

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

Are there any relevant forces related to the human factor in all this we should consider? For me personally, InnerSource is much more about culture and the human factor than it is about code and processes.

Copy link
Collaborator

Choose a reason for hiding this comment

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

As a side note, one force that is human-related is that system engineers might tend to try to fill customer requirements locally within their own BL rather than reaching out to other BLs that support the same customer. Might be unrelated to this particular pattern, but this might be an InnerSource donut.

Align the requirements of the projects so that the code that meets the requirements for one project also meets the needs for the other projects. Decompose the code into smaller pieces for which the many using projects can agree upon requirements.

## Resulting Context
This might require negotiating requirements changes with the customer. It might also require other involvement by the sales teams and product managers to get alignment on the requirements.
Copy link
Contributor

Choose a reason for hiding this comment

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

I would also mention the need to incentivize reuse and to make explicitly make a decision on the components scope (which requirements are in scope, which are not).

Statement of Problem: The common code in the shared repository isn’t meeting the needs of all the projects that want to use it.

## Problem Statement
The common code in the shared repository isn’t meeting the needs of all the projects that want to use it.
Copy link
Collaborator

Choose a reason for hiding this comment

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

Do we need to specify in the problem statement why the common code isn't meeting the needs? I.e., ... due to conflicting requirements from the participating projects.


## Context
Many projects are trying to use common code. There is a shared repository that all the projects access. This pattern applies if there is a Strong Code Owner [pattern to be written] or if there is weak code ownership, or no Benevolent Sponsor [pattern to be written]. Someone (or some project) wrote the code in the first place and contributed it to the repository. The common code is a small percentage of the overall deliverable from any of the projects. Each project has its own delivery schedule, set of deliverables and customers.
Statement of Problem: The common code in the shared repository isn’t meeting the needs of all the projects that want to use it.
Copy link
Contributor

Choose a reason for hiding this comment

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

this line seems to be duplicated by line 9

Align the requirements of the projects so that the code that meets the requirements for one project also meets the needs for the other projects. Decompose the code into smaller pieces for which the many using projects can agree upon requirements.

## Resulting Context
This might require negotiating requirements changes with the customer. It might also require other involvement by the sales teams and product managers to get alignment on the requirements.
Copy link
Contributor

@gruetter gruetter Dec 7, 2016

Choose a reason for hiding this comment

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

Just as an idea: in the forces you mention that the customers sometimes expect the company to help them clarify their requirements. My idea is that this situation should be taken advantage of by bringing about the alignment during the customer requirements negotiations and change the customers requirements rather than changing the component.

@nyeates
Copy link
Contributor Author

nyeates commented Dec 15, 2016

It took me a bit to fully understand this. After I read it the third time, I fully got it. A future revision could work on more up-front clarification.

Once I "got it", I do like it. The decomposing of requirements into smaller pieces sounds key to me. This point could be delved into deeper.

One concern I have is that many projects do not occur at the same time, sometimes even years apart. How can requirements be co-aligned amongst teams if the former team has moved on or simply not working on it much. I guess the new team then works to become the new code owners, all whilst aligning the requirements the best they can?

Added @gruetter idea on using customer requirements
elucidation/negotiation
@nyeates nyeates changed the title Common Requirements PR Pattern/Common Requirements Jan 17, 2017
@nyeates nyeates requested a review from ErinMB January 19, 2017 06:47
@nyeates nyeates changed the title Pattern/Common Requirements pattern/commonRequirements Jan 20, 2017
Copy link
Contributor

@gruetter gruetter left a comment

Choose a reason for hiding this comment

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

Excellent pattern, Robert. I wish I could be as concise as this.

Reusing code is an important goal to save the company time and money.

## Solution
Align the requirements of the projects so that the code that meets the requirements for one project also meets the needs for the other projects. Decompose the code into smaller pieces for which the many using projects can agree upon requirements.
Copy link
Contributor

Choose a reason for hiding this comment

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

I think it would help if we split this solution up into two separate bullet points: one for the requirements alignment, the other for the decomposition.

Copy link
Contributor

Choose a reason for hiding this comment

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

May I suggest to use a word other than Decompose? Even though that's what is done (technically), the important thing to me here is that we factor out/isolate code which varies across customers and create appropriate extension points.

Copy link
Contributor

Choose a reason for hiding this comment

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

both done.

Align the requirements of the projects so that the code that meets the requirements for one project also meets the needs for the other projects. Decompose the code into smaller pieces for which the many using projects can agree upon requirements.

Additionally, take advantage of customers expecting the supplier to help elucidate requirements. Bring about the alignment of requirements during the customer negotiations and influence the customers requirements rather than changing the component.

Copy link
Contributor

Choose a reason for hiding this comment

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

From my old product line days I remember, that bringing about such an alignment requires an incentive for both the customers (usually price and TTM) and for the company itself. Should we mention this here or would that unduly bloat the pattern? Maybe this could go in the Resulting Context section, too.

Copy link
Collaborator

Choose a reason for hiding this comment

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

This sounds like a reasonable thing to add to the pattern at this location.

Copy link
Contributor

Choose a reason for hiding this comment

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

That's a good comment for resulting context. It's a reflection that the problem (getting alignment) might introduce new problems (that require solutions like discounts).

@nyeates nyeates changed the title pattern/commonRequirements pattern/common-requirements Mar 1, 2017
@nyeates nyeates added 3-validated Patterns proven in multiple cases with advanced requirements (Please see our contribution handbook) and removed Pattern labels Mar 11, 2017
@rshanmer
Copy link
Contributor

Georg's comments included and the pattern updated to the PLoP 2017 draft.

@rshanmer rshanmer closed this Aug 31, 2017
@rshanmer rshanmer reopened this Aug 31, 2017
@rshanmer rshanmer merged commit 89d6e01 into master Aug 31, 2017
@rshanmer rshanmer deleted the pattern/commonRequirements branch August 31, 2017 20:14
spier pushed a commit that referenced this pull request Dec 29, 2022
* Added the translation of dedicated community leader

* Fixed the lint error of dedicated-community-leader.md

* Updated the translation with review comments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
3-validated Patterns proven in multiple cases with advanced requirements (Please see our contribution handbook)
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants