dotnet / aspire

Tools, templates, and packages to accelerate building observable, production-ready apps
https://learn.microsoft.com/dotnet/aspire
MIT License
3.92k stars 479 forks source link

Why is the package name not prefixed with Microsoft? #990

Closed Varorbc closed 1 year ago

Varorbc commented 1 year ago

Why is the package name not prefixed with Microsoft?

Is there a plan to prefix the package name with Microsoft?

RussKie commented 1 year ago

Which package?

Varorbc commented 1 year ago

aspire related packages

DamianEdwards commented 1 year ago

Thanks for the question. Part of the experience we hope to provide with .NET Aspire includes offering a set of curated, high-quality packages to make it easier to discover and use packages that work well together. This includes many packages that integrate well-known, essential, third-party libraries, e.g. Npgsql (for PostgreSQL), StackExchange.Redis (for Redis), etc. Having those packages start with the "Microsoft." prefix might cause some confusion to consumers and/or present issues when it comes to acceptable use of other products trademarks.

Additionally, the Microsoft.* prefix is reserved on nuget.org such that only packages owned or co-owned by the Microsoft NuGet account can use it. We'd like to leave space for .NET Aspire to evolve into more than simply a Microsoft-owned stack, especially given the incorporation of many third-party libraries. In the future, we'd like to explore models for more distributed-ownership of the .NET Aspire components and we didn't want a single vendor prefix to get in the way of that.

Finally, there are other package sets on nuget.org that don't use the Microsoft.* prefix despite being published by Microsoft, e.g. the modern Azure SDK packages, so this isn't a wholly new thing.

Hope that helps!

Varorbc commented 1 year ago

Thank you for your answer. I also have some personal opinions

This includes many packages that integrate well-known, essential, third-party libraries, e.g. Npgsql (for PostgreSQL), StackExchange.Redis (for Redis), etc. Having those packages start with the "Microsoft." prefix might cause some confusion to consumers and/or present issues when it comes to acceptable use of other products trademarks.

I think these software packages start with the prefix "Microsoft" and will not cause any confusion for consumers, or consumers have become accustomed to naming them like this. For example, the following packages

Microsoft.AspNetCore.DataProtection.StackExchangeRedisMicrosoft.AspNetCore.SignalR.StackExchangeRedisMicrosoft.Extensions.Caching.StackExchangeRedisMicrosoft.AspNetCore.Mvc.NewtonsoftJson

Additionally, the Microsoft.* prefix is reserved on nuget.org such that only packages owned or co-owned by the Microsoft NuGet account can use it. We'd like to leave space for .NET Aspire to evolve into more than simply a Microsoft-owned stack, especially given the incorporation of many third-party libraries. In the future, we'd like to explore models for more distributed-ownership of the .NET Aspire components and we didn't want a single vendor prefix to get in the way of that.

It has been proven that a single vendor prefix does not hinder this, such as the ASP.NET Core, where there are many third-party packages in the community to support various features, such as Asp.Versioning.*.On the contrary, starting with a Microsoft prefix can bring the following benefits.

  1. Consumers can easily understand through the package name that this package is maintained by Microsoft, giving them a great sense of trust and reliability
  2. Maintain consistency with existing systems such as ASP.NET Core, EntityFrameworkCore, Orleans, etc, without creating a sense of fragmentation 3.Consistent with workload prefix image
DamianEdwards commented 1 year ago

Appreciate your thoughts but we don't intend on changing the package naming scheme at this time for the reasons stated.