Cortes, Mauricio2020-06-062020-06-06365862000http://dx.doi.org/10.1023/A:1008798208890https://dl.eusset.eu/handle/20.500.12015/3575A collaborative application must support theinteraction of a group of users that share someinformation and have common or complementary goals.Many conflicting situations can arise during acomputer supported meeting when two or moreparticipants access this shared information. Inaddition to data consistency issues (data-levelconflicts), collaborative applications must addressthe specification of interaction rules to control theway users can interact through the application(user-level conflicts) with each other. Theseinteraction rules can vary from session to session,and even during the same session, as users need toestablish new ways to interact with each other. We have developed a coordination programming languagethat helps programmers build new collaborativeapplications or reengineer single-user applications.This language allows programmers to decouplecoordination from computational issues. While acomputational program describes the information thatis being shared, a coordination program determines howa group of users can share this information. Given acomputational program, developers can build multiplecoordination programs. End-users will be able toselect the coordination program that best suit theirneeds to run their collaborative session. A language runtime interpreter executes thesecoordination programs. This interpreter controls theexecution of user actions that are applied to the setof shared objects. Finally, new coordination programscan be loaded in the runtime interpreter at any time,allowing end-users to change the interaction rulesduring an ongoing collaborative session. A descriptionof the runtime interpreter and its implementation isincluded.CSCWdistributed systemsgroupwareprogramming languagessoftware engineeringA Coordination Language For Building Collaborative ApplicationsText/Journal Article10.1023/A:10087982088901573-7551