Refactoring the word 'Core' to 'Seedwork'

Coordinator
Jul 2, 2011 at 10:55 AM
Edited Jul 2, 2011 at 10:56 AM

We got a very interesting feedback (from Arnis), and I completely agree with it, stating that the word 'Core' we use for our re-usable code/assemblies, could be confused by the word 'Core', when Eric Evans talks about the 'Core Domain'. This 'Core Domain' is a completely different concept. Your 'Core Domain' is the most important and strategic Domain knowledge of your system. It is what you have to take care of, your strategic Domain, your 'know how' regarding your Domain and business and it must be distilled in a different way than non strategic domains (maybe collateral BOUNDED-CONTEXTS). In any case, clearly, it has nothing to do with reusable technical code, like the following assemblies we are using:

Microsoft.Samples.NLayerApp.Infrastructure.Data.Core

Microsoft.Samples.NLayerApp.Domain.Core

And quite a few other projects within Cross-Cutting, etc.

The point is, when you read NLayerApp.Domain.Core, you could think it is about the 'Core Domain' Eric Evans talks about, and it is a different concept, like mentioned.

You could think this issue is a very small nuance if you understand the objectives of our 'Projects.Core', but regarding DDD, I think it is really important not to show it in current way as it can cause an initial misunderstanding.

Therefore, we're thinking about refactoring all V2.0 projects and switching from the 'Core' word to 'Seedwork'.

Seedwork means a small framework or reusable code only for your project or even several projects, but it does not have the same isolation and a dedicated dev-team that a framework should have.

Martin Fowler defined this term quite nicely, here:

http://www.martinfowler.com/bliki/Seedwork.html

And I think it is exactly what our current 'Core' assemblies are about, therefore, we are probably going to refactor that in V2.0. We would have namespaces and assemblies' names like:

Microsoft.Samples.NLayerApp.Infrastructure.Data.Seedwork

Microsoft.Samples.NLayerApp.Domain.Seedwork

Comments? :)

If you have any suggestion related to this, do it quickly, as we'll do this refactoring ASAP. We need to have it changed in order to take screenshots for the V2.0 guidance (chapters) and I have to change it in a lot of places... :-(

Jul 4, 2011 at 6:27 AM
Edited Jul 4, 2011 at 6:33 AM

Hi,

What about something like Common or General?

Jul 4, 2011 at 7:40 AM

Well since Domain.Core only contains Interfaces and Baseclasses, why not call it Domain.Base?

I have never heard Seedwork before, nor have i seen it being used. I think chances are high that people seeing that namespace would have to research on "Seedwork" first.

May 23, 2012 at 4:03 PM

I thought it was maybe a strange Spanish -> English anomaly until I found the Fowler article. I vote for Base for v3, unless "Seedwork" gains more traction in the meantime.

Sep 1, 2012 at 5:28 PM

I didn't know about Seedwork assemblies until I saw this Discussion!

Please, rename this.