This paper discusses causal broadcast programming primitives that allo
w distributed applications to specify message ordering requirements. T
he primitives, implemented in the communication interface by a kernel,
allow event-driven programming whereby application entities specify p
artial ordering on delivery of messages and all entities perceive the
flow of logical time upon exchanging messages. Since entities see the
same order on messages, they have the same view of application state a
t every tick in logical time. The primitives allow ordering constraint
s to be carried in message's in the form of predicates, and a message
to be delivered at destinations after its predicates are satisfied. Th
e approach insulates the specification from the implementation, thereb
y providing flexibility and uniformity in the communication structure
of applications. The programming interface supports an execution model
that is derived from the ISIS 'process group' style of programming, w
hereby application entities are organized as members of a group, and a
message exchanged in the group is delivered to all members, satisfyin
g the ordering requirements. A realization of distributed shared memor
y using the primitives is also given. The paper also discusses the ker
nel level protocol support required to implement the interface. The pr
imitives are useful in structuring complex applications such as distri
buted services and replica management.