-
Notifications
You must be signed in to change notification settings - Fork 292
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
Proposal for efficient maintenance of contrib repo #57
Comments
@cijothomas @SergeyKanzhelev @eddynaka @alolita @anuraaga @willarmiros |
Practices in .NET package management may be different, but from what I've seen in other languages, these would not be desired for a monorepo. To decouple builds, we'd generally have separate repositories, features like GitHub releases become confusing if parts of a repo can be released separately. So we'd expect the dependencies to all be shared and the full build to pass all the time - it works fine in java instrumentation and collector-contrib repo thanks to the efforts of the maintainers, and I presume it can happen here too. |
This can be automatically done, by using issue templates as done in spec repo. https://github.com/open-telemetry/opentelemetry-specification/tree/master/.github/ISSUE_TEMPLATE |
Not sure what a maintainer is supposed to do to approve. Its already assumed that maintainers may not have enough expertise t mark approval. If approver approvers it, only job of maintainer should be to click the "merge" button. |
If that is the case, we could enable auto-merge and the maintainer would not need to click merge :) |
From the Github docs:
This came up when discussing this at the JS sig. I'm not actually sure how narrowly you can scope "write permissions" on GitHub, but it seems like a CODEOWNER of an individual component would still need to get some kind of repo-wide access. IMO we can address this by making sure there is branch protection in place, and ensuring code owners who are not also maintainers have the lowest level of write access. I'd be interested to hear how they tackle this in collector-contrib if @anuraaga or anyone else knows. EDIT: It looks like this is how you can add an outside (non open-telemetry) member to the repo with write access and this describes exactly what write permission allows. It does not involve any ability to force-push code changes (assuming branch protection is in place) or do anything else destructive. |
Yeah, looks fine to me. The only thing which I'm a little concerned about is the ability to "Create, edit, run, re-run, and cancel GitHub Actions workflows". We would want to restrict release workflows to maintainers only. |
We can polish details as we go. I think the proposal is something that will allow us to scale what we have now in One question that still bothers me - will we be able to find owners for things like .NET Remoting. And if somebody will sign up to support it and then will stop, will we remove the component? Or have a "attic" of those in some separate repository when they degraded? |
@SergeyKanzhelev Do you mean that there will be a repo for each instrumentation/extension/exporter component under opentelemetry org? That would surely guarantee continuous build and independent releases for each component but wouldn't that be too much to maintain? It may also make it difficult for users to find and/or contribute to the OS projects for instrumentations under opentelemetry. |
Discussed a bit with @srprash offline, to clarify, I think there are two reasonable options - a monorepo with everything, and they all build together, something that the maintainers would need to ensure keeps going for example by applying SDK dependency updates. Or a separate repo for each item to give them truly independent lifecycle which fits general GitHub practices. I strongly discourage a single repo with different folders released separately - it's too confusing to users to find many artifacts in the same place, but only some work with certain versions of OTel and not others for example. @SergeyKanzhelev seems to be proposing going with the second option of separate repo per item. If this is what the dotnet maintainers want, then it's ok, and perhaps it's inline with a desire to have .net libraries instrumented natively instead of maintaining instrumentation out-of-band here. It's not as confusing for users as a single split repo as the repository will make clear its versioning, but it does have the potential issue of cruft repositories and a likely |
only long term when we will grow enough |
Based on feedbacks from @anuraaga and @SergeyKanzhelev , I believe that the initial proposal of separate build workflows in the same repo is not desirable. So we have the following options:
For the current state of the dotnet SDK, option 1 makes more sense as the contrib repo does not have enough dedicated maintainers to fix the broken components promptly (or until SDK GA). As mentioned by @anuraaga option 2 works well in Java and Collector where there hasn't been a major breaking changes between the core and the contrib repos and the has good maintianer support too. |
In my discussions with @srprash I think option 1 makes more sense for the .Net contrib components to ensure that contributed components are maintained regularly and not blocked when another component is not maintained anymore. The AWS team is interested in stepping up and taking more responsibilities to not only maintain the .Net AWS components but also help core maintainers with other .Net components, builds, releases, bug fixes. @cijothomas @SergeyKanzhelev please let us know how we can move forward. |
@alolita In yesterday's SIG meeting, it was decided that for now we can have separate builds and releases for components in the contrib repo (as was the initial proposal) and as we scale we can look into splitting the repository into component based repos. I'll be working with @cijothomas and @SergeyKanzhelev towards workflows which can facilitate individual builds. |
We should be able to make it easier by combining the CODEOWNERS file with branch policy and auto-merge feature. |
Closing this one out since we now have a working independent build structure.
Thanks everyone for your inputs on this! |
Introduction
I'm opening this issue to discuss and derive concensus on processes and practices required to maintain the openetelemetry-dotnet-contrib repo efficiently. The scope of maintainance of the repo includes defining a structure for the repo and its components, assigning approvers and maintainers, establishing practices for code reviews, and outlining release process of components to nuget.
Goals
/src/
path. eg: List of approvers, Readme, Changelog, etc. This can be called out in the CONTRIBUTING.md/src/
and/test/
folders, and maintainers for the contrib repo./test/
folder are running successfully and coverage report is generated for each PR submitted.Current state and limitations
Proposed Changes & Processes
Managing responsibilities
/src/
and its corresponding tests within/test/
folders. These approvers are voluntary and are SMEs on the given component. The job of an approver is to address issues, review pull requests, and maintain a high bar for their components.OpenTelemetry version targeting
Each project should declare its dependency on a minimum version of OpenTelemetry package in its
.csproj
file. example:The OpenTelemetry package version declared in the root
/build/Common.props
should always be the latest. This way any project not specifying its own OpenTelemetry package dependency will always be built with the latest one.Caution: If there are breaking changes introduced in new version of OpenTelemetry, the depending component may break.
Continuous build
Release on demand
The text was updated successfully, but these errors were encountered: