What's wrong with using object metadata to drive things?
As far as this comment goes:
"Differences from the cr include the fact that you write down your data model: a real table with real constraints."
I must say I'm at a loss to understand it. When one customizes a content datatype one writes a real table or allows the attribute creation code to create the table for you, but in both cases your custom type has a "real table with real constraints" resulting.
As far as comments above regarding the fact that we have too many ways to do things with little documentation as to which are best practices and which are deprecated/frowned upon, this is absolutely true and something we should strive to fix. All forms in the system should be built with the form builder and preferably ad_form, for instance, which in almost all cases greatly simplifies their creation and processing and makes easy the task of providing forms within a site with a uniform look and feel. On and on with item after item we should standardize our approach.
But of course lots of people don't like the form builder, are uninterested in using the content repository, are uninterested in exploring the use of object metadata to automate the boring stuff, etc etc.
We have people who want to build square, pentagonal and hexagonal wheels as well as reinvent the traditional round wheels to be found in the toolkit.
So I'm not optimistic about our ability to settle on a handful of best practices used throughout the toolkit.