Architectural decision to use hundreds of projects in corefx project


I was taking a look at the corefx repository and I noticed that the code base is split into a couple hundred c# libraries/projects. I understand this approach allows dotnet developers to be more selective in the libraries they use from dotnet core (i.e. nuget), however I’d like to understand the approach a bit more and also understand if it’s something that SDK and framework developers should consider. Here’s a few questions, but feel free to add additional info.

What other benefits are realized when using this approach?

When should this approach be considered?

When should this approach be avoided?

Would this approach be recommended for SDKs specifically?

What goes into deciding if a subset of code is a standalone library or just a namespace?

Can you point me to any documentation, articles, etc on this topic?

.NET Foundation Website | Blog | Projects | Code of Conduct