Articles about content management systems (CMSs) often talk about "core." What is "core"? Why does it matter?
"Core" Is the Basic Code of the CMS
In a CMS, "core" means the basic code you get when you download the
program. WordPress "core" is the basic set of files you download from
wordpress.org when you download WordPress. Drupal "core" is the set
of files you download from
drupal.org when you download Drupal. And
Technically, these files aren't only code. They include images for
the default theme, and text files like
Usually, though, when people talk about "core", they're talking about
the code files.
"Core" Is Maintained By the Core Developers
A good CMS is always changing. As people use it, they discover features that are broken, or don't work as intended. Developers find security holes that need to be fixed.
The only way to solve these problems is by changing the code. That's what "core developers" do. Core developers maintain the core code.
If no one maintains the core code, the CMS will eventually wither. No matter how amazing the CMS may have been when it was first released, it won't survive without this continuous attention. People will switch to other projects that are actively maintained.
Obviously, the quality and commitment of the core developers is a critical factor in the popularity and success of a CMS.
Core Developers Release Upgrades
Perodically, the developers release an upgrade. The upgrade is simply a new version of the code, with the latest small improvements scattered throughout the files.
When the new version of core is available, everyone using this CMS needs to upgrade their own copy.
Never Hack Core
Ideally, an upgrade is as simple as copying the new versions of the core code files over your old versions. With the new code in place on your site, you get the benefits of all the recent changes.
Since you know you'll have to copy over these core files on the next upgrade, it follows that you should never edit these core files yourself. Any edits you make will only get copied over the next time you upgrade.
"Plugins" or "Modules" Are Extra Code
Instead, if you need a new feature, look for a "plugin" or "module" that can do it. A plugin or module is a separate set of code files that adds an extra feature to your CMS.
Core and Plugins Are Very Different
Core and plugins are very different. If you understand why, you'll save yourself a lot of hair and heartache.
In a good CMS, the core code is maintained by a large group of extremely talented and dedicated developers. They put tons of ongoing work into making sure that the CMS is solid and secure.
Plugins, on the other hand ... have you noticed how many plugins there are? A major CMS can easily offer thousands of plugins. Where do they all come from?
All over the place. Anyone can write a plugin.
Some plugins and modules are of excellent quality. They're written and maintained by professional developers.
But many plugins and modules are mediocre, and even insecure. Unfortunately, even a single bad plugin can break your whole site, either right away or on your next upgrade.
Yes, there are amazing plugins out there, and most sites will need at least a few. But you need to choose plugins wisely, or your site will soon deteriorate. When in doubt, skip the plugin.
Plugins Get Updated Separately
Most plugins and modules are developed by different people than the developers working on core. So, every plugin on your site will have separate upgrades. All these teams are working independently. Any one of them can release an upgrade for their own plugin at any time.
Maintaining all these separate upgrades is one of the most time-consuming parts of running a website. (Although it's still faster than writing all your own code.)
Check Core Before You Look for a Plugin
Sometimes, you want a feature, and there's a plugin for it, but you could actually do the same thing in core. Obviously, since any plugin means extra work and liability, you should try using core first.
Even if it takes a few extra steps to set something up in core, you'll save time down the road.
For instance, say you want to run multiple WordPress sites from a single codebase. You might remember hearing awhile back about a plugin called "WordPress MU" that offered this feature.
Before you look for that plugin, however, you should check whether this feature is already included in WordPress core. Turns out, it is. After WordPress MU came out, the core developers decided to include that feature in WordPress core. When everyone upgraded their WordPress site, they got this new feature for free.
Now, you can enable WordPress multisite without having to add another plugin.
So What's A "Core Module"?
I've sharply divided "core" from "modules". But Drupal fans may point out that when you download Drupal, this includes core modules. And WordPress ships with some default plugins. What's going on?
In Drupal, a "core module" is developed by the core developers. Basically, don't touch that code either. Although the code is split into its own "module", it's still part of "core."
In WordPress, the default plugins aren't necessarily developed by the core team, but you can probably trust them.
On the other hand, many hosts roll their own version of a CMS. If you're just using a one-click installer, rather than downloading WordPress or another CMS from the source site, be careful. The host may have "helpfully" included plugins or modules that aren't a great idea.
Core Is Awesome
Anyhow, the main point here is: core is awesome. It's in a constant state of flux, but (in theory) that's exactly what makes it so stable. Keep your core maintained, don't touch it, and your web site will run smoothly.