-
Notifications
You must be signed in to change notification settings - Fork 15
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
chore: initial practices readme #2086
Conversation
PRACTICES.md
Outdated
@@ -0,0 +1,51 @@ | |||
# Justification | |||
|
|||
The rust development team as a whole has identified problems in our development process. This document is intended to help us avoid these problems. |
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.
When someone reads this document in the future, I don't think they necessarily need to know that "we had issues". (Not that we need to keep it secret, but I just don't think it is necessary and feels a bit less professional)
I think it is better to state it in a spirit of "To minimise arguments during code review and ensure code consistency, all (rust) developers must follow the principles outlined below" (as an example, don't need to be these exact words).
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.
Ok, I agree we don't need to talk about that we had problems. But I think the problem isn't really frequent disagreements, but the fact that those disagreements go no where / have no conclusion?
PRACTICES.md
Outdated
|
||
The rust development team as a whole has identified problems in our development process. This document is intended to help us avoid these problems. | ||
|
||
The core of the problems we identified are frequent disagreements, regarding both code and development operations, that do not conclude or result in agreement. This lead to frustration among the development team which caused a lack of dialog between developers, distrust among the team members, and developers wasting significant time disagreeing without making progressing on problems. Regularly issues or pull requests would be paralzed due to an extended heated discussion about a detail which did not result in agreement. Instead everyone ended up being entrenched and so discussion stopped as it felt no progress towards a conclusion or agreement could be made. |
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.
Again, it is okay elaborate on "the things we want to avoid", but I would state this more generally as "these things tend to happen when there are no guidelines". I don't mind if we briefly mention that this is based on previous experience at CF, but right now it feels like someone wrote this out of frustration (understandably).
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.
Agreed, let's formulate this in positive terms, ie. "having clear guidelines helps resolve disagreements, fosters collaboration, and facilitates onboarding of new team members".
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.
I am happy to make this more positive, but I think it is important to be highly specific, otherwise people could totally miss the point. If we all understand the symptoms, then we are likely to notice them and do the right thing.
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.
To be clear, I did not write this in frustration. I was approximately as calm as I can be.
PRACTICES.md
Outdated
|
||
# Maintainence | ||
|
||
Simply create an issue on this repository regarding the modification to / problem with the practices, provide a justification for the change, and add the <span style="color:rgb(0,255,0)">practices</span> label. We intentionally chose not to not burden ourselves with a formal process to agree on modifications to the practices, but it is expected the whole team be given the opportinity to comment and a majority of the team should agree to a change. Once the modification is agreed on by the team, create a pull request to modify this document. That pull request should contain changes that ensure the codebase matches the new practices if applicable. |
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.
On the "majority of the team should agree" I think it would be nice to say something like, "if this addition to the document has come from a disagreement between two or more parties, it's important that all of these parties agree to the commitment added to the document."
Else it's easy to see a scenario where the one person who felt the other way is alienated - there might be some cases where majority rules, but I think in the ideal scenario, there's buy in from those directly involved, in the form of either a compromise, or one or the other has been convinced and we decide to commit to a particular way of doing things (assuming others also agree to this).
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.
Do we want to say "majority" or "all" are satisfied?
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.
I think majority is fine for now, hesitant to say "all", would be quite a slow process...
PRACTICES.md
Outdated
|
||
Simply create an issue on this repository regarding the modification to / problem with the practices, provide a justification for the change, and add the <span style="color:rgb(0,255,0)">practices</span> label. We intentionally chose not to not burden ourselves with a formal process to agree on modifications to the practices, but it is expected the whole team be given the opportinity to comment and a majority of the team should agree to a change. Once the modification is agreed on by the team, create a pull request to modify this document. That pull request should contain changes that ensure the codebase matches the new practices if applicable. | ||
|
||
When documenting a practice you should write a clear explanation with a justification, and if at all possible some brief examples of its application. As without examples it is easy to miss-interpret the intention of a particular practice. |
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.
When documenting a practice you should write a clear explanation with a justification, and if at all possible some brief examples of its application. As without examples it is easy to miss-interpret the intention of a particular practice. | |
When documenting a practice you should write a clear explanation with a justification, and if at all possible some brief examples of its application (ideally from our codebase - can link to PRs or issues). As without examples it is easy to miss-interpret the intention of a particular practice. |
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.
Some early comments, will re-read next week.
# Location | ||
|
||
We choose to document our practices here inside this repository, so they are easily assessible and we can use Github's source control tools to manage the maintainence of this document. | ||
|
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.
Not a strong opinion but I don't think this is necessary, the location is obvious and the reasons should be obvious from the methods proposed in the remainder of the doc (ie. PRs).
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.
I'd rather air on the side of clarity. We had a discussion about it, and a choice was made. I think that should be recorded and clear in the future. I'm sure there are developer's that think the guidelines should be elsewhere.
PRACTICES.md
Outdated
- Clearly explained, as if they are ambiguous that will allow room for disagreement to persist. | ||
- Well-reasoned otherwise we likely alienate some developers, as such each practice should be justified using logic, principles, ideals, and other practices. |
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.
Also, providing the reasoning allows for that reasoning to be questioned and for things to be refined when exceptions arise, or cases where the reasoning doesn't apply.
(That's not very concise..)
PRACTICES.md
Outdated
|
||
Simply create an issue on this repository regarding the modification to / problem with the practices, provide a justification for the change, and add the <span style="color:rgb(0,255,0)">practices</span> label. We intentionally chose not to not burden ourselves with a formal process to agree on modifications to the practices, but it is expected the whole team be given the opportinity to comment and a majority of the team should agree to a change. Once the modification is agreed on by the team, create a pull request to modify this document. That pull request should contain changes that ensure the codebase matches the new practices if applicable. | ||
|
||
When documenting a practice you should write a clear explanation with a justification, and if at all possible some brief examples of its application. As without examples it is easy to miss-interpret the intention of a particular practice. |
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.
Thought: we could provide some kind of template for changes?
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.
You mean a GitHub issue template? Or you mean a template in this file? Either way I can create one.
I personally find these things pointless, and that they are a crutch (For not properly explaining yourself).
Co-authored-by: kylezs <kyle@chainflip.io>
Co-authored-by: kylezs <kyle@chainflip.io>
Co-authored-by: dandanlen <3168260+dandanlen@users.noreply.github.com>
# Justification | ||
|
||
The intention of this document is to ensure the team makes decisions, work can move forward, and the team members are comfortable with those decisions, even when the members initially do not agree. | ||
|
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.
I kind of gave up trying to write some more explanation here. I could not find a nice concise explanation for why we want this document. @kylezs If you feel it would be helpful it might be nice you tried to write something.
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.
How about:
All members of the team should have a shared view on what "good" code should look like. This document serves as a guide to current and future contributors on some of the more subjective aspects of programming. This ought to reduce uncertainty among contributors about how their code should look, leading to faster contributions to the main code base, since reviewers and reviewees spend less time on the more subjective details of "style".
* PRACTICES Readme * Update PRACTICES.md Co-authored-by: kylezs <kyle@chainflip.io> * Update PRACTICES.md Co-authored-by: kylezs <kyle@chainflip.io> * Update PRACTICES.md Co-authored-by: dandanlen <3168260+dandanlen@users.noreply.github.com> * chore: review changes Co-authored-by: kylezs <kyle@chainflip.io> Co-authored-by: dandanlen <3168260+dandanlen@users.noreply.github.com>
Just an outline at this point, I added some possible headings. I've tried to make what we discussed more concrete, and clear. I really wanna make sure we are all on the same page, and this is written clearer. So even small issues please comment on them.