Claudia-Lavinia Ignat
email: ignatcla@loria.fr

Annotation of Concurrent Changes in Collaborative Software Development

Studies showed that in large projects the partition of software modules is limited and developers can contribute to any part of the code. In traditional software development tools such as CVS and Subversion users work in their local workspaces without being informed about concurrent modifications. This can lead to conflicting or redundant changes. We propose an awareness mechanism that informs users about the concurrent published changes by annotating the local project with these modifications. Users can continue working without integrating the concurrent changes being notified about the location of changes at different levels such as package, class, method and line. Users can also see the representation of the concurrent changes by consulting the annotations associated to code lines. We present the algorithms that implement our awareness approach.

Introduction

Most medium to large-scale projects involve multiple software developers that can be located in different places and might work on different time schedules. Traditionally, software projects are developed and maintained by means of a version control or a configuration management system such as CVS [START_REF] Berliner | CVS II: Parallelizing Software Development[END_REF] or Subversion [START_REF] Collins-Sussman | Version control with Subversion[END_REF]. These tools allow developers to work in isolation on different or same parts of software and publish their changes at a later time.

Studies showed that in large projects the partition of software modules among developers is limited and developers can contribute to any part of the code [START_REF] Gutwin | Group awareness in distributed software development[END_REF]. While users work in isolation on their own copies of the source code and compile and test their changes before publishing them to the group, blind modifications might occur [START_REF] Ignat | A Collaborative Writing Mode for Avoiding Blind Modifications[END_REF]. These blind modifications could lead to conflicts or redundant work. A conflict would, for instance, be generated if a developer modifies a method while another developer concurrently deletes that method. Two developers perform redundant work if they concurrently perform an identical task.

In order to avoid blind modifications developers should be informed as soon as possible about concurrent changes performed by other developers. Providing a user an understanding of who is working with him, what they are doing and how his own actions interact with theirs is called awareness [START_REF] Dourish | Awareness and coordination in shared workspaces[END_REF]. We propose avoiding blind modifications by means of a suitable awareness mechanism.

Various tools were proposed to visualise awareness during software development by either augmenting existing views or constructing specialised views where human activities are combined with software artifact information [START_REF] Sarma | Palantìr: Raising Awareness among Configuration Management Worspaces[END_REF][START_REF] Dewan | Semi-synchronous conflict detection and resolution in asynchronous software development[END_REF]. However, none of these approaches localises and represents changes performed by other users on software artifacts.

In this paper we present an awareness approach that avoids blind modifications by localising and representing concurrent changes. Integrating changes of other developers in real-time on a local copy of the source code is not feasible as this often leads to non-compiling code preventing the possibility to test code. We propose the annotation of source code with changes performed by other users. Annotations form an overlay model that is presented to users over their document view. Therefore, users can benefit from the awareness mechanism by means of annotations while continuing to change and test their code without actually integrating remote changes. In this paper we describe our awareness approach for changes that are published to the repository, i.e. users will be informed by means of annotations about concurrent changes committed to the repository and not yet integrated. The awareness mechanism about concurrent changes uncommitted to the repository relying on the same basic ideas as the awareness mechanism about concurrent committed changes is under current research and is not subject of discussion in this paper.

The main assumption of our novel awareness mechanism is that users are connected most of the time, even when they work in isolation. Since nowadays network connectivity is provided almost everywhere at the office, in mobile environments such as trains and planes, or out of the office in hotels or at home and it will continuously expand in the near future, our assumption seems feasible. However, we can support disconnected work, but without providing any awareness mechanism.

The paper is structured as follows. In section 2 we present our envisaged annotation mechanism from the user and interface point of view. Section 3 presents the document model and the set of operations that we used in our annotation mechanism. In section 4 we describe the operationbased synchronisation mechanism that we used in our approach. Section 5 presents our solution for the envisaged annotation mechanism. Section 6 compares our proposition with related approaches. Finally, section 7 presents some concluding remarks and directions of future work.

Envisaged annotation mechanism

In this section we provide an example showing the envisaged annotation mechanism. For an easy understanding, we consider a very simple example involving two software engineers that collaborate on the source code of the same project stored on a central repository. The modifications they perform will overlap on the code of some common classes. Suppose that the first developer decides to remove the method isReal() from the class Integer illustrated in Figure 1 as he thinks that this method is not used throughout the project.

Figure 1. Initial document state

Concurrently, the second developer that uses the functionality of class Integer realises that the method isReal() that he uses should be corrected -it should return false as an integer should not be considered to be a real.

Let us analyse what awareness information is provided to the two developers depending on the order the two devel-opers commit to the repository.

Suppose that the second user commits first to the repository the corrections he performed on the method isReal(). The first user who deletes the method isReal() will receive after the commit of the second user the awareness information presented in Figure 2. By means of a marker the user will be informed that the class Integer is concurrently modified as shown on the top left hand side window of the interface. In the right hand side window an annotation marker will indicate that a line was concurrently modified by another user. If the user examines details about the annotation, he will be informed that there is a conflict between his local change and the remote ones. For instance, the associated annotation in Figure 2 informs the user that the method is-Real() locally deleted was modified by another user. In this manner, the user can decide to contact the other user or not to delete the method.

Figure 2. Interface at the first site after annotation of concurrent committed operations

Suppose now that the first user commits to the repository the deletion of the method isReal(). Let us analyse what happens at the site of the second user that modifies the method isReal(). After the first user commits his changes, awareness information about the changes performed will be sent to him and his local source code will be annotated as in Figure 3. In the right hand side window the user will be notified that the method isReal() is deleted by annotating the lines composing this method. The left hand side windows displaying the class hierarchy and the methods belonging to class Integer will highlight the fact that class Integer was concurrently modified and method isReal() was deleted.

In the next sections we describe our approach for developing the annotation mechanism presented in this section.

Model of the document and set of operations

In order to capture changes at a low granularity level such as the character, we modeled the document as a sequence of characters and we represent changes performed on the document by means of the following two types of operations: insert(p,c) that inserts character c at position p and delete(p) that deletes the character at position p.

The linear structure of the document can be mapped to the structure of a source code document composed of packages, classes, methods and lines of code. Therefore, if a change was performed at a certain character of the document, we can annotate that a change was performed in the corresponding line of code, method, class or package.

