-
Notifications
You must be signed in to change notification settings - Fork 162
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
Create rules for supported distributions #360
Comments
One idea I haven't explored but comes to mind is to split the goreleaser workflow per distribution. I've not tested this, but it should be doable |
Being able to release each distribution independently sounds like a good idea to be able to scale to more distributions. |
Can you clarify what's to be understood by "support"? What's expected from the community if we say we support a distribution? |
I think |
Here is my initial attempt at an answering:
|
IIRC, those were listed in the original blog post that announced OTel, and included only Prometheus, Jaeger, and Zipkin, apart from OpenTracing and OpenCensus. Other than that, your proposal looks good to me. |
One thing I wouldn't mind some more clarification on is:
Does that mean the collector SIG sets the direction for another's SIG (say, K8s and Lambda) distribution? I know it isn't explicitly said, but is the intent that the supported distributions are intended the fulfil needs of the open telemetry project only? Meaning we are not managing distributions for vendors or other ecosystems? |
I don't think it has to. The Collector SIG should be free to decide which specific purposes it sees as valuable enough to warrant supporting a distro. If that corresponds with the needs of another OpenTelemetry SIG that is a bonus, but it shouldn't be a requirement.
I don't think we should view it as managing distributions for another SIG. We should only support a distribution if we see value in it for our users. If another SIG also benefits from it and wants to help support that is a bonus, but we should not rely on others to support these distributions.
Good point, we should explicitly call this out. How about |
They are OpenTelemetry users, no matter which SIG they consume "first". Given that our distributions will have only components from either core or contrib, the support will end up on us anyway, no matter the SIG that proposed the distribution. Perhaps we could provide guidance to other SIGs into which components they can rely on? |
@jpkrohling I agree. My comment's intent is to say that we should not treat other OTel SIGs differently from other users. I don't think we need to create any SIG-specific guidance either; any guidance we give should apply to SIGs and end-users alike. |
To touch on points 2 and 3 in the issue for a bit: Based on the discussed criteria so far, the Core distribution would no longer be supported. I believe it fails to pass these checks:
In contrast, I believe Contrib should continue to be supported. Although we haven't defined its set list of criteria yet, I believe Contrib's meets (or can be made to meet) all the criteria discussed so far. Most importantly it allows us to keep our promises, makes the Collector easy to use, servers a specific purpose*, and meets general user needs.
|
There are two parts of contrib that I don't like and would make me uncomfortable supporting it more officially:
|
I see it's specific purpose to be a dev tool - something that helps users get started playing around with the Collector. Contrib provides an easy, out-of-the-box solution for any user to try out any component they read about. Anything less than Contrib means we'll have to guess which components users want to try out, defeating the purpose of a dev tool. Thinking about it another way, if we only supported Core or only supported the proposed k8s distro how would a user try out the ngixreceiver (chosen randomly as an example)? Would it be up to them to build their own distro? I feel like that requirement goes against the concept that our supported distributions should make using the collector easy.
That is a fair concern, but feels like a Contrib repo issue and not a distribution concern. We should write the Contrib criteria to be strict with the Stability requirements and hold both the Contrib repo and distro accountable. If we don't feel confident in a Contrib repo component we should deal with that as part of maintaining Contrib because it has larger implications than just our distros, it affects anyone using that component. |
We might consider some distributions that are naturally associated with subset of assets. For example, a windows distribution that contains several windows-only components ( |
@djaglowski that is a super good point. I like the idea of making that criteria less strict so that we don't limit our options. How about:
|
I feel like we should be more conservative on the assets we require for new distributions: while we ensure we can build binaries for these architectures/OS but we don't run the test suite for most of these 'flavors'. It's clear to me that |
@mx-psi can you describe more about why being less strict with the release assets is a good thing. Is it to make it easier to accept new distributions that might struggle to provide certain assets? |
That's one part of it, I also just don't think it's a good idea to provide untested assets and I don't want to force new distributions to suffer that maintenance burden. For most of the assets listed we don't (and can't without significant pain) test them on CI and our ability to resolve issues specific to those artifacts is limited (IMO even on Windows we struggle to provide good support). |
@mx-psi would you distill the current proposal down to:
|
@TylerHelmuth That makes sense to me 👍 |
I think this is a problem with having more than one distribution, not with core specifically. We also see that with ADOT distros (e.g. see open-telemetry/opentelemetry-collector-contrib/issues/13163 or open-telemetry/opentelemetry-collector-contrib/issues/8109). I don't see this as a reason for removing core, since the problem will still happen.
The purpose of Core is IMO to fulfill use cases that fully rely on non-commercial open source observability solutions. There are some components that we could add (e.g. more processors) to make this more aligned with this purpose, but I think it does it very well. |
@TylerHelmuth, during the SIG call today, you mentioned that this issue is reaching a consensus that contrib is going to be supported and core dropped. Based on the rules mentioned here, would you mind listing the two distributions and why/why not they will be supported? In my view, we should rather slim down contrib to include the new components we think the community is missing the most from core, instead of promoting contrib as is and dropping core. |
That is fair. Maybe the criteria
I think that is a reasonable purpose. I'd propose changing the name to better fit that purpose though. |
Continuing this Issue's discussion, here are my proposed criteria for what should be included in Contrib:
|
@jpkrohling this comment here is my take on why Contrib meets the criteria we've been discussing and why Core doesn't. For Core, I think it comes down to the criteria For Contrib, I am very much in favor of the criteria mentioned here in order to fulfill what I see as its purpose ( |
I like that. Are we going to have a list of those distributions somewhere, as a table perhaps? If so, we should explicitly call that out, stating that contrib is useful for X and Y, but not for Z. |
We haven't landed on the presentation of the outcome of this discussion yet but a table seems reasonable. |
I think one important use case we need to support is gateway mode which needs only the components defined in the core repo, specifically OTLP receiver and OTLP exporter. Jaeger/Zipkin/OpenCensus maybe even unnecessary. I think it would be easier to define if we align on a rule: core components = components from core repository. But I also agree with @mx-psi about distribution to fulfill use cases that fully rely on non-commercial open source observability solutions. That one can be another one in between core and contrib probably |
I think having an OTLP-only distribution is reasonable, and the proposed rules do not prevent that distribution from happening, as long as we still have at least one production-quality distribution with Zipkin, Jaeger, and Prometheus. |
I'm all for new distributions, but for the context of this issues lets restrict the conversation to answer the questions:
My answer to 1 can be found here and here and once #376 is merged I'll open a PR to solidify 1. Lets focus on 2. The conversation at this point is a little spread out (the downside to discussing 3 topics in 1 issue), but I think the current state is: Core purpose:
Is there an additional purpose around being the Core component criteria still needs solidified. @mx-psi @jpkrohling @dmitryax as proponents of the Core distribution and you agree and a Core purpose and suggest the criteria for which components would be included? |
I think there's still something to be said about the purpose of the core, but I can't articulate yet exactly what's missing. I agree with the purposes you added there and agree that an OTLP-only or Gateway mode needs to be discussed at a later time. Currently, core is composed of:
Converting that into reasonable criteria would be tricky: I don't expect most collector users to need the Kafka receiver/exporter, and I don't see that as fitting any of those criteria. But I'm not sure we want to remove that component from the core either. |
I believe this is the tricky part. Trying to guess which components most users for the collector find useful feels impossible (to me at least), but thats what Core currently represents - our attempt. We saw that attempt challenged by #337. I think guessing what users want will always leave us open to challenges. Picking the components based on |
Do we have numbers on downloads of the core distro? Maybe docker pulls? Can we compare to contrib pulls? Would that help know what is used and determine a way forward? |
They are both 10M+ pulls according to DockerHub. That isn't super surprising since the helm charts use Contrib by default and the Operator uses Core by default and both images have been around for a long time. |
|
I'd like to avoid "Production Ready" like the plague since there is the OTEP happening about it lol Let's call out our opinion specifically: |
Sounds good to me :) |
I think I heard about that one.
Yes or no:
Those are the observability-related ones. There are also the storage-related ones, not necessarily on the observability space: Clickhouse, Elasticsearch, OpenSearch, Parquet, Cassandra, ... |
I have opened a PR to solidify Contrib component rules: #382 |
We have now merged PRs to publish our distribution rules and the component criteria for contrib. Do you want to keep this issue open for the continued discussion of Core or should it move to its own issue? |
Both options are fine by me, with a slight preference for keeping things here. |
Which rules is core not fulfilling? I think we just need to put #360 (comment) in writing, but otherwise it seems to me like core fulfills every rule stated on the issue? |
@mx-psi I believe the remaining work is to create a list of rules for which components will be included in the Core distribution and document them. |
I think having core include all components that concern non-commercial, open-source technologies would make sense, but would also make it pretty large, especially for a distribution called "core". The potential alternatives I see are:
In my opinion, 1 probably aligns best with a distribution called "core", but would require a more difficult transition and would very likely be generally less useful than a distribution that simply focuses on open source technologies. I think having a larger number of officially-supported distributions would make a stripped-down core more palatable, but on the other hand the option for users to build their own distribution with OCB makes it easier to justify a larger core. |
OpenCensus is archived, Jaeger components are now gone in favor of OTLP, Prometheus will eventually adopt native OTLP ingestion. I'd have the core as we have today, as it will eventually converge into an OTLP-only distribution. In the meantime, we still send the clear message that the Collector aims to play nice with the tools that existed when it was created. That said, I intend to create a new repository under my private namespace offering niche distributions, such as the load-balancing distribution, sidecar (OTLP-only), and others. |
I suspect the receivers for these formats will live on for some time. Should we mark the core distribution as "legacy" or "deprecated" in favour of an OTLP only distribution? I guess choosing what processors or connectors are included in even the smallest of distro becomes ambiguous. |
Let's use a more honorable name then: "classic" :-) |
Some thoughts if it's okay... purely as a user of the collector, and not as a maintainer or holder any other "official" role. I really like the core distro. I think it should focus on being very slim and OTLP focused - it has huge value and is often all that's needed, at least my own experience. I just took another look through what's included currently in core and I actually think it's excellent how it is - it's perfect for "core" use-cases as I expect it was always intended. Where I work, and I'm not representing them here in any way, it's our explicit goal when using the collector to try and use OTLP only as much as possible. So I think a very slim, "production-ready" distro like core holds tremendous value. This is especially true as projects like Jaeger and Prometheus move to support OTLP natively - not sure about Zipkin, I've never used it. I personally like the contrib distro as a dev/testing "tool". Sometimes you want to achieve a goal using the collector, and you're not quite sure exactly how to do it or what's the best and most efficient way. This is the beauty of the collector and how flexible and configurable it is. By having a distro like contrib, it allows easy and quick development of new collector configurations without having to touch the builder (ocb) or worry about what to include etc. When it's time for production, I'm a believer in only having the components you need, as I'm sure most others are as well, and I'd scoff at using a distro with more components in it than I actually need. I apologies if that didn't really add anything new to what's already been said. I just wanted to contribute my own thoughts. |
This was discussed today at the SIG. I'm OK with the current set of rules, and I think both contrib and core fulfill them, while still opening the door for new distributions. I would love to see distributions having owners like we have components, but that's an improvement that can be discussed later (and only if we see the actual need for that). From my perspective: |
Description
This Issue is a continuation of open-telemetry/oteps#229.
The Collector SIG has had continuous discussion around the distributions we support, if we should support them, if we should support more, and what components should be included in the existing distributions. This is causing the SIG time and effort, but also the lack of clear rules could confuse users who are looking to use or contribute to a distribution. The goal off this issue will be to:
We may need to also determine how the Release pipeline will change to be able to scale to more distros. At the moment it already struggles with 2.
Current criteria based on the discussion in this issue:
opentelemetry-collector
andopentelemetry-collector-contrib
repositories.The text was updated successfully, but these errors were encountered: