Skip to content
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

first draft of tenets #14

Open
wants to merge 9 commits into
base: master
Choose a base branch
from
Open

Conversation

mattsb42-aws
Copy link
Member

Description of changes:

As we start formalizing and documenting how we want to automate our repository management, we first need to define what we are attempting to accomplish.

By submitting this pull request, I confirm that you can use, modify, copy, and redistribute this contribution, under the terms of your choice.

@mattsb42-aws mattsb42-aws requested a review from a team January 30, 2020 00:40
dougch
dougch previously approved these changes Jan 30, 2020
Copy link

@dougch dougch left a comment

Choose a reason for hiding this comment

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

SGTM. Was hoping for some type of "Don't be weird" principle to encourage re-use of stated rules from other similar projects, or a nudge towards consistency. ❤️ the machine enforceable bits.

@mattsb42-aws
Copy link
Member Author

We can always add more as we think about them. I'm also putting them here as a way of stating that "we hold these to be true for ALL of our repos, not just this one".

repo-management/tenets.md Outdated Show resolved Hide resolved
repo-management/tenets.md Outdated Show resolved Hide resolved
repo-management/tenets.md Outdated Show resolved Hide resolved
repo-management/tenets.md Outdated Show resolved Hide resolved
repo-management/tenets.md Outdated Show resolved Hide resolved
repo-management/tenets.md Outdated Show resolved Hide resolved
repo-management/tenets.md Outdated Show resolved Hide resolved
repo-management/tenets.md Outdated Show resolved Hide resolved
repo-management/tenets.md Outdated Show resolved Hide resolved
repo-management/tenets.md Outdated Show resolved Hide resolved
@mattsb42-aws mattsb42-aws requested a review from ajw-aws February 4, 2020 20:42
repo-management/tenets.md Outdated Show resolved Hide resolved
repo-management/tenets.md Outdated Show resolved Hide resolved
Copy link

@dougch dougch left a comment

Choose a reason for hiding this comment

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

minor nits and an unfinished line.

repo-management/tenets.md Outdated Show resolved Hide resolved
repo-management/tenets.md Outdated Show resolved Hide resolved
repo-management/tenets.md Outdated Show resolved Hide resolved
repo-management/tenets.md Outdated Show resolved Hide resolved
@mattsb42-aws mattsb42-aws requested a review from seebees February 6, 2020 19:22
Copy link

@dougch dougch left a comment

Choose a reason for hiding this comment

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

SGTM


1. If we have not defined our requirements well enough for a machine to enforce them,
then we have not defined them well enough for all humans to understand them.
1. If a rule requires human judgment to be applied,
Copy link

Choose a reason for hiding this comment

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

Some teams might, under time pressure, be willing to take calculated risks and might ask for andon cord type exceptions to machine enforceable rules. Maybe some kind of call-out that Intermittent human over-rides mean the rule also needs refinement and review.

Copy link
Member Author

Choose a reason for hiding this comment

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

I like the idea of "if the cord gets pulled on the same rule with frequency greater than X". I'm going to think on how/where best to incorporate that, but that'll be a subject for future PRs I think.

or a situation is too ambiguous for the automation to understand.

When a situation passes a defined ambiguity threshold
our automation MUST halt and request human intervention.
Copy link

Choose a reason for hiding this comment

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

Ok, this sort of addresses my previous comment.

## What this document is

The purpose of this document is to define our tenets and goals
for how we will manage our repositories.

Choose a reason for hiding this comment

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

These tenets & goals apply equally to private/internal and public/external repositories?

Copy link
Member Author

Choose a reason for hiding this comment

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

Yes.

The extent to which we can apply them to different scopes and locations is an implementation detail and out of scope for this document (ex: GitHub Actions doesn't work on private repos yet.)

Copy link

@jamesiri jamesiri left a comment

Choose a reason for hiding this comment

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

Overall a great start and I am excited to how it grows.

Comment on lines +48 to +54
1. We MUST efficiently communicate our requirements to all maintainers.
The only way that we can do this is by writing them down.
1. We MUST communicate our requirements to our users and contributors.
The only way that we can do this is by writing them down.
1. We cannot enforce undefined requirements.
1. We cannot know when/if/how requirements change if they are not recorded.

Choose a reason for hiding this comment

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

Is the the correct location to also mention that having written requirements also makes it easier to plan and track progress against the requirements?

Copy link
Member Author

Choose a reason for hiding this comment

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

Yes, absolutely! :) I'll add that in.


#### Enforced Rules

All requirements SHOULD be machine enforced.

Choose a reason for hiding this comment

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

How does this jive with line 57 where we state that all requirements MUST be machine enforceable?

Copy link
Member Author

Choose a reason for hiding this comment

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

Target vs reality. Requirements MUST be machine enforceable, but only SHOULD be machine enforced. The goal is that everything will be machine enforced, but the reality is that as we get started and as we add further requirements, there will be a period of time when humans need to enforce them.

Subsequent docs will delve into what our requirements are and how we plan to enforce them.

Comment on lines +83 to +85
Any preferences that can be machine enforced
SHOULD be machine enforced,
and SHOULD then be made into requirements.

Choose a reason for hiding this comment

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

Why not have preferences that can be machine enforced MUST be required to be machine enforced but SHOULD become requirements? It would mean that any preferences are permanently fixed until a change is needed and are easy to replicate in other projects.

If we didn't want to make the suggested change I would like to change the text so that it encourages users to machine enforce as much as they can.

Copy link
Member Author

Choose a reason for hiding this comment

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

I would actually be inclined to go the other direction:

If a preference can be machine enforced, it MUST become a requirement.

All requirements SHOULD be machine enforced.

See previous comment for why ^ is not MUST.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

7 participants