U4-7752 - Split Nuget packages: UmbracoCms, UmbracoCms.Web, UmbracoCms.Core

Created by Shannon Deminick 15 Jan 2016, 16:24:49 Updated by Shannon Deminick 13 Sep 2018, 04:29:01

Subtask of: U4-7997

Currently we only have 2: UmbracoCms, UmbracoCms.Core which works, but Core contains too much for projects that might simply want to references what is in the Umbraco.Core project.


david 19 May 2017, 11:23:30

core : should handle version, security, performance, cache, roles, definitions etc

core templates: should define the niche of the website

stuffing everything in core will bloat it soon. when 2 or more developers put their hands on building a website on umbraco they will bloat it more resulting in an unsatisfactory quality of the website

Shannon Deminick 19 May 2017, 11:46:56

The end result is the same, you will have a website with all dependencies so why does this matter if you compile a lib that has many dependencies that will ultimately be deployed to an umbraco site that must contain all the dependencies

david 19 May 2017, 12:05:51

its like wordpress + woocommerce if some one wants a blog they just use wordpress they dont need woocommerce codes in the core

umbraco v8.0 + eshop v1.0 = eg: umbraco commerce + community plugins umbraco v8.0 + content v1.3 = eg: umbraco news website + community plugins umbraco v8.0 + listings v2.1 = eg: umbraco classifieds + community plugins umbraco v8.0 + social network v3.3 = eg: umbraco social network + community plugins

Shannon Deminick 22 May 2017, 04:33:44

But that still doesn't answer the question since splitting the Umbraco.Core Nuget package into smaller ones will make no difference since you will always require all of this Nuget packages to run any Umbraco website.

It will make no difference to your developers if they reference nuget package Umbraco.Core to build class libraries for Umbraco vs potential multiple/smaller nuget packages for Umbraco since all of these references will always be required to run Umbraco.

The only way this becomes different is if there becomes umbraco components that are not required to run Umbraco. An example of this currently is the Umbraco rest api which is a separate Nuget package, another example of this is the Umbraco identity extensions which is separate nuget package. The Umbraco.Core nuget package contains no templates, etc... it's just class libraries and all of these dependencies will be required to run Umbraco.

david 22 May 2017, 06:16:53

if i want a ecommerce website based on umbraco i can use umbraco + ucommerce or merchello

if i want a social network based on umbraco? what should i do?

Shannon Deminick 22 May 2017, 06:25:01

I'm not sure what your question has to do with splitting up Umbraco.Core nuget package into smaller packages, but ...

Umbraco.Core is Umbraco, Merchello is an entirely different community package (not managed by Umbraco)

If you want a "social network" based on Umbraco, then you'd also use Umbraco.Core nuget package and whatever else you want to code with. Umbraco doesn't offer anything for social networks, perhaps the community does or you code something yourself.

So still, there's no benefit of splitting up Umbraco.Core nuget package into smaller/separate nuget packages

Priority: Normal

Type: Task

State: Fixed


Difficulty: Normal


Backwards Compatible: True

Fix Submitted:

Affected versions:

Due in version: 8.0.0


Story Points: