umbraco / Umbraco.Marketplace.Issues

Public issue tracker for Umbraco Marketplace
1 stars 0 forks source link

Starter kits: dotnet new templates not umbraco packages? #53

Closed LottePitcher closed 9 months ago

LottePitcher commented 1 year ago

There has been some discussion on Discord - https://discord.com/channels/869656431308189746/1113091087939158160 - that starter kits make more sense to be released as dotnet new templates, not umbraco packages.

What do we think about the marketplace featuring templates as well as umbraco packages? Otherwise the obvious downside to this approach is they won't be discoverable on the marketplace


This item has been added to our backlog AB#33076

nathanwoulfe commented 1 year ago

Hey @LottePitcher 👋

First impression - I don't hate it, and tend to agree that a template makes more sense than a package as a starter kit is the baseline for a new project, not something added to supplement/extend an existing project.

There would obvs be some changes required to make it work, but ultimately we're still talking about nuget packages, just a different flavour. Ideally I think we'd be considering template-type packages and treating these as we do 'normal' packages, so that we can display both types in the existing categories (we'd likely then have packages, integrations and templates)

Andy is off this week, but we'll discuss when he's back and will update here.

BoletteKern commented 1 year ago

Hi Lotte, We have seen "untraditional" packages before and managed to present/fit them into the Umbraco Marketplace setup, e.g. Cookiebot, so I hope we can do something similar here :)

LottePitcher commented 12 months ago

Thank you @nathanwoulfe and @BoletteKern for your thoughts. I'll be sure to post a link here to any starter kit(s) released as templates so there are real examples to consider. :-)

ronaldbarendse commented 11 months ago

Everyone that created a local Umbraco project will have used the Umbraco.Templates package, so we can already list that (as HQ 'package').

We could also list .NET tools, which are also distributed as NuGet packages and already have some examples:

AndyButland commented 11 months ago

Thanks all... so for now, just listing here the things we'd need to think about:

deanleigh commented 10 months ago

Hey all, with the help of @LottePitcher I now have UmBootstrap as a dotnet project template listed on nuget: Umbraco.Community.Templates.UmBootstrap

It does, as @AndyButland mentioned, have Umbraco as a dependency and is both a template, starter kit and component library.

Please let me know if there are any steps I can take to help make this the first dotnet project template on Umbraco Marketplace.

AndyButland commented 10 months ago

It is does @AndyButland mentioned, have Umbraco as a dependency and is both a template, starter kit and component library.

Did you mean "doesn't have" here @deanleigh? If you did mean "does", can you elaborate please, as clicking the link to NuGet I don't see anything that would indicate this dependency. If we can find some alternate means of validating that a package does have an Umbraco dependency, we could look to use that. Otherwise as I noted above, perhaps we have to remove or relax this check when importing packages in order to support including templates.

deanleigh commented 10 months ago

It does, as @AndyButland mentioned, have Umbraco as a dependency and is both a template, starter kit and component library.

Did you mean "doesn't have" here @deanleigh? If you did mean "does", can you elaborate please, as clicking the link to NuGet I don't see anything that would indicate this dependency.

The template is essentially an Umbraco site with content and doctypes added by Usync on first build. Does that count as having Umbraco as a dependency?

If we can find some alternate means of validating that a package does have an Umbraco dependency, we could look to use that. Otherwise as I noted above, perhaps we have to remove or relax this check when importing packages in order to support including templates.

Happy to add additional tags but not sure if that is a good long term policy. Please let me know of any way to validate it as I would love to get it in Marketplace a.s.a.p.

AndyButland commented 10 months ago

The template is essentially an Umbraco site with content and doctypes added by Usync on first build. Does that count as having Umbraco as a dependency?

Not in the sense that we consider it for importing packages at the moment. If you click here you can see there are no dependencies listed. For a typical Umbraco package, e.g. here, you will see at least one (or if not, a dependency on something else that depends on Umbraco).

So that's the part we have to consider/modify it allow import of templates or tools.

deanleigh commented 10 months ago

This seems odd as without Umbraco there is no template. I wonder if that is something we can add when pushing to nuget.org? e.g in template-pack.csproj add:

<PackageReference Include="Umbraco" Version="10.6.1" />

to

  <ItemGroup>
    <Content Include="Umbootstrap.Web\**\*" Exclude="Umbootstrap.Web\**\bin\**;Umbootstrap.Web\**\obj\**" />
    <Compile Remove="**\*" />
    <None Include="assets\README_nuget.md" Pack="true" PackagePath="\"/>
    <None Include="assets\icon_nuget_umbootstrap.png" Pack="true" PackagePath="\"/>
  </ItemGroup>

Perhaps one for @LottePitcher ?

deanleigh commented 9 months ago

Is there anything I can do to make this happen? I am getting great feedback from people using UmBootstrap as a starter kit and for rapid app dev but I can't let people know about it on Marketplace?

