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

[Issue 416] Update Contributing Guidelines #431

Merged
merged 15 commits into from
Sep 21, 2023

Conversation

acouch
Copy link
Collaborator

@acouch acouch commented Aug 29, 2023

Summary

Fixes #416

Time to review: 30 mins

Changes proposed

Adds external and internal contributing guidelines.

Context for reviewers

It seemed simplest to break these apart since the audiences are different.

There is a lot to review, so might be best to discuss first.

@acouch acouch added the documentation Improvements or additions to documentation label Sep 1, 2023
@acouch acouch marked this pull request as ready for review September 1, 2023 20:08
@andycochran
Copy link
Collaborator

Should the CONTRIBUTING_INTERNAL.md file just be called CONTRIBUTING.md? I think that filename is important to have, no?

@acouch
Copy link
Collaborator Author

acouch commented Sep 1, 2023

@andycochran great suggestion. I updated filename.

CONTRIBUTING.md Outdated Show resolved Hide resolved
@decause-gov
Copy link
Collaborator

I really like what I'm reading in the text about development guidelines (squashmerge, CalVer, etc...) this all looks great! :) I am curious though why we want to have separate guidelines for internal and external contributors?

  • What is the difference between an internal/external contributor?
  • Is this because we are depending on some kind of privileged/paid for/internal-only infrastructure somewhere?
  • Is there a separate internal repo, other than the public repo, where development is also happening?

There are valid reasons for internal/external repo patterns (e.g. specific security considerations, internal systems testing, among others), however, Internal Forks are more often than not a costly pattern to maintain, and divide your development resources and create duplicate work. Sometimes this duplicate work is necessary, but, if it can be avoided, it will be worth it in the longrun.

Understanding whether a project is "internal first" or "external first"--whether the public repo is the 'source of truth' where reconciliation is done and then merged internally (e.g. "we're just another downstream user and develop in the open"), or whether the public repo is the place where after-the-fact releases are cut after internal merging is completed (e.g. we primarily cut periodic releases and develop mostly in private) is an important decision.

Perhaps I'm just reading too far into this, and we want specific instructions for folks who are internal HHS employees/contractors v.s. the general public, which is also valid, but, even maintaining two sets of CONTRIBUTING.md files can lead to duplicate work, and sometimes confusion or ambiguity. If we can keep one version of CONTRIBUTING.md, it helps to reduce that maintenance and cognitive burden, though there may be valid reasons for doing so.

Happy to discuss further, thank you for putting thought and intentionality into how contribution works 🙏

@acouch
Copy link
Collaborator Author

acouch commented Sep 6, 2023

@decause-gov Thanks for asking and digging into this.

I am curious though why we want to have separate guidelines for internal and external contributors?

I thought a lot about this myself. There are a couple of key differences in the internal and external contributors that drove me to separate the pages. Some of them are:

External contributors often need more context and support, and from a maintainers perspective, I think we want to give them MORE support, or at least more focused support. In the external doc I included the following which is directed to external contributors and not helpful for internal:

🎉 First off, thanks for taking the time to contribute! 🎉

We're so thankful you're considering contributing to an open source project of the U.S. government! If you're unsure about anything, just ask...

External contributors also have multiple ways of contributing, however CONTRIBUTING.md is more focused on developers and the SDLC. The "How Can I Contribute?" addresses items that internal team members don't.

The "Code Contributions" section is the one focused on devs. I am trying to treat the CONTRIBUTORS.md as place the source of truth there, and just calling out what is different for external devs, specifically forking.

Understanding whether a project is "internal first" or "external first"... is an important decision.

I think this is the most important thing. I'm wondering, given some of the differences I noted, what is the best way to have good documentation for internal and external folks, while communicating that we actually want and will support open contributions?

Maybe explicitly saying that? Swapping the names so the CONTRIBUTING.md is focused on external?

I've gone back and forth, but combining them into a single document does feel like it is making more of a mess than providing clarity, though I am open to it.

Would be great to get more feedback @lucasmbrown-usds @widal001 , thoughts?

@andycochran
Copy link
Collaborator

andycochran commented Sep 6, 2023

Swapping the names so the CONTRIBUTING.md is focused on external?

I like this thought. It makes the primary entry point more general and applicable to a wider audience. Then, if devs wanna dig in and contribute more (code), they can follow a link that wades into the deep end.

The primary benefit of separate files is brevity. And I suppose it makes editing them easier. But I don't think these files (or file) will be all that active.

We might consider appending the "internal" info to the end of the general contributing doc, and adding a brief mention in the first section — e.g. "Project team members with write access to this repository, go to [Internal Contributors Contributing Code]."

We might also consider a word other than "internal." We really just mean "those who CRUD" and "internal" could go stale, depending on how the community and partnerships grow.

Copy link
Contributor

@SammySteiner SammySteiner left a comment

Choose a reason for hiding this comment

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

Looks good.
I left some suggestions/nits

CONTRIBUTING.md Outdated Show resolved Hide resolved
CONTRIBUTING.md Outdated Show resolved Hide resolved
CONTRIBUTING.md Outdated Show resolved Hide resolved
CONTRIBUTING.md Outdated Show resolved Hide resolved
CONTRIBUTING.md Outdated Show resolved Hide resolved
CONTRIBUTING_EXTERNAL.md Outdated Show resolved Hide resolved
CONTRIBUTING_EXTERNAL.md Outdated Show resolved Hide resolved
CONTRIBUTING_EXTERNAL.md Outdated Show resolved Hide resolved
CONTRIBUTING_EXTERNAL.md Outdated Show resolved Hide resolved
@acouch
Copy link
Collaborator Author

acouch commented Sep 21, 2023

I looked at a number of external examples of open source projects that use both CONTRIBUTING.md with an external contributor focus, and DEVELOPMENT.md for the nuts and bolts of development. I updated the language in what is now DEVELOPMENT.md to be more inclusive for external contributions.

@acouch acouch merged commit 4da1274 into main Sep 21, 2023
@acouch acouch deleted the acouch/issue-416-updates-contributing-docs branch September 21, 2023 14:17
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
documentation Improvements or additions to documentation
Projects
None yet
Development

Successfully merging this pull request may close these issues.

[Task]: Update CONTRIBUTING.md with results of branch ADR and with open source runbook content
4 participants