The Jetbrains’ Meta Programming System (?) al-
lows developers to extend IntelliJ-based editors with
a projectional editor for a domain-specific language.
Their editors furthermore support collaborative edit-
ing, however, we are unaware of their approach to
synchronising replicas as their source code is not pub-
licly available.
10 CONCLUSION
This paper presented an alternative approach, called
COAST, to implement a real-time collaborative code
editor to overcome the limitations that arise for tradi-
tional editors that treat source code as sequences of
characters. COAST synchronizes code at the level
of the abstract syntax tree (AST) and implements this
AST as a conflict-free replicated data type (CRDT).
Our proof-of-concept implementation covers a min-
imal set of nodes, but already demonstrates the ca-
pability of the merging strategy to resolve conflicts
for different concurrent operations. The strategy is
mainly based on the inclusion of a logical timestamp
allowing for an ordering of events that allows the data
structure to recompute the AST including newly re-
ceived updates. Even so, certain optimizations are in
order to improve conflict resolution, either by the in-
clusion of developer roles or by shifting the merge
granularity.
REFERENCES
Atom (2022). atom/teletype: Share your workspace with
team members and collaborate on code in real time in
atom. https://github.com/atom/teletype. (Accessed on
03/22/2022).
Baheti, P., Gehringer, E., and Stotts, D. (2002). Exploring
the efficacy of distributed pair programming. In Wells,
D. and Williams, L., editors, Extreme Programming
and Agile Methods — XP/Agile Universe 2002, pages
208–220, Berlin, Heidelberg. Springer Berlin Heidel-
berg.
Ball, T., Burckhardt, S., de Halleux, J., Moskal, M.,
Protzenko, J., and Tillmann, N. (2015). Beyond open
source: The touch develop cloud-based integrated de-
velopment environment. In 2015 2nd ACM Interna-
tional Conference on Mobile Software Engineering
and Systems, pages 83–93.
Chawathe, S. S., Rajaraman, A., Garcia-Molina, H.,
and Widom, J. (1996). Change detection in hier-
archically structured information. SIGMOD Rec.,
25(2):493–504.
Dotzler, G. and Philippsen, M. (2016). Move-optimized
source code tree differencing. In 2016 31st
IEEE/ACM International Conference on Automated
Software Engineering (ASE), pages 660–671.
Falleri, J.-R., Morandat, F., Blanc, X., Martinez, M., and
Monperrus, M. (2014). Fine-grained and accurate
source code differencing. In Proceedings of the 29th
ACM/IEEE International Conference on Automated
Software Engineering, ASE ’14, page 313–324, New
York, NY, USA. Association for Computing Machin-
ery.
Fluri, B., Wursch, M., PInzger, M., and Gall, H. (2007).
Change distilling:tree differencing for fine-grained
source code change extraction. IEEE Transactions on
Software Engineering, 33(11):725–743.
Frick, V., Grassauer, T., Beck, F., and Pinzger, M. (2018).
Generating accurate and compact edit scripts using
tree differencing. In 2018 IEEE International Con-
ference on Software Maintenance and Evolution (IC-
SME), pages 264–274.
Ghorashi, S. and Jensen, C. (2016). Jimbo: A collaborative
IDE with live preview. Proceedings - 9th International
Workshop on Cooperative and Human Aspects of Soft-
ware Engineering, CHASE 2016, pages 104–107.
Goldman, M. et al. (2012). Software development with real-
time collaborative editing. PhD thesis, Massachusetts
Institute of Technology.
Huang, K., Chen, B., Peng, X., Zhou, D., Wang, Y., Liu,
Y., and Zhao, W. (2018). Cldiff: Generating concise
linked code differences. In 2018 33rd IEEE/ACM In-
ternational Conference on Automated Software Engi-
neering (ASE), pages 679–690.
Kleppmann, M., Mulligan, D. P., Gomes, V. B. F., and
Beresford, A. R. (2022). A highly-available move op-
eration for replicated trees. IEEE Transactions on Par-
allel and Distributed Systems, 33(7):1711–1724.
Microsoft (2022). Faq - visual studio live share - vi-
sual studio live share — microsoft docs. https://docs.
microsoft.com/en-us/visualstudio/liveshare/faq. (Ac-
cessed on 03/02/2022).
Nichols, D. A., Curtis, P., Dixon, M., and Lamping, J.
(1995). High-latency, low-bandwidth windowing in
the Jupiter collaboration system. UIST (User Interface
Software and Technology): Proceedings of the ACM
Symposium, (October):111–120.
Nicolaescu, P., Jahns, K., Derntl, M., and Klamma, R.
(2015). Yjs: A framework for near real-time p2p
shared editing on arbitrary data types. In Cimiano,
P., Frasincar, F., Houben, G.-J., and Schwabe, D., edi-
tors, Engineering the Web in the Big Data Era, pages
675–678, Cham. Springer International Publishing.
Protzenko, J., Burckhardt, S., Moskal, M., and McClurg, J.
(2015). Implementing real-time collaboration in touch
develop using AST merges. MobileDeLi 2015 - Pro-
ceedings of the 3rd International Workshop on Mobile
Development Lifecycle, pages 25–27.
Salinger, S., Oezbek, C., Beecher, K., and Schenk, J.
(2010). Saros: An eclipse plug-in for distributed party
programming. Proceedings - International Confer-
ence on Software Engineering, pages 48–55.
Shapiro, M., Preguic¸a, N., Baquero, C., and Zawirski, M.
(2011a). A comprehensive study of Convergent and
Commutative Replicated Data Types. Research Re-
port RR-7506, Inria – Centre Paris-Rocquencourt ;
INRIA.
Shapiro, M., Preguic¸a, N., Baquero, C., and Zawirski,
M. (2011b). Conflict-free replicated data types. In
COAST: A Conflict-free Replicated Abstract Syntax Tree
195