AndyButland commented 9 months ago

Did you try your suggestion in the comment above? I believe if you do that - i.e. add a dependency to Umbraco CMS, and also add the usual umbraco-marketplace tag, that should should list the template on the Marketplace.

If that works that'll at least get you the listing up.

I'd still like to do a bit more to display templates and tools differently from normal packages - not least so we can display correct install instructions. But that will need work on our side - which we are talking about, but haven't yet planned in.

deanleigh commented 9 months ago

Hi Andy, yes I took a look at Umbraco.Forms as suggested and whilst it has depenencies listed as follows: Umbraco.Forms.Core.Providers (>= 12.1.1) Umbraco.Forms.Examine (>= 12.1.1) Umbraco.Forms.StaticAssets (>= 12.1.1) It does not specifically have Umbraco listed as a dependency.

UmBootstrap is quite literally an Umbraco site i.e. without Umbraco it couldn't exist, so are there any instructions as to how I would go about adding Umbraco as a dependency in a way that Marketplace will recognise?

AndyButland commented 9 months ago

I've made a PR to your repo to show you the idea.

The important thing is that currently Umbraco CMS or Commerce must be in the dependency chain of the package, so although Umbraco.Forms doesn't depend on Umbraco.Cms.*, if you follow the dependency chain you'll see that it does (Umbraco.Forms --> Umbraco.Forms.Core.Providers -->Umbraco.Forms.Core --> Umbraco.Cms.Web.BackOffice).

For background. the general instructions for listing packages are here.

deanleigh commented 9 months ago

Thanks @AndyButland funnily enough I followed this article: https://learn.microsoft.com/en-us/dotnet/core/tools/dependencies#add-a-dependency-by-editing-the-project-file and went to add the code to csproj and found this was already in the project csproj:

  <ItemGroup>
    <PackageReference Include="Our.Umbraco.UmbNav.Web" Version="2.0.8" />
    <PackageReference Include="System.Drawing.Common" Version="7.0.0" />
    <PackageReference Include="Umbraco.Cms" Version="10.6.1" />
  </ItemGroup>

I think I know how to do this manually now but I'll check your PR first

deanleigh commented 9 months ago

Updated template-pack.csproj and all seems right in nuget.org. Are you able to test in Marketplace please?

nul800sebastiaan commented 9 months ago

@deanleigh We have tools for you! 🙌 https://marketplace.umbraco.com/validate and if it passes, you can request a sync too.

deanleigh commented 9 months ago

image

AaronSadlerUK commented 9 months ago

I can confirm my starterkit is now visible on the marketplace by adding the umbraco-marketplace tag and umbraco cms dependency

So it is confirmed that a dotnet template starterkit can be seen in the marketplace

https://marketplace.umbraco.com/package/umbcheckout.starterkit.stripe

deanleigh commented 9 months ago

I have released another version, this time with umbraco-marketplace.json completed @nul800sebastiaan

deanleigh commented 9 months ago

Thank you so much @AndyButland and @nul800sebastiaan for making this live. I have a question related to the installation buttons, they seem to be pre-configured for nuget packages therefore will not work. So instead of: dotnet new umbootstrap They are: dotnet add package Umbraco.Community.Templates.UmBootstrap and: Install-Package Umbraco.Community.Templates.UmBootstrap

AndyButland commented 9 months ago

Yes, that's noted...

I'd still like to do a bit more to display templates and tools differently from normal packages - not least so we can display correct install instructions. But that will need work on our side - which we are talking about, but haven't yet planned in.

... we'll hopefully get chance to have a look at this in the upcoming weeks.

deanleigh commented 9 months ago

One for Umbraco Hacktoberfest 2023? Also my category is not appearing, do I need to encode the ampersand? "Category": "Themes & Starter Kits",

AndyButland commented 9 months ago

We've released an update today that now displays the appropriate install instructions depending on the type of package.

We decided to combine what we previously had as "package type" (i.e. "Package" or "Integration") with the new detail which is the "NuGet package type" (i.e. "Package", "Tool" or "Template"). Which gives us 4 options we display on the front-end.

There's a template example here, but more will update as the synchronisation runs.

deanleigh commented 9 months ago

Amazing @AndyButland thank you so much. I feel more confident promoting it in Marketplace now.

AaronSadlerUK commented 9 months ago

@AndyButland It looks like the validator needs updating

"PackageType": "Template",

image

AndyButland commented 9 months ago

I think it's actually OK, though perhaps getting a bit confusing given we have these two definitions of "package type" now that we are combining into one in the UI.

But for the package owner data provided in umbraco-marketplace.json, this can remain as either "Package" or "Integration". We use the NuGet package type in preference, so if this is set to "Tool" or "Template" we'll use that irrespective of what's in the umbraco-marketplace.json file.