공동편집 editor선정

brody·2020년 1월 29일
0

공동편집패드

목록 보기
1/2

공동편집 알고리즘

공통편집은 여러 클라이언트에서 보낸 메세지의 '변경분'을 머지하는 알고리즘이 있음. 이 알고리즘 중 대표적인게 OT, CRDT다.

https://conclave-team.github.io/conclave-site/ 이곳에 OT와 CRDT설명이 자세히 써있음

  • OT

    OT엔진을 구현한 것중 하나가 ChangeSet이고, 우리는 이 ChangeSet을 사용한 EtherPad 에디터를 쓰고있었다. 문제는 표기능이 없고, 커스터마이징하기가 굉장히 어렵고, 버전이 한참 뒤쳐졌지만 커스터마이징 한 것 때문에 버전을 올릴수도 없는 처지라 다시 개발하려고 했던것.

네이버오피스 개발자 홍영택님 협업도구 개발 review (2013년..비록 오래되었지만)을 보면

https://deview.kr/2013/detail.nhn?topicSeq=4

이분이 OT엔진을 통해 공동편집툴을 만드는 과정을 소개해주심

  • CRDT (Conflict-free replicated data type)

    OT보다 후에 나온 알고리즘인데, 이 CRDT를 구현해놓은 대표 소스가 yjs(https://github.com/yjs)이다.

    OT보다 메모리는 많이 쓰지만 데이터의 일관성을 보장한다.

    yjs는 절대 conflict가 날 수 없는 구조임.

    또한 yjs에서 quill, prosemirror, atlaskit을 붙혀놓은 demo를 제공하고 있어서 이를 확인해보기로 했다.

에디터는 뭐로?

에디터 선정시 중요하게 생각했던 것은 다음과 같다.

  • 표기능이 있어야함
  • 엑셀 복붙했을때 표로 잘 들어가야함
  • 무료 라이센스
  • 데이터 많을때 느리면 안됨

특히 표기능은 현재 VOC가 매우매우 많이 들어와서 꼭 필요함

y-quilly-prosemirrory-atlaskit
특징제일보편화
delta라는 변경분 객체를 가짐(yjs와 비슷)
가벼움prosemirror를 감싸서 만듬
무거움
문제표 plugin이 공동편집 error
서로 완전 이상하게 동작
ie에서 한글 error
표생성 시 커서 문제
ie에서 한글 error
quill-tableprosemirror-tables기본탑재
속도 in ie
(1000줄을 붙혀놓고
다른편집기에서 5글자추가)
지연없음12초
속도 in ie (2000줄)지연없음브라우저 죽음

그래서?

그래서 우리는 (1) yjs와 붙혀놓은 에디터가 있고, (2) table plugin이 공동편집에서 어느정도 제대로 동작하고(비록 몇몇 오류는 수정해야 하지만), (3)속도가 비교적 빠른 y-prosemirror를 '일단'활용해 개발해보기로 했다.

profile
일하며 하는 기록

0개의 댓글