CoVim : converting Vim into a real-time collaborative text editor
Date of Issue2016-04-28
School of Computer Engineering
CoVim is an ongoing project that aims to convert Vim editor to a multi-user real-time collaborative application using Transparent Adaptation approach. The present research and implementation of this project focuses towards the completion of CoVim by enhancing, reinventing and fixing the technologies and approaches used in the current system. The current system does not retain all the functionalities of Vim (such as, Redo, CTRL-X insert) and thus does not fulfil the principle of application compatibility . Moreover, there are many problems found in the current implementation, one of which is in intercepting all the user-generated local operations. The objective of this Final Year Project is to make the application robust and user-friendly so that the “look-and-feel” of single-user Vim is retained in CoVim which should provide all the features of a good multi-user collaborative system. The main subject of this report is a new research area in the history of CoVim that aims at understanding the NetBeans Protocol API and its applicability to transparently adapt Vim to CoVim. Important concepts such as Vim Documents from the API’s Point of View, API features for local operation interception and remote operation replay, API-AO Adaptation and AO-API adaptation are discussed. Correct ways to intercept the local user operations using the NetBeans Protocol are implemented in the project. An operation merging algorithm to compress the intercepted operations is designed to minimize the number of AOs generated. Further study of the intercepted local operations is conducted to improve the delta based approach for AO derivation by applying the diff algorithms only on a well-defined address space of the document. This report also elaborates on the improvements made in the area of remote operation replay implemented in the current system. Improved algorithms are implemented in the VimScript plugin to replay insert and delete operations. Furthermore, another approach was introduced to adapt AOs to API level and replay the remote operations using the NetBeans Protocol. This reports demonstrates, with various examples and scenarios, that the research done in the area of the NetBeans Protocol API of CoVim is promising and essential in intercepting the local operations and replaying the AOs on the remote site.
Final Year Project (FYP)
Nanyang Technological University