This language is not completely new. It has language elements from Prolog, concurrent logic programming languages, process algebras, Linda, and object-oriented programming languages. It also has concepts such as atomic sequence (transaction) and events. To better model collaborations it supports the concept of role and role operators. It would be interesting and challenging to develop a formal semantics of this language so that the many pieces from various sources can be reconciled in one elegant mathematic framework.
The latest version of COCA includes the following extensions. A set of role operators were introduced in [19] to model runtime dynamics in collaborative systems, e.g., operators for switching between different roles, transferring a role between participants, evolution of coordination policies on the fly, in addition to the take role and drop role operators discussed in Section 4.6. Coordination policies specified in COCA can be verified, as is discussed in [20]. A new application was explored in [21] to exercise the ``dynamic grouping'' feature discussed in Section 4.4.2. Further information on COCA and its applications can be found in [15].