spectre.console icon indicating copy to clipboard operation
spectre.console copied to clipboard

Proposal: Allow `Spectre.Console.Community` Namespace for Community Extensions on NuGet

Open JKamsker opened this issue 1 year ago • 11 comments

The Spectre.Console project currently reserves the Spectre.Console prefix on nuget.org, limiting community-driven projects from using a namespace that clearly associates them with the Spectre.Console ecosystem. This reservation poses a challenge to the growth and visibility of extensions that enhance the Spectre.Console library.

I propose the creation and official endorsement of the Spectre.Console.Community namespace for community-driven projects. This namespace would serve as a recognized space for publishing NuGet packages that extend Spectre.Console, fostering innovation and collaboration within the community.

I have developed two projects ready for publication that demonstrate the potential benefits of this proposal:

  • Spectre.Console.Community.AutoCompletion: Enhances CLI applications with auto-completion features, improving usability.
  • Spectre.Console.Extensions.Hosting-ng: Integrates Microsoft.Extensions.Hosting for more seamless application lifecycle management, addressing the maintenance gap left by the predecessor project.

Benefits:

  • Innovation and Collaboration: Encourages the community to contribute and share extensions that enhance the Spectre.Console library.
  • Clarity and Organization: Provides a clear distinction between official and community-driven projects, making it easier for users to find extensions that meet their needs.
  • Support for Community Growth: Recognizes and legitimizes the efforts of the community, encouraging more developers to contribute.

Please upvote :+1: this issue if you are interested in it.

JKamsker avatar Feb 28 '24 16:02 JKamsker

Excellent proposal. I had thought similar, recently.

Should this really be a core part of spectre.console, or would it best be located in some form of contrib project?

Support Markdown rendering

FrankRay78 avatar Feb 28 '24 20:02 FrankRay78

Out of interest @JKamsker, assuming we get the Spectre.Console.Community namespace (or similar), where do you feel the AutoCompletion work you authored is (ideally) best placed to reside? Within spectre.console or as a community plugin that you retain control over?

FrankRay78 avatar Mar 02 '24 17:03 FrankRay78

@FrankRay78, releasing it as a community plugin not only makes it easier for people to find and use, but it also lets me have more control over the project. This way, I can make updates and improvements faster. Still, I'm open to discussions and can reconsider based on the community's input and the needs of Spectre.Console moving forward.

JKamsker avatar Mar 02 '24 17:03 JKamsker

I never got around to reviewing the PR, but I'm still interested in whether it should have a first-class place within the main spectre.console codebase. If we believe that's best, I think over the next 2 months I could make time to pick up the review. I'd be interested to hear your thoughts, and others, as to this idea. Equally, your proposal above was well received, so I expect to have some kind of community namespace in the coming weeks. Keeping it as something you maintain is cool as well.

FrankRay78 avatar Mar 02 '24 17:03 FrankRay78

Just published a open source repo for the autocompletion https://github.com/JKamsker/JKToolKit.Spectre.AutoCompletion

JKamsker avatar Mar 12 '24 21:03 JKamsker

Just published a open source repo for the autocompletion https://github.com/JKamsker/JKToolKit.Spectre.AutoCompletion

Very cool. Also, I know the Community namespace is on it's way. That said, the question remains whether you have a view if the autocompletion is something genuinely suited to being in the core library, or if it remains best placed as a community repo.

FrankRay78 avatar Mar 13 '24 21:03 FrankRay78

I'd say for now - let's put it in a commuinity project and work from there. When it got enough stability, is feature complete and meets the standards, we can talk about merging it.

As for the proposal of the community namespace, i had an idea: How about requiring all Spectre.Console.Community.* to be in the spectreconsole org. Each maintainer of a community project has full access to their project(s) but in case they loose interest in continuing maintaining (as it happens so often) and maybe even becomes unresponsive, the core team has the power to assign new maintainers for the project, so it doesn't die.

I know, forks are supposedly the "solution" but on github, forks are usually hidden in search and quite hard to find.

JKamsker avatar Mar 13 '24 22:03 JKamsker

How about requiring all Spectre.Console.Community.* to be in the spectreconsole org.

This is a really good idea that I'll put to the other maintainers for consideration.

FrankRay78 avatar Mar 15 '24 14:03 FrankRay78

I don't think that should be a requirement. Also, even if we wanted to enforce something like that, we can't.

patriksvensson avatar Mar 15 '24 16:03 patriksvensson

Serilog has a space and some rules for community-driven projects: Serilog Contrib. It is described as a hub of community supported extensions for Serilog to help with discovery and collaboration.

I'm not implying we should do exactly the same for Spectre.Console, just leaving it here as food for thoughts.

0xced avatar Jul 03 '24 16:07 0xced