Operation-based synchronisation over a shared repository

In this section we present the operation-based synchronisation mechanism over a shared repository by describing the basic methods that should be offered by a version control system. We then present the basic operational transformation mechanism in order to understand the basic steps of the update procedure.

Checkout, Commit, Update

The three basic methods supported by a version control system are: checkout, commit and update. A checkout method creates a local working copy of an object from the repository. A commit method creates in the repository a new version of the corresponding object by validating the modifications done on the local copy of the object. The condition of performing this method is that the repository does not contain a more recent version of the object to be committed than the base version of the local copy of the object, i.e. the last version from the repository that the user started working on. An update method performs the merging of the local copy of the object with the last version of that object stored in the repository.

In an operation-based version control system the repository stores a document version V i by means of the set of operations representing the difference between V i-1 and V i . The initial version V 0 is represented by the initial document state.

In the checkout phase, a request is sent to the repository to specify the version of the document that is intended to be checked out. The repository sends to the client the initial version of the document and the set of operations representing the difference between the requested document version and the initial document version. The client then executes the received list of operations on the received initial document state. It also sets the base document version to the requested version.

In the commit phase, a check is first performed as to whether the user can commit the changes to the repository. If the base version of the document in the local workspace is equal to the last version in the repository, a commit can be performed. Otherwise, an update is necessary before committing the changes. In the case that a commit is allowed, the repository should simply store the operations that were performed in the local workspace.

In the update phase, the repository sends to the local workspace a list of operations representing the delta between the latest version in the repository and the base version in the local workspace. Upon receiving the list of operations from the repository, the local workspace performs a merging algorithm to update the local version of the document. Consider the scenario illustrated in Figure 4 where the local user started working from version V k on the repository but cannot commit the changes because meanwhile the version from the repository has been updated to version V k+n . Let us denote by LL the list of operations executed by the user in their local workspace and by DL the list of operations representing the delta between versions V k+n and V k . Two basic steps have to be performed. The first step consists of applying the operations from DL on the local copy of the user in order to update the local document by integrating the changes included in V k+n . The operations from the repository, however, cannot be executed in their original form as they have to be transformed in order to include the effect of all the local operations contained in LL before they can be executed in the user workspace. The second step consists of transforming the operations in LL in order to include the effects of the operations in DL. The resulting list of transformed local operations represents the new delta to be saved in the repository.

Operational transformation

In order to illustrate the operational transformation approach we start by providing an example. Suppose the repository contains a class document with the content illustrated below. For simplicity, we represented only a small part of the document.

