dotnet / source-build

A repository to track efforts to produce a source tarball of the .NET Core SDK and all its components
MIT License
265 stars 132 forks source link

Consider moving the tools folder out from eng into the repo root #4334

Open ViktorHofer opened 6 months ago

ViktorHofer commented 6 months ago

The eng folder was originally supposed to only include Arcade extension points. Since then, many repos put more stuff into eng, i.e. YML and msbuild files. All that makes sense. What I think could be improved in the current VMR layout is the location of tools and tasks. Those currently reside under eng/tools and I think it would be clearer if they would be under the repo root in a tools directory, next to the src and test directories.

Here are the proposed changes: https://github.com/dotnet/installer/compare/MoveToolsUnderRoot?expand=1

dotnet-issue-labeler[bot] commented 6 months ago

I couldn't figure out the best area label to add to this issue. If you have write-permissions please help me learn by adding exactly one area label.

mthalman commented 6 months ago

I question why tools is being treated distinctly here. I'm guessing the reasoning for moving tools and not other things is because tools consists of C# sources. But the scripts that exist in eng could be considered tools as well. They're all just source files, just in different languages. The point is they're all related to engineering infrastructure which I feel eng is the proper location for such things.

ViktorHofer commented 6 months ago

The original intent of the "eng" folder was to have a home for Arcade extension points: Build.props, Publishing.props, the shared eng/common folder and others. Many repos then re-used that directory to also put scripts and YML in there. I don't think that managed code that is being compiled belongs there.

Browsing though our stack, repos that have locals tools often put them either in the repo root or under the src directory. Here are a few examples:

With a recent clean-up that I did in windowsdesktop and deployment-tools, I was able to remove their local tasks and tools: https://github.com/dotnet/deployment-tools/commit/8351133dec5f12efbad7fe14381ac7e9fd94cb32. Before that, they also had their tools and tasks under the repo root in a tools-local folder.

I don't have a strong opinion here but I feel that devs expect managed code to not be located under /eng. The eng folder grew to a big umbrella in runtime without a clear separation of what belong in there and what not. I want to avoid that in the VMR orchestrator.

MichaelSimons commented 6 months ago

[Triage] It would be good to get some more input/consensus on this. @premun, @akoeplinger, @mmitche do you have any input on this?

akoeplinger commented 6 months ago

I tend to agree with moving the tools out of eng but I don't feel strongly.

premun commented 6 months ago

I have no opinion on this

mmitche commented 5 months ago

I don't feel strongly, but I think keeping a cleaner eng/ folder seems reasonable.