Skip to content

Allow components to be associated with projects #837

Description

@thompson-tomo

Is your feature request related to a problem? Please describe.
In OpenTelemetry we use a mono-repo approach for our repos with shared common code/functionality. In the case of the collector we selectively choose components which are bundled into a single release binary and components can be in multiple release bundles. We are wanting to be able to have a changelog for each release binary which is scoped to only the components used.

Describe the solution you'd like
The ability to when defining a project in config to also specify the available components to be included. These project components are a subset of the global components.

When a user is creating a changelog, they

  • select the project or leave it empty
  • select the component which is either the global list if no project was specified or project has no components. Otherwise user selects from project components. If left empty use project name.
  • completes creation of unreleased changelog

The project batch process looks for unreleased changelog where the project matches or project is empty and component matches.

It should not be supported to batch a single project if it contains components.

Describe alternatives you've considered
Making projects an array on the unreleased changelog file but breaking change and very verbose solution.

Additional context
N/a

Activity

  1. miniscruff commented on Dec 2, 2025

    @miniscruff
    Owner

    Hmm good point, not sure why components aren't per project. I think this type of behavior is a good reason to push more for the v2 config I was working on.

  2. thompson-tomo commented on Dec 3, 2025

    @thompson-tomo
    Author

    I would still keep components global but introduce the ability for them to be associated with one or more projects.

    This way a component can appear in one or more projects which is something we would use. Scenario is if we bump the sdk being used for all projects, we could specify the component as "core" which is used in all projects.

  3. miniscruff commented on Dec 3, 2025

    @miniscruff
    Owner

    I would still keep components global but introduce the ability for them to be associated with one or more projects.

    This way a component can appear in one or more projects which is something we would use. Scenario is if we bump the sdk being used for all projects, we could specify the component as "core" which is used in all projects.

    Right, I do something similar for kinds with the option to override the global values, the same would need to be possible at the project level. Like kinds per project as well. Or custom inputs per project.

  4. thompson-tomo commented on Dec 4, 2025

    @thompson-tomo
    Author

    Yeap both of those would be logical extensions to being able customise the experience based on the project.

  5. miniscruff commented on Dec 4, 2025

    @miniscruff
    Owner

    Yeap both of those would be logical extensions to being able customise the experience based on the project.

    Do you by chance have a public repo that you are trying to configure I could look at? Trying to get a sense of scope for the work, and use cases. I of course wanted changie to be extendable to a range of projects but when it comes to the upper end of that curve I am having a hard time seeing it.

  6. thompson-tomo commented on Dec 4, 2025

    @thompson-tomo
    Author

    So one of the more complex repo's is https://github.com/open-telemetry/opentelemetry-collector-contrib. that repo has many components and a component can be used in 1 or more projects.

    With the mapping of component to project/distributiom seen in the sub pages of https://opentelemetry.io/docs/collector/components/

    In effect the mapping of kind & custom inputs would not be needed for the use case as I understand hence could come later.

    See open-telemetry/opentelemetry-go-build-tools#971 & open-telemetry/opentelemetry-go-build-tools#1317 for the request for otel to build this use case.

    There is even open-telemetry/opentelemetry-go-build-tools#1199 to explore replacing the bespoke otel tool with an established oss tool. Solving this use case becomes a strong reason to switch as well as the fact it can easily be used for other languages in particular non go.

  7. miniscruff commented on Dec 4, 2025

    @miniscruff
    Owner

    So one of the more complex repo's is open-telemetry/opentelemetry-collector-contrib. that repo has many components and a component can be used in 1 or more projects.

    With the mapping of component to project/distributiom seen in the sub pages of opentelemetry.io/docs/collector/components

    In effect the mapping of kind & custom inputs would not be needed for the use case as I understand hence could come later.

    See open-telemetry/opentelemetry-go-build-tools#971 & open-telemetry/opentelemetry-go-build-tools#1317 for the request for otel to build this use case.

    There is even open-telemetry/opentelemetry-go-build-tools#1199 to explore replacing the bespoke otel tool with an established oss tool. Solving this use case becomes a strong reason to switch as well as the fact it can easily be used for other languages in particular non go.

    that is certainly some good info, and puts into a lot more context the requests. I am definitely willing to help out, some issues are definitely easier then others. Projects for example are a bit of a mess in implementation details for monorepos currently, so adding a lot more to that without some considerations would be less fun. I do have a v2 config design that better takes these things into account that I haven't really felt the need to push but maybe this is the path.

    It is however very late for me and I have a bit of a deadline to meet, I will be around though.

  8. miniscruff commented on Dec 29, 2025

    @miniscruff
    Owner

    #847 started work on config v2, I will try and include it in that spec.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions