Hooks, filters, and documentation thereof, really strenuously.
I have been working with WordPress (wp) for a while now: I dig it, and have found that some of the best modification opportunities come through the hook/filter system. I cannot claim to understand how that system works, but hooks to inject functionality (especially in the template context) and filters to modify default markup are incredibly powerful and flexible.
The problem with hooks/filters is that they seem to be add-ons as a way to get around default behaviours. I have written more code undoing what wp does than i have written doing what i want it to do. If you limit the default behaviours in the first place hooks/filters become a way to augment default behaviours, or add un-imagined functionality.
Being able to call an arbitrarily registered hook in a template context imparts great power. Being able to filter a default function's output imparts great adaptability.
Almost all sites need the same basic things: a crazy index/home page with content from every-damn-where, largely static, client-created content pages, some searchable/taggable.catergorized news/blog posts, and other stuff. Hooks hanld ethe every-damn-where content, filters handle the bulk of the rest.
I see it this way: Chyrp-devs want to build 'their' system: a CMS that meets their needs. That is not a slight, it's what most devs are building: something that does what they want, the way they want. Unfortunately, no one wants the same things.
Avoid overbuilding. Find a core, focus on that and tell people about it. Handle the bits no one wants to fiddle with and you'll build a winning system.
Create rules and stick to them. It's great that i can pass arguments to WP as an array or a string, but if you mandate an array AND STICK TO IT I'll give you an array every time and love it. That would be wonderful.
Imagine that Chyrp devs write an excerpt function that returns 10 full sentences of a given page/post: a developer somewhere is going to need 12, or 6, or 64 characters including spaces to please her/his client.
Do you want to get into that fight, or would you prefer to put the onus on the demanding developer? Give him/her a way to specify the word/character count or over-ride the default behaviour altogether and you have a happy developer.
Implementing a robust hook/filter system would allow internal Chyrp developers to focus on a core set of functionality/functions that no one else wants to write, and create more easily-modified template tags (regardless of engine) that power-users can tweak, and would create in-roads for outside developers to create custom functionality, or 'feathers'.
People do not write their own CMSes because the basics are hard, tedious, or both. If a CMS wants to be useful, it will focus on the business end: user registration and privileges, posting, archiving, tagging/categorizing, page creation, and template application. Focusing on those processes and their security is a great foundation for any CMS (in my highly biased opinion).
I work in a shop that builds a bunch of sites for a bunch of clients. They all need a blog, a few static pages, and other stuff. The complication lies in the 'other stuff' and the particular blog needs. The CMS that handles the needs and has a system that lets me build (and share, as possible) the other stuff is going to win, and most shops will pay a bit for it.
I'll admit it, and i doubt that I am alone: i want something that handles users, user privileges and template allocation for me: i want a system that allows me to build to client specific demands in that framework. If I need to drop in Facebook API access, that's my problem. Twitter? see above, re: my problem.
This is pretty much a post aimed at the Chyrp devs: figure out what you want to build and build it. Maybe I am describing a thing you do not want to build. My bad. But, when you try to please everyone you please no one, and roll out M$ Word.
I may be wrong on all counts, but i feel strongly about them, and that has to count for something.