A key requirement for emergence is that there are some basic/simple rules/operations. Put these rules together in various ones and new properties or behaviours arise, e.g.:
stay close to your neighbour; don't knock into anyone => flocking
Is there something that we can learn from this simplicity? In other words should we always be striving to create simple rules and operations for our software/processes/etc?
SQL databases, REST (each have four primitives) Blogging (post, link, comment, syndicate?)
Higher level "primitives" can be built on lower level primitives, one can see this as simply stabilising or reinforcing an emergent quality of a lower layer, e.g. Blogging is built on REST-ful interactions, and often database primitives.
In some cases its not obvious what the primitives are, so we "let a thousand flowers bloom" than come back later to see which ones have survived, and maybe do some pruning. That's why post-facto standardisation is often better, e.g XML. (Primitives: start/end tag, annotate (attributes), validate).
RDF has some primitives: triples, containment, etc.
If we accept this premise (and I'm aware that I've not presented a convincing argument) then we could argue that the best way to guide application development is to find or make the primitives for a particular application area.
E.g. where are the primitives for annotating, splicing, overlaying, etc music or movies. This would allow fan-subbing, commentary, analysis, mixing, contrasting, etc.
Tools like Chandler(?) have primitives: drag-and-drop, context, etc
The best APIs are those with the simplest interfaces.