. . . int concurencyContrl (. . . ) { . . . Suppose that two users checkout this version of the document and perform some operations in their workspaces. User 1 performs the operation O 11 =insert(115,'o'). We supposed that the method name concurencyContrl(...) corresponds to offset 100 in the source document. Therefore operation O 11 is an operation of insertion of character 'o' at the position 115 inside the document in order to correct the misspelling of the method name concurencyContrl to concurencyControl. Afterwards, User 1 commits the changes to the repository and the repository stores the list of operations performed by User 1 consisting of O 11 . Further, assume that, concurrently, User 2 executes operation O 21 =insert(105,'r') of insertion of character 'r' at the position 105 inside the document in order to correct the misspelling of the method name concurencyContrl to concur-rencyContrl. Before performing a commit, User 2 needs to update their local copy of the document. Operation O 11 stored in the repository cannot be applied in its initial form on the local workspace of User 2 , it needs to be transformed in order to include the effect of operation O 21 . Because operation O 21 inserts a character before the insertion position of O 11 , O 11 needs to increase its position of insertion by 1. This process of transformation of an operation to include the effects of another operation is called operational transformation. In this way, the transformed operation will become an insert operation of the character 'o' at position 116, the result document being: . . . int concurrencyControl (. . . ) { . . .

Operational transformation mechanism was allowed to be performed in this case as the document states before the generation of O 11 and O 21 respectively were identical.

We explain next more formally the notion of operational transformation. Firstly, we present the notion of context [START_REF] Shen | Flexible Merging for Asynchronous Collaborative Systems[END_REF] of an operation.

O a → CT O b if CT O b = CT Oa • O a , i.e.
the state of the document on which O b is defined is equal to the state of the document after the execution of O a .

Next, we explain one of the basic mechanisms of the operational transformation approach [START_REF] Ellis | Concurrency Control in Groupware Systems[END_REF], called inclusion transformation that we used in our algorithms. This type of transformation was illustrated in the previous example.

IT (O a , O b ) is that O a = CT O b . If the result of IT (O a , O b ) is O a , then O b → CT O a .

Updating phase

In this subsection we present the operation-based merging algorithm used in the updating phase and that is also used by our annotation mechanism presented in section 5. The operation-based merging algorithm presented in this subsection is derived from the SOCT4 algorithm [START_REF] Vidot | Copies Convergence in a Distributed Real-Time Collaborative Environment[END_REF].

Consider the scenario illustrated in Figure 4 where we denoted by LL the list of operations executed by the user in

O d1 = CT O l1 O 1 d1 = CT O l2 where O 1 d1 = IT (O d1 , O l1 ) O 2 d1 = CT O l3 where O 2 d1 = IT (O 1 d1 , O l2 ) . . . O n-1 d1 = CT O ln where O n-1 d1 = IT (O n-2 d1 , O ln-1 )
When O d2 has to be applied on the local workspace, O d2 cannot be directly sequentially transformed against the list LL as O d2 is not contextually equivalent with the operations in LL as operation O d2 contains in its context operation O d1 while operations in LL do not. In order that transformations can be performed, operations in LL should include the effect of operation O d1 , the result being the list

LL 1 = [O 1 l1 , ..., O 1 l(i-1) , O 1 li , O 1 l(i+1) , ..., O 1 ln ]
where

O 1 l1 = IT (O l1 , O d1 ) O 1 l2 = IT (O l2 , O 1 d1 ) where O 1 d1 = IT (O d1 , O l1 ) . . . O 1 ln = IT (O ln , O n-1 d1 ) where O n-1 d1 = IT (O n-2 d1 , O ln-1 ).
Further, when O d3 has to be applied locally it needs to be transformed against operations in LL 1 . In order that such transformations can be performed, operations in LL 1 need to be transformed against operation O d2 in the same manner as described above. The same process is in turn applied for operations O d4 , . . . , O dm . We can notice that at each step operations in DL and LL are transformed against each other. In order to support this process, the symmetric inclusion transformation between two operations O a and O b has been defined as follows:

Algorithm symmetricInclusion(O a ,O b ):(O a ,O b ) { O a :=IT(O a ,O b ); O b :=IT(O b ,O a ); return (O a ,O b ); }
In what follows we present the merge procedure. It takes as input arguments two logs, the remote log RL containing the operations from the repository and the local log LL containing the local operations. The merge procedure generates as output two other logs, the new remote log N RL and the new local log N LL, each of which is modified to include the effects of the operations in the other log. The new remote log N RL will contain the list of operations that should be executed sequentially on the current document state of the working copy in order to update it. The new local log N LL will store the list of operations which represent the delta between the new version and the old version in the repository and will have to be sent to the repository. The implementation of the merge procedure is given below.

Annotation mechanism

Additionally to the standard checkout, commit and update methods we offer an annotation mechanism of concurrent changes that is described in this section.

Each time a user commits changes to the repository, the repository informs the other users about the committed operations and user documents are annotated with the committed changes. Users can continue working without integrating committed changes, being informed by means of annotations about the concurrent changes performed. As showed in Figure 2, our annotation mechanism is meant to provide developers a quick overview about changes that occurred at a specific document part and who performed those changes. Changes performed by different users are depicted by different colours. For tracking user changes deleted parts of the document are marked as strike out and therefore they are not physically removed from the document.

Annotations should not modify the local document state and therefore local operations performed in the workspace do not have to take into account execution of annotation operations. We call an annotation operation a remote operation that will annotate the document. Annotations should be attached to the current document state. Therefore, for computing the proper location and effects of annotation operations in the current document, they have to take into account concurrent executions of local operations. The contents of the attached annotations to certain document parts should illustrate the integration of the annotation operations within the local document state corresponding to that document part. Therefore, merging between annotation and local operations has to be performed. In order to offer support for the visualisation of the deleted parts of the document, delete operations should mark for deletion the targeted characters and transformation functions used for merging should be adapted to do not take deletions into account. We used the tombstone transformation functions [START_REF] Oster | Tombstone Transformation Functions for Ensuring Consistency in Collaborative Editing Systems[END_REF] for merging annotation operations with the local operations.

In order to deal with the annotation mechanism, each user workspace maintains the following data structures:

• LL the local log of operations containing the operations executed in the local workspace.

• ARL the annotation remote log containing the committed and non-updated operations from the repository that were used for the annotation process on the local document.

• ALL the list of local operations transformed against the ARL log. These transformations are performed in order to prepare further applications of annotations.

• V.bv is the identifier of the base version of the local project, i.e. the latest version in the repository that was integrated in the local workspace.

We next describe the steps followed and how the above structures are updated in the case of the following main actions: checkout, execution of a list of local operations, commit, update of the local workspace and annotation of the local workspace. We mention that the actions of checkout, commit, update and annotation are atomic and therefore, no two of these types of actions independently called can interfere with each other. Moreover, if two actions of this type are sequentially sent by a certain site (client or server) to be applied on the remote site, they will arrive in the same order at the receiver site.

Checkout version V.nv

When a version of the project V.nv is checked out, the following steps are performed:

-execute locally all received operations from the repository representing version V.nv -V.bv:=V.nv -LL:=[]; ALL:=[]; ARL:=[] -RL:=Repository.difference(V.nv,V.lv), where V.lv is the latest version in the repository -call annotate(RL)

The local document is replaced with the version of the document from the repository and therefore, the list of operations received from the repository is locally executed on the initial document version received from the repository and the list LL is emptied. V.bv is updated with the value of the checked-out version from the repository. The annotations are removed and therefore ALL and ARL are emptied. Afterwards, the repository computes and sends to the client the difference between the latest version in the repository V.lv and the checked-out version V.nv. The client calls the annotation procedure described in subsection 5.5 with this difference passed as parameter.

Execution of a list of local operations

When a user executes locally the list of operations L 1 , the following steps are performed:

-append(L 1 ,LL) -(NL 1 ,NARL):=mergeTTF(L 1 ,ARL) -append(NL 1 ,ALL) -ARL:=NARL
List L 1 is appended to the list of local operations LL. In order to compute the location and contents of annotations, list L 1 is merged with list ARL. The transformed list of local operations N L 1 is appended to ALL. The annotation remote log ARL is replaced with N ARL obtained as result of merge to take into account the list L 1 of executed local operations. The base version of the local project V.bv remains unchanged. The function mergeTTF has the same functionality as merge described in subsection 4.3 with the difference that the subprocedure symmetricInclusion uses the tombstone transformation functions. The list of local operations LL is sent to the repository and a new version of the project constructed from the list LL will be made available. The local base version is incremented. After the commit is performed, the list LL is emptied. The annotations are removed and therefore lists ALL and ARL are emptied, too. Annotations are removed and therefore lists ALL and ARL are emptied. The local list of operations LL is merged with the remote list of operations RL. The transformed list of local operations N LL will become the current local log. The operations in the transformed remote log N RL are sequentially applied on the local workspace. The base version of the local workspace is assigned the latest version in the repository. Note that for computing the document state as result of an update, the merge procedure described in subsection 4.3 is used. Delete operations physically delete characters in the document when they are executed and transformations against delete operations are performed.

Commit

Update

Annotate the local document with a list of remote operations

Each time a user commits changes to the repository, the repository sends to the other connected users the list of committed changes. This list of remote operations denoted by RL is received by local users and used to annotate the document. These operations are not integrated on the local document, i.e. list LL remains unmodified as well as the base version of the document. The following steps are performed:

-(NRL,NALL):=mergeTTF(RL,ALL) -use sequentially the operations in NRL to compute the annotations within the document append(NRL,ARL) -ALL:=NALL In order to compute the content of the annotations attached to parts of the document where concurrent changes occurred, the annotation operations in RL are merged with local operations in ALL. The operations in the transformed list N RL are used sequentially to compute an intermediary state of the local document that integrates annotation operations. The actual local document state does not change. The intermediary document state is scanned and the parts where annotation changes occurred are associated with local document lines. N RL is appended to ARL to keep track of all operations used in the annotation process. The list ALL is replaced by the transformed list N ALL to take into account the new list of operations RL used in the annotation mechanism.

Related work

CVS watches [START_REF] Berliner | CVS II: Parallelizing Software Development[END_REF] permit users to subscribe for changes performed on an artifact and to be notified by email when a user announces by means of a command his intent to modify that artifact. However, watches require the use of email as an external tool for coordination in software development. In [START_REF] Fitzpatrick | CVS Integration With Notification And Chat: Lightweight Software Team Collaboration[END_REF] the email notification mechanism is replaced with a lightweight notification mechanism called Elvin together with a tickertape tool where CVS messages are displayed and where developers can also chat with one another. Elvin and the tickertape are integrated in the CVS. These approaches do not provide a presentation mechanism of the changes performed.

VC 2 [START_REF] Machado | VC 2 -Providing Awareness in Off-The-Shelf Version Control Systems[END_REF] is an awareness tool that can be integrated with existing version control systems. The file system is monitored for changes performed on documents. A user working on a document receives a notification when another user starts editing the same document. The user can then ask the other user for committing his changes. The second user might accept or reject the request.

In [START_REF] Dewan | Semi-synchronous conflict detection and resolution in asynchronous software development[END_REF] a real-time awareness is provided for collaborative software engineering. Warning messages are used to notify developers about concurrent activity. Developers can afterwards consult the list of conflicts. Moreover, based on a selected conflict, a user can set watches for concurrently edited elements such that he is informed when the collaborator finished editing the element.

State Treemap [START_REF] Molli | State Treemap: an Awareness Widget for Multi-Synchronous Groupware[END_REF] informs users about states of shared documents. Different states are defined to indicate when a copy is locally modified, when two copies of the document are modified and none of them is published yet or when a document copy is modified locally and some changes on that document were committed.

Palantìr [START_REF] Sarma | Palantìr: Raising Awareness among Configuration Management Worspaces[END_REF] is an awareness tool for distributed software development based on the same principle as State Treemap, the main difference being that severity information that computes the amount of changes performed among documents is provided.

In the divergence metrics approach [START_REF] Molli | Divergence Awareness for Virtual Team Through the Web[END_REF], metrics are not based as in Palantìr and State Treemap approaches on events triggered when the states of documents are changed, but they rather use information provided by operations that model concurrent changes. It is possible to compute the amount of concurrent changes performed on each document or an amount of conflicting/overlapping changes.

However, none of the previously mentioned approaches directly localises and presents the concurrent changes. Some of these approaches such as [START_REF] Berliner | CVS II: Parallelizing Software Development[END_REF], [START_REF] Fitzpatrick | CVS Integration With Notification And Chat: Lightweight Software Team Collaboration[END_REF] and [START_REF] Machado | VC 2 -Providing Awareness in Off-The-Shelf Version Control Systems[END_REF] provide notifications about concurrent changes without any information on the changes performed. In [START_REF] Dewan | Semi-synchronous conflict detection and resolution in asynchronous software development[END_REF] the notification mechanism allows users to consult conflicting changes that are listed in a separate document. In our approach concurrent changes are localised and annotated on the local document without any burden for users to set watches and analyse their results. The approaches in [START_REF] Molli | State Treemap: an Awareness Widget for Multi-Synchronous Groupware[END_REF], [START_REF] Sarma | Palantìr: Raising Awareness among Configuration Management Worspaces[END_REF] and [START_REF] Molli | Divergence Awareness for Virtual Team Through the Web[END_REF] provide either a simple information that an artifact has been concurrently changed or a quantitative information about the concurrent changes performed on the same arti-fact. However, no information about the location of changes is provided. Some of the approaches described above present notifications or a qualitative measure of concurrent uncommitted changes. We presented an awareness approach only for concurrent committed changes. We are currently working on extending our approach for uncommitted changes.

Conclusions and future work

In this paper we presented an awareness approach that avoids conflicting or redundant concurrent modifications in collaborative software development. Our approach consists on annotating the local project with the concurrent changes. By means of annotations users are informed about the location and representation of concurrent modifications and can continue their work without integrating these changes in their local workspace. We expect that provided awareness information will generate group communication and autocoordination between users in order to prevent conflicts and redundant work.

We presented the operational transformation algorithms for implementing the proposed annotation mechanism associated with a basic version control system. We developed a plugin for Eclipse [START_REF]Eclipse -an open development platform[END_REF] that implements the proposed annotation mechanism. We implemented a basic version control system where users can save and checkout versions of their shared projects and update their local projects with the published changes. Additional to a traditional version control system, our system informs users when new changes were published and these changes are used to annotate user local workspaces.

We are currently working on extending the awareness mechanism for concurrent uncommitted changes in addition to the committed changes. We plan to investigate the usability and the benefits of our approach by performing user studies.

Figure 3 .

 3 Figure 3. Interface at the second site after annotation of concurrent committed operations

Definition 1

 1 The context of an operation O denoted as CT O is defined as being the document state on which O is defined. Two operations O a and O b having the same context, CT Oa = CT O b , are denoted O a = CT O b . Definition 2 An operation O a is context preceding operation O b denoted as

Definition 3

 3 The Inclusion Transformation -IT (O a , O b ) transforms operation O a against operation O b such that the effect of O b is included in O a . The condition of performing

  their local workspace and by DL the list of operations in the repository that have to be applied locally to update the local document. Consider that DL and LL have the following structure DL = [O d1 , ..., O d(i-1) , O di , O d(i+1) , ..., O dm ], where O d1 → CT ... → CT O dm and LL = [O l1 , ..., O l(i-1) , O li , O l(i+1) , ..., O ln ], where O l1 → CT ... → CT O ln . O d1 = CT O l1 as both lists LL and DL were defined on the same context namely the document state corresponding to version V k . As mentioned in subsection 4.1 operations in DL need to be transformed against operations in LL and operations in LL have to be transformed against operations in DL. Each operation in DL needs to be transformed against all operations in LL. When O d1 has to be applied on the local workspace, it is allowed to sequentially transform O d1 with respect to O l1 , ..., O l(i-1) , O li , O l(i+1) , ..., O ln as

A

  user is allowed to save his local version of the project to the repository only if his local version is up-to-date. If the local version is not up-to-date, the user has to update his local version of the project before committing his changes. When a new version of the project is committed to the repository, the following steps are performed: -send to the repository the list LL -V.bv:=V.bv+1 -LL:=[]; ALL:=[]; ARL:=[]

  When an update is performed, the repository sends to the user the list RL representing the difference between the base local version of the user and the last available version of the project in the repository. The following steps are realised: -ALL:=[]; ARL:=[] -(NRL,NLL):=merge(LL,RL) -LL:=NLL -execute NRL sequentially on the local document state -V.bv:=V.lv, where V.lv is the latest version in the repository


PhD candidate, LERASS Charis Papaevangelou

A Facebook content moderation debacle: the case of Greece

, as well as to explore the political stakes of platforms' content moderation policies that, in some cases, may amount to censorship (Gillespie, 2018). Indeed, the functioning of democratic societies depends on a fine and complex trade-off between, on the one hand, the ability to express one's opinions freely in political debate and, on the other hand, the protection of citizens from abuses such as harassment, hate speech, misleading propaganda and political manipulation.

This chapter first discusses how Facebook's content moderation process work, along with Facebook's policies on Dangerous Individuals and Organizations, which were allegedly violated in the case we examine; second, we will briefly describe necessary contextual information regarding 17 November and Koufontinas's actions, along with what sparked the examined controversy. Finally, we will present and discuss several instances of content and account restrictions that took place during the same time span, mostly between February and April 2021, and that referred to Koufontinas. Last, we will conduct a case-by-case analysis to deduce if the content had indeed violated any platform policy in order to extrapolate what may have happened in this case and what socio-political stakes exist with the current content governance [START_REF] Suzor | Understanding content moderation systems: New methods to understand internet governance at scale, over time, and across platforms[END_REF].

How does Facebook's Content Moderation work?

Facebook has admittedly the largest and most sophisticated content moderation system in place compared to other major social media companies [START_REF] Singh | An Analysis of How Internet Platforms Are Using Artificial Intelligence to Moderate User-Generated Content[END_REF]. This can be explained primarily due to its vast popularity; it still is the most popular social network with 2.8 billion active users, with YouTube following with 2.3 billion active users (Statista, 2021). Having to deal with so many users, tech companies have resorted to tech solutions to police content on their platforms at scale [START_REF] Gillespie | Content moderation, AI, and the question of scale[END_REF][START_REF] Suzor | Understanding content moderation systems: New methods to understand internet governance at scale, over time, and across platforms[END_REF]; hence many of them are increasingly relying on automated solutions based on Artificial Intelligence (AI) and Machine Learning (ML) algorithms with dire consequences, in many cases, on human rights [START_REF] Kassem | Sheikh Jarrah: Facebook and Twitter systematically silencing protests, deleting evidence[END_REF][START_REF] Borgesius | Strengthening legal protection against discrimination by algorithms and artificial intelligence[END_REF]. According to estimates, the digital content moderation industry is projected to reach $8.8 billion in 2022, roughly double the 2020 total. Facebook, in particular, is the biggest client of companies that undertake outsourced content moderation contracts, such as the multinational firm Accenture, whose contract with Facebook is worth at least $500 million a year1 . More than 15,000 moderators, out of a total of 200,000 worldwide, work for Facebook contractors.

In many countries Facebook plays a vital role in a society's news diet; for instance, in Greece, where trust in media has plummeted, Facebook is the most popular social platform with 57% of internet users selecting it for their news consumption (Newman et al., 2020, p. 72). Its popularity, along with its history of failures to stop campaigns of disinformation and toxicity, is also one of the reasons that Facebook is under the most scrutiny from the press and regulators [START_REF] Gillespie | Custodians of the internet: Platforms, content moderation, and the hidden decisions that shape social media[END_REF]. A recurrent subject of criticism is its content moderation system that is allegedly producing 300,000 wrong decisions every day2 .

Facebook's moderation can be either ex-ante or ex-post, that is either before or after a piece of content is published [START_REF] Klonick | The new governors: The people, rules, and processes governing online speech[END_REF](Klonick, , p. 1635)). The ex-ante approach relies on automated solutions that screen the content that is being uploaded before it is published; for instance, there is a hashed database of known bad-faith actors that is shared among members of the Global Internet Forum to Counter Terrorism (GIFCT), a non-governmental organization that Microsoft, Twitter, Facebook, and YouTube created in 2017 to prevent terrorists from using their services. The content promoted by these actors is deleted before it is even published. Additionally, moderation can be either reactive, where "moderators passively assess content" or proactive, where "moderators actively seek out published content for removal" [START_REF] Klonick | The new governors: The people, rules, and processes governing online speech[END_REF](Klonick, , p. 1635)). To this end, Facebook uses a combination of tens of thousands of human reviewers [START_REF] Newton | Why these Facebook research scandals are different[END_REF], who in many cases work in poor and dehumanizing conditions [START_REF] Roberts | Behind the screen: Content moderation in the shadows of social media[END_REF], and opaque algorithmic processes to police content on its platform (Singh, 2019, p. 22).

As part of pipelining the process, Facebook has created a set of policies, called Community Standards, that its users must adhere to and that its moderators must follow to do their job. Yet, we know from leaked reports that there are serious problems with these standards. For instance, there are secret guidelines that Facebook provides its reviewers with [START_REF] Hern | Decoding emojis and defining 'support': Facebook's rules for content revealed[END_REF] that are inaccessible to its users, as well as a whitelist that exempts quasi-VIP users from being held to the same standards [START_REF] Horwitz | Facebook Says Its Rules Apply to All. Company Documents Reveal a Secret Elite That's Exempt[END_REF].

Thanks to whistle-blowers and investigative reporting, we are now aware that Facebook employs three tiers of moderators: Tier 3 moderators do the majority of "day-to-day" reviewing, such as the vast majority of user reports, and are usually outsourced to third-party contractors outside the US, like multinational corporation Teleperformance in Greece (Παπαδόπουλος, 2019); Tier 2 moderators supervise Tier 3 moderators and are responsible for reviewing "prioritized or escalated content"; last, Tier 1 moderators are those who shape Facebook's policies and are based within its headquarters [START_REF] Klonick | The new governors: The people, rules, and processes governing online speech[END_REF](Klonick, , p. 1640-41)-41).

In addition to these practices that further obscure Facebook's content moderation system and seed distrust among users, the platform does not divulge much information concerning the way that user reporting is handled. We know that the reported content awaits review by a Tier 3 human moderator; in the meantime, that content, having passed the automated filters, will stay intact. It is then up to the reviewer to either take it down, leave it up or enforce other actions like visibility restrictions; if unable to determine what should be done, in most cases, it will be escalated and assigned to a Tier 2 moderator. It remains unclear if there are specific policy violations that are prioritized over others or if there are types of content that will be "frozen" (i.e., restricted) until a verdict has been made.

The Case of Dimitris Koufontinas and 17 November Before we begin discussing our case study, we ought to provide some necessary contextual information. Revolutionary Organization 17 November ("17 November" for short) was active between 1975 and 2002; their victims included Greeks and foreigners: former torturers of Greece's seven year-long junta between 1967-1973, businesspeople, publishers, journalists (including the brother-in-law of current Prime Minister Kyriakos Mitsotakis), judges, police officers, secret services members, officials and ordinary staff of the US, UK and Turkish embassies in Athens, and in one instance a bystander, student Thanos Axarlian. The perpetrators were arrested in 2002 and put on trial. Several 17 November members, including Koufontinas, are still serving long prison sentences. In addition, the United States" Secretary of State had designated the organization as a Foreign Terrorist Organizations in 10/8/1997 and delisted them in 9/3/20153 .

After New Democracy, the traditional conservative political party of Greece, won the elections in 2019, one of the first things they did was to amend the Penal Code, which they were relentlessly attacking as the country's major opposition for being too lenient on "terrorists." Among the passed amendments, one was specifically aimed at Koufontinas: convicted terrorists would have the right to apply for parole only after having served 22 years of their sentence, and not 17 as was previously foreseen (Μάνδρου, 2019); Koufontinas had served 16 at the time. A few months later, the government passed another bill that abolished the right for convicted terrorists to serve at the country's rural prisons, which are thought to have better living conditions, and had to be instead transferred to the previous serving facility where they were held.

Up until 2018, Koufontinas was serving at the rural prison of Kassavetia Volou; prior to that, he was being held in the country's largest and most secure prison complex near Athens, Korydallos. So, with the new bill, Koufontinas had to return there. However, during the same time, the government announced it would reform the Korydallos detention center to a prison only for detainees awaiting trial; thus, it was decided to transfer Koufontinas to Domokos, 220 kilometers from Athens, a prison envisioned to be a "disciplinary center" for political terrorists, like the founders of the neo-Nazi party "Golden Dawn" who were also serving there (Σουλιώτης, 2020). This was seen by Koufontinas's lawyers and supporters as an unjust and illegal punishment, evidence of a vindictive state policy against him, particularly because of his participation in 1989 in the execution of journalist Pavlos Bakoyannis, the father of Athens' Mayor Kostas Bakoyannis and husband of Dora Bakoyanni, ex-minister of foreign affairs and sister of Greek Prime Minister Kyriakos Mitsotakis.

Koufontinas went on hunger strike on 8 January 2021, demanding to be transferred back to Korydallos, as the law initially stipulated. He ended his hunger strike on the 14 th of March, lasting 66 days4 ; his life reached imminent danger after having suffered kidney failure (Associated Press, 2021). The story gained so much traction, that a Spanish MEP filed a question to the European Commission about Koufontinas's situation5 , as the thought of an inmate dying of hunger strike in a European Union member state was daunting.

The situation led to extreme polarization within Greek society: while polls were showing that as much as 60% to 70% of Greeks were opposed to satisfying Koufontinas's demands, thousands of leftists and anarchists rallied daily to his support in Athens and other big Greek cities [START_REF] Kitsantonis | Protests and Vandalism Follow Hit Man's Hunger Strike[END_REF]. Notwithstanding the pressure, the government did not back down; Koufontinas eventually stopped the hunger strike and received immediate treatment prior to being transferred to Domokos's detention center. It should also be noted that an appeal filed by Koufontinas's lawyer to Greece's Supreme Court was rejected6 .

A Content Moderation Barrage

Amidst this extremely tense situation, many Greeks started posting messages about the case as it can be seen in Figure 1 below. Greek Facebook users noticed a trend: numerous accounts were either being temporarily suspended or had their content removed after posting either about the protests or in support of Koufontinas demand (but not in favor of his terrorist acts). In this section, we will present empirical evidence concerning influential figures (i.e., journalists, photo-reporters, public personas and organization) that have had their account blocked or content taken down during the two months of Koufontinas's hunger strike (Table 1). The evidence was gathered through intensive web search and it is possible that there are cases of content moderation that did not receive similar attention as to the ones discussed here. Thus, it should be stressed that the selection of cases is not comprehensive but was rather based on the fact that the people or the organizations involved are public figures, as well as on the availability of information. Also, in many instances, the same content was posted on other platforms, namely Twitter, and no actions were taken against it. By looking at the instances mentioned above, we can infer the following: i.

The content that was moderated referred to the Koufontinas case. ii.

All posts were published between 23/02 and 02/03, a period included in the first peak of mentions of the term "Κουφοντίνας" (Koufontinas in Greek) in Facebook posts as shown in Figure 1; what is more, multiple demonstrations took place during that period. The second peak seen in Figure 1 is due to Koufontinas announcing the end of his hunger strike. iii.

Six out of ten posts were deemed to have violated Facebook's Community Standards in regard to its particular Dangerous Individuals and Organizations policy, while two others apparently violated Facebook's general Community Standards even though they referred to the same case; for the rest we could not find this information. iv.

Possibly, more than half of the actions were reinstated after user appeals. v.

Eight out of ten posts were made by left-leaning journalists, which could be a possible explanation of why they were targeted by Facebook's moderation system. However, the case of historian Polymeris Voglis and that of the Association of Greek Judges & Prosecutors is not in line with this hypothesis.

By analyzing the cases on Table 1, we have not identified any violations of Facebook's Community Standards. All of them were either reporting on demonstrations that were taking place at several cities in Greece, which are newsworthy events, or discussing the case's critical stakes without appraising Koufontinas's violent past as evidenced by our examination. This was also the opinion of a Facebook partner: Dimitris Alikakis, senior editor of "Ellinika Hoaxes," a certified Facebook fact-checker 7 , said that "Facebook has made a mess of it all" and, referring to Mr. Voglis's case, that "it doesn't violate any policy" 8 .

Additionally, another element of inconsistency is that, while there were two cases found by moderators to be in violation of Facebook's general Community Standards, the other six were accused of violating the platform's Dangerous Individual and Organizations policies. This may indicate that different human decisions were applied to the same kind of content, something that has been empirically attested by research in other contexts of "manual" content moderation [START_REF] Smyrnaios | Occupation:"Net Cleaner"-The Socio-economic Issues of Comment Moderation on French News Websites[END_REF].

A Political Tantrum

Avgi, one of Greece's oldest leftist newspapers with strong ties to the former ruling party of Syriza, asked Facebook about the increased content takedowns on 26 February 2021. Facebook replied almost immediately through its Greek Public Relations partner, "Hill+Knowlton":

"Terrorists, violent extremist groups and hate groups have no place on Facebook and Instagram. In accordance with our Dangerous Individuals and Organizations Policy, we prohibit members of terrorist organizations, such as Koufontinas, from using our platforms, and we also block posts that endorse or support these individuals and their actions whenever we become aware of them. Taking a neutral stance regarding terrorist groups and informing the media about their actions is not against our rules"9 (translation and emphasis ours).

Facebook's policy on Dangerous Individuals and Organizations mentioned in their reply merits unpacking 10 . Like the content moderators' hierarchy, this policy is divided into three tiers as well: "Tier 1 focuses on entities that engage in serious offline harms [including] terrorist, hate, and criminal organizations. We remove praise, substantive support, and representation of Tier 1 entities." What is more, the platform heavily relies on the US government to define terrorists: "Tier 1 includes […] terrorist organizations, including entities and individuals designated by the United States government as Foreign Terrorist Organizations (FTOs)." In other words, "Silicon Valley tech companies rely on the US government to define 'terrorism,' and remove content from groups on the State Department's [FTO list]" (York, 2021, p. 126). Tier 2, then, focuses on violence against military and/or state actors that "do not generally target civilians," while Tier 3 "focuses on entities that may repeatedly engage in violations of our Hate Speech or Dangerous Organizations policies onor-off the platform or demonstrate strong intent to engage in offline violence in the near future." Consequently, it seems that Facebook is following US policies without questioning, while promoting their agenda on a global scale. So, this policy has direct consequences in the structure of the political debate in third countries where the characterization of "terrorist" is contested (for example PKK in Turkey or Hezbollah in Lebanon).

Moreover, relevant content about the Koufontinas case that was posted from accounts and pages that were less left-leaning and/or militant was not removed, indicating the possibility of a political selective bias or targeted massive reporting campaigns [START_REF] Smyrnaios | Le signalement sur les réseaux sociaux, un moyen de modération mais aussi de censure[END_REF]. Facebook generally denies that mass reporting influences its moderation process; its Greek representatives repeated as much in their response to another request sent by the investigative journalists of Reporters United, claiming with emphasis that "even a single report is enough to partially block content, if it's confirmed that it violates [Facebook's] policies" 11 . More importantly though, in their response, Facebook vicariously admitted to having mistakenly enforced policy actions by stating that "although great progress is being made in our [content moderation] systems, they are still not perfect, and sometimes mistakes are made, as in this case. The content that was accidentally removed was reinstated when it was discovered" (Reporters United, 2021; translation and emphasis ours).

In their reply, the PR firm that acts on behalf of Facebook reaffirmed that the platform "allows people to neutrally discuss these individuals and share news reports about their actions." However, it failed to provide the public with more information as to what kind of mistakes were made and at which stage of the content moderation process in this particular case. It is interesting to note that the reply was published just one day after Facebook took action against many photo-reporters' content, causing the Union of Greek Photo-reporters to issue a reproachful announcement on the 2 nd of March, calling out Facebook's for "censorship" 12 . The same strong language was used in an official letter of inquiry that the major left-wing opposition party in Greece, Syriza, sent on the 5 th of March to the Prime Minister's office through the Hellenic Parliament concerning "censorship on social media" 13 . Also, Facebook did not provide an answer to Reporters United's question about whether they had been contacted by the Greek government regarding this issue and whether Teleperformance was indeed conducting content moderation for Facebook in Greek language as it was reported in the press (Παπαδόπουλος, 2019). A Syriza MP also sent a letter to Teleperformance Greece asking for the company to take responsibility for the moderation errors that were reported 14 . He went even further by linking them to the fact that Teleperformance Greece was awarded with a public contract for providing call center services related to the Covid-19 pandemic and implied that censoring posts of left-wing journalists about Koufontinas could be a favor to the government in exchange for this contract.

Thus, the lack of clarity and transparency on behalf of Facebook leaves ample space for political speculation and, even, conspiracy theories. Furthermore, the double standards that were applied on similar content demonstrate further inconsistency and raise more suspicions of political bias. These suspicions are reinforced by the fact that a current Senior Communications Manager of Hill+Knowlton, the PR firm that represents Facebook in this affair, Mr. Leonidas Marcantonatos, is a member of the ruling party and holds the position of "Diaspora Affairs Lead for US and Canada" since May 2020 according to his LinkedIn page. This does not amount to evidence of governmental interference, but raises deontological eyebrows, especially since the company acts on behalf of a private conglomerate in Greece, creating thus the conditions for what scholars have called "regulatory capture" [START_REF] Novak | A Revisionist History of Regulatory Capture[END_REF][START_REF] Stigler | The Theory of Economic Regulation[END_REF].

Discussion

11 https://www.reportersunited.gr/4153/ypothesi-koyfontina-to-facebook-tora-leei-oti-ekane-lathos/.

12 https://www.avgi.gr/social/380862_logokrisia-kataggellei-i-enosi-fotoreporter. 13 https://www.hellenicparliament.gr/UserFiles/c0d5184d-7550-4265-8e0b-078e1bc7375a/11588045.pdf. 14 https://www.2020mag.gr/politics/1531-epistoli-vernardaki-stin-teleperformance-gia-facebook-logokrisia-sesxolia-anartiseis-kai-dimosieyseis-pou-einai-epikritika-pros-tin-kyvernisi.

We have no concrete evidence to safely infer conclusions except for the empirical material presented in this chapter. If we were to speculate, we would argue that, first, Koufontinas is indeed blacklisted as a Dangerous Individual on Facebook; possibly because he and 17 November had been in the State Department's list until 2015. Second, we would argue that, given the traction that the case was receiving near the end of February, as can be seen in Figure 1, it is possible that people started reporting relevant content and accounts who disseminated it, triggering Tier 3 human moderators to review it. Third, these moderators saw that Koufontinas was a blacklisted terrorist and enforced policy without looking at the content's context. Fourth, as the suppressed accounts belonged to journalists and, thus, were quite vocal not only on Facebook but also on other media, the restrictions gathered a lot of attention and required the intervention of Tier 2 moderators. Last, Tier 2 moderators verified that no policy was violated and, to control damage, ordered the content to be restored (some of it was restored immediately or with a delay, but some of it was never restored).

Two questions remain: first, why were these accounts targeted when other news media or journalists were covering the story as well? And, second, what constitutes neutral discussions for Facebook if factual reporting can be taken down with such ease? A probable answer to the first question is that people, who did not want to see Koufontinas's demand granted or who disagreed with what was being posted, reported relevant content and accounts, either on their own or in coordination with others; whether there was an automated filter applied to content related to Koufontinas is uncertain but it is unlikely as that would have caused all relevant content to be restricted, as mentioned earlier. Furthermore, given the close interest of the Greek government in this case, a political intervention against specific content and/or accounts cannot be excluded (neither proved).

The second question is a bit trickier to answer because, theoretically, any piece of content that covers a controversial matter may be massively reported. So, it is possible that there is a loophole within the current content moderation process that requires adjustment: instead of relying solely on how news content is perceived by users to train machine learning models, there should be checks and balances to ensure that reporting and political discussions, even around controversial issues, should be left intact unless deemed harmful by properly trained human reviewers. This should also deter bad faith actors from gaming the report mechanism to their interest [START_REF] Crawford | What is a flag for? Social media reporting tools and the vocabulary of complaint[END_REF].

Conclusion

To summarize, this chapter provided an overview of a case study of a content moderation debacle on Facebook concerning the news coverage and political discussion of a complicated case around a convicted terrorist's protest. In addition, we attempted to describe how Facebook polices content on its platform based on a three-tier system, along with a combination of human reviewers and algorithmic processes.

Our case study demonstrates that content moderation remains highly problematic for major social media platforms, despite their recent efforts to up their game. Anecdotally, Kate Klonick wrote in a Twitter thread that "for every 1.3 content moderation workers at FB there are 100,000 FB users" 15 , highlighting the fact that while Facebook has invested the most resources in content moderation among other Big Tech companies, the resources allocated are still incredibly low compared to what is needed.

We argue that this case study further demonstrates platforms' preference to proactively err on the side of more content removal [START_REF] Douek | Governing Online Speech: From 'Posts-As-Trumps' to Proportionality and Probability[END_REF] rather than letting controversial content on its services; this also further strengthens the argument that platforms are not neutral intermediaries [START_REF] Gillespie | The politics of 'platforms[END_REF] and are increasingly taking editorial decisions [START_REF] Napoli | Why media companies insist they're not media companies, why they're wrong, and why it matters.pdf[END_REF]. Moreover, we posit that this is the path of least resistance for platforms, as it allows them to not tackle hard-pressing issues concerning freedom of expression and freedom of information. In other words, these companies have the necessary resources to invest in content moderation services that would align with their popularity and importance; the question is whether they have the will to do so. And, if not, whether public authorities have the political will to pass regulations that would force their hand and change the current content governance structure.

Last, through our investigation and relevant content analysis, we identified some issues that raise political questions about platforms' relationship with state actors, namely Facebook and the Greek government. In a time where tech lobbying has become the biggest lobby sector in the EU with a staggering annual record of €97 billion [START_REF] Dr | The lobby network: Big Tech's web of influence in the EU[END_REF], alongside the ever-present phenomenon of revolving doors, where state actors take up crucial positions in private companies and vice versa (Stiglitz, 2014), cases like the one of Mr. Marcantonatos (Figure 3) do not help build trust in either public or private sector and can only worsen Greek citizens' trust in news outlets, which was already low according to the latest Reuter's Digital News Report, as "fewer than a third (30%) [of Greeks] trust the news" (Newman et al., 2020, p. 72). Deontological questions that are inherently connected to political integrity should not be left unanswered especially in the context of the Covid-19 crisis where many countries like Greece face threats on media freedom and pluralism.

Figure 1 -

 1 Figure 1 -Content referring to Koufontinas on Facebook from 01/01/2021 to 30/04/2021 -Source: CrowdTangle

Table 1 -

 1 Instances of content moderation actions related to Koufontinas's case

https://www.nytimes.com/2021/08/31/technology/facebook-accenture-content-moderation.html.

https://www.forbes.com/sites/johnkoetsier/2020/06/09/300000-facebook-content-moderation-mistakesdaily-report-says/?sh=78ee731754d0.

https://www.state.gov/foreign-terrorist-organizations/.

https://www.efsyn.gr/ellada/dikaiomata/285561_me-dilosi-toy-o-dimitris-koyfontinas-stamata-tin-apergiapeinas

. 5 https://www.europarl.europa.eu/doceo/document/E-9-2021-000827_EN.

html. 6 https://www.iefimerida.gr/ellada/ste-aperripse-oristika-aitima-koyfontina-gia-domoko.

https://www.avgi.gr/social/380532_giati-afairoyntai-anartiseis-gia-ton-dimitri-koyfontina.

2021 (The LiFO Team, 2021) 8 https://info-war.gr/anthropino-cheri-piso-apo-ti-logokrisia/.