Skip to content

Conversation

@thompson-tomo
Copy link
Contributor

@thompson-tomo thompson-tomo commented Jul 8, 2025

Fixes #348
Design discussion issue #

Changes

This proposes a new project structure which enables an improvement in build performance by adopting a modules approach and enabling the build system to manage what is built.

Some of the other benefits is that

Merge requirement checklist

  • CONTRIBUTING guidelines followed (license requirements, nullable enabled, static analysis, etc.)
  • Unit tests added/updated
  • Appropriate CHANGELOG.md files updated for non-trivial changes
  • Changes in public API reviewed (if applicable)

@thompson-tomo thompson-tomo requested a review from a team as a code owner July 8, 2025 02:23
@github-actions github-actions bot added infra Infra work - CI/CD, code coverage, linters documentation Improvements or additions to documentation labels Jul 8, 2025
@thompson-tomo thompson-tomo force-pushed the modules branch 27 times, most recently from 62f441e to f29afa3 Compare July 8, 2025 09:22
@github-actions
Copy link
Contributor

This PR was marked stale due to lack of activity. It will be closed in 7 days.

@github-actions github-actions bot added the Stale label Jul 29, 2025
@thompson-tomo
Copy link
Contributor Author

Awaiting feedback

@github-actions github-actions bot removed the Stale label Jul 30, 2025
@github-actions
Copy link
Contributor

github-actions bot commented Aug 6, 2025

This PR was marked stale due to lack of activity. It will be closed in 7 days.

@github-actions github-actions bot added the Stale label Aug 6, 2025
@thompson-tomo
Copy link
Contributor Author

Awaiting feedback

@github-actions github-actions bot removed the Stale label Aug 7, 2025
@github-actions
Copy link
Contributor

This PR was marked stale due to lack of activity. It will be closed in 7 days.

@github-actions github-actions bot added the Stale label Aug 15, 2025
@thompson-tomo
Copy link
Contributor Author

Awaiting feedback

@github-actions github-actions bot removed the Stale label Aug 17, 2025
@Kielek
Copy link
Member

Kielek commented Aug 18, 2025

@thompson-tomo, I am closing this PR. I doubt that it will bring CI pipeline to the better shape. For sure, it will be even more problematic than now.
Module, is not .NET concept, it could bring even more complication for the contributors.

If you want to work with some subsets of projects, you could try https://learn.microsoft.com/en-us/visualstudio/ide/filtered-solutions?view=vs-2022

The only thing we could consider for this project is Central Package Management, but it can be achieved without restructuring whole repository.

@Kielek Kielek closed this Aug 18, 2025
@thompson-tomo
Copy link
Contributor Author

@Kielek I am confused by you responses.

I doubt that it will bring CI pipeline to the better shape.

Not sure how you measure this but for me 20% build time reduction & significantly more readable PR actions for me puts pr's in a better shape.

Module, is not .NET concept, it could bring even more complication for the contributors.

Maybe module is not the best term but that can easily be changed. In fact a number of other otel contrib projects split it based on functionality ie propagator.

If you want to work with some subsets of projects, you could try https://learn.microsoft.com/en-us/visualstudio/ide/filtered-solutions?view=vs-2022

If you look at the pr, you would see the proposal here is to use solution filters rather than proj files.

The only thing we could consider for this project is Central Package Management, but it can be achieved without restructuring whole repository.

I agree CPM can be used without restructuring it, but by restructuring it makes it easier to achieve small scoped pr's which is clear on what packages are impacted without workarounds.

As it appears the biggest concern is about moving to the module/component based folder structure, please reopen so I can move the files back and make the changes to achieve the same outcome using existing folder structure.

@martincostello
Copy link
Member

20% build time reduction

Maybe nice to have, but the build time is not really a limiting factor on any contribution being accepted.

more readable PR actions for me puts pr's in a better shape.

I don't think we need main and PR versions of all the workflows - it just creates more duplication and things to maintain (e.g. PR passes, you merge and then find the main version didn't get updated).

Restructuring all the workflows will also impact the required PR status names and need the repository settings updated.

other otel contrib projects split it based on functionality

They may, but they are different projects with different maintainers and different technologies. I don't think its worth churning the codebase to move everything around and remove the consistent repository layout.

the proposal here is to use solution filters rather than proj files.

dotnet/aspnetcore is the only open source I've personally interacted with that's used .slnf files, and I find them in practice to be poorly maintained, and they have a low exposure rate amongst the typical .NET developer, so it's likely to create a barrier to entry for the average contributor.

They can also cause issues if you need to touch a file that impacts many projects (e.g. semantic conventions or common MSBuild targets), as you can miss issues locally that you don't find due to not eveything being compiled if such a change is made, then it's only found at CI time.

There's a trade off between only needing to compile the bare minimum of things touched and building a larger set, but that's a hard problem to definitively determine already with regards to building the exact right amount of things relevant for a given change, and I don't think .slnf files will make a difference.

without workarounds

Not sure what workarounds you're referring to. CPVM can be adopted without restructuring all the code, and specific projects will still have different version opinions (e.g. library (pinned) vs. tests (tracking latest)).


This PR is trying to introduce far too many changes in one go, and I don't think the majority of the proposed changes are actively wanted to be pursued by the maintainers.

A new, separate, PR to adopt CPVM (without changing any versions used by anything) would be welcome.

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

Labels

dependencies Pull requests that update a dependency file documentation Improvements or additions to documentation infra Infra work - CI/CD, code coverage, linters

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Sub folder for better grouping, PR title improvement suggestion

3 participants