It is very useful for a CMS to allow site creators to define new content types. This functionality is nicely implemented in Drupal with CCK, also known as content.module. CCK actually allows new types to be defined TTW (Through The Web).
For the 4.7 series, CCK has been developed parallel to core as a set of contrib modules. As the CCK feature set stabilizes, changes are made in core to ease the merge.
4.8 will be the first core release to integrate CCK. A new patch is coming together which will soon move a modified CCK into core. All core content types (blog, story, page) have been reimplemented as CCK types. In the final 4.8 release, an upgrade path will be provided to the new types.
Unfortunately for Drupalers hoping to create custom types on production sites running the stable series, the patch is unlikely to be backported. While it is possible to use the contrib version of CCK with 4.7 sites, there will probably not be a smooth upgrade path for moving these sites to 4.8.
Unless an upgrade path appears, avoid using CCK on production 4.7 sites. One option is to use the old flexinode module. The word is that a migration script will allow migration of flexinode content to the 4.8 version of CCK (although this may not materialize.
Even if no direct upgrade path is provided, it is simple enough to export existing content to CSV format, create parallel types on your new 4.8 site, and then node_import.

CMS
some good information on Drupal's CMS, nice post.
http://www.lifeincatalonia.com