I often see other developers naming libraries with "CORE". What does it actually mean?

- 160,644
- 26
- 247
- 397

- 2,748
- 10
- 54
- 73
-
3Why is that? Is the meaning of Core subjective? – Robert Harvey Aug 15 '09 at 15:42
-
Wikipedia has a page: http://en.wikipedia.org/wiki/What_wp_is_not in which they say "Wikipedia is not a dictionary." Guess we should have it in SOFAQ... – Mehrdad Afshari Aug 15 '09 at 18:59
-
What? Are we now setting policy at StackOverflow based on Wikipedia policy? – Robert Harvey Aug 15 '09 at 21:05
-
Specific examples, please, of where you think the reason for the "core" moniker is not obvious. – user57368 Aug 15 '09 at 21:46
7 Answers
I asked Bing to define "Core". One of the definitions it came up with was:
essential part: the central or most important part of something
So basically, when someone names a library core, it is the central and most important part of their application and/or framework :-)

- 46,929
- 26
- 130
- 185
-
Can you be more specific. ie, samples of stuff you'd put in the Core. I normally have a separate project for DataAccess, BusinessLogic,Presentation,Configuration, Error Handling, Utilities etc. I am not sure what is left to put in the Core, or if some of that stuff should/could be in the core – Dkong Aug 15 '09 at 16:39
-
@micmoo, because it exists. I don't use Bing myself, but it's his choice what search engine to use. – Ionuț G. Stan Aug 15 '09 at 17:35
In my opinion, CORE means something indispensable. Math functions and other functions with utility purposes are not in the core. They are rather "Utils".
The core is that part that makes everything else exist - without it, the others make no sense. Other stuff, that is not in the core can (not always possible by design) to be removed.

- 28,177
- 5
- 87
- 103
-
+ 1: I can't say that I'm a well read student of the implementation of the .Net framework but just from general exposure it seems that this is consistent with the purpose of System.Core and mscorlib. – Rex Miller Aug 16 '09 at 01:51
-
-
1
I use that convention and it is basically a core class library with generic utility classes and code that really has no place in their own library.
For instance, extension methods to a lot of classes, extra math functions, etc. Things that aren't big enough to warrant a whole other project for them.
What others do I have no idea though.

- 380,855
- 102
- 628
- 825
I view the core as the the abstract heart of the application. The core typically implements enough logic to define the behavior of the whole application.
So in my view data access and presentation should not be part of core. This allows both web and desktop applications to share the same core module.
In your case I would have contain business logic, error handling and configuration in the core module.
I also belive that the main reason for having a big core module is to avoid the cost of having to maintain a lot of smaller modules.

- 4,216
- 3
- 29
- 23
This will probably be judged as heresy, but after several years of structuring solutions with separate projects for data access, business logic, etc, I am more likely going forward to put those layers into a single project called MyApp.Core so that a basic solution would consist of only the core project and a UI project. That's not to say no other projects would ever be needed or added (e.g. MyApp.Tests), but that the basic structure would be based on those two.
Edit: abridged per suggestion in comments.

- 2,706
- 1
- 19
- 26
-
-1: My take is that your answer goes far beyond the question, and has become a blog post or the start of a discussion. I recommend you edit it to stop after you say that you're putting these pieces together and calling it "Core". – John Saunders Aug 15 '09 at 21:15
-
Wow interesting take in contrast to the opinions of the site's proprietors who have stated repeatedly in their podcast that good answers are those that are detailed and provide supporting information to their theses, a position that seems reflected in the community by the myriad answers up-voted with comments indicating appreciation for going into detail. Also an interesting suggestion to truncate an answer that would be essentially subjective without context, rendering it almost as arbitrary as "I prefer blue" without saying why. To each his own though :-) – Rex Miller Aug 15 '09 at 23:59
-
Meh, on further consideration I've wanted a reason to start blogging. Doing the edit. – Rex Miller Aug 16 '09 at 01:32
-
I've removed the downvote, and actually upvoted this answer, because you took the time to consider what I wrote. I'd have upvoted even if you'd come back and said, "after consideration, I'm not changing it". My issue is not that you answered in detail, but that you answered a _different question_ in detail. It's not what OP was asking. – John Saunders Aug 16 '09 at 01:41
Based on the answers already posted here, apparently there is no "standard" way of defining "Core" as it relates to developing libraries.
So I wouldn't worry about being "correct." Use the term as you see fit.

- 178,213
- 47
- 333
- 501
I see core as a prerequisite for any other library that you may use from that vendor. So, while the vendor may offer several independent packages, they all rely on core to get things done. Otherwise it may result in severe code duplication.

- 176,118
- 18
- 189
- 202