# cola: 실시간 협업 편집을 위한 텍스트 CRDT 기술

> Clean Markdown view of GeekNews topic #10713. Use the original source for factual precision when an external source URL is present.

## Metadata

- GeekNews HTML: [https://news.hada.io/topic?id=10713](https://news.hada.io/topic?id=10713)
- GeekNews Markdown: [https://news.hada.io/topic/10713.md](https://news.hada.io/topic/10713.md)
- Type: GN+
- Author: [neo](https://news.hada.io/@neo)
- Published: 2023-09-04T23:36:30+09:00
- Updated: 2023-09-04T23:36:30+09:00
- Original source: [nomad.foo](https://nomad.foo/blog/cola)
- Points: 1
- Comments: 1

## Topic Body

- Rust로 작성된 'cola'라는 실시간 협업 편집을 위한 텍스트 CRDT(Conflict-free Replicated Data Type)의 이론적 배경과 기술적 구현에 대한 설명  
- CRDT는 여러 사이트에서 동시에 복제 및 수정할 수 있는 데이터 구조로, 중앙 권한의 조정 없이도 수렴이 보장됨  
- 글의 내용은 문서의 상태 표현과 그것을 변형하는 편집, 코드에서 프레임워크를 효율적으로 구현하는 방법, 그리고 cola와 다른 Rust 기반 CRDT 라이브러리와의 벤치마크 비교로 나뉨  
- 저자는 텍스트에서 'Anchors'라는 개념을 소개하며, 이는 동시성을 활성화하는 방식으로 삽입과 삭제를 모두 지정하는 데 사용됨  
- 논문에서는 'Lamport timestamps'를 사용하여 Lamport timestamp에 따라 내림차순으로 정렬함으로써 충돌하는 삽입을 처리하는 방법에 대해 논의함  
- 저자는 삭제를 처리하기 위해 'tombstones'라는 개념을 소개함. tombstoned 문자는 삭제로 표시되지만 문서에는 계속 유지됨  
- 논문에서는 'G-trees'(grow-only trees)의 사용을 통해 시스템의 성능을 향상시키는 방법에 대해 논의함. G-trees는 양방향으로 순회할 수 있어 동일한 커서 위치에서 반복적인 편집이 매우 빠름  
- 저자는 cola와 Rust로 구현된 다른 세 가지 CRDT인 diamond-types, automerge, yrs와의 벤치마크 비교로 논문을 마무리함. Cola는 상류와 하류 방향 모두에서 다른 세 가지를 능가함  
- 저자는 cola가 현재 알려진 가장 빠른 텍스트 CRDT 구현이지만, 아직 제작 준비를 위해 해야 할 작업이 있다고 지적함. 예를 들어 undo/redo 및 기타 기능을 지원하는 것 등

## Comments



### Comment 18936

- Author: neo
- Created: 2023-09-04T23:36:31+09:00
- Points: 1

###### [Hacker News 의견](https://news.ycombinator.com/item?id=37373796)   
- 한 댓글에서는 G-트리가 기본적으로 부모 포인터가 추가된 B-트리이며, 이를 배열에 저장해도 그 구조가 근본적으로 변하지 않는다고 주장  
- Cola가 굵게, 기울임꼴 등과 같은 리치 텍스트 포맷팅 범위를 지원하지 않을 수 있다는 우려가 있으며, 댓글 작성자는 리치 텍스트 CRDT 알고리즘의 최신 기술로 Peritext를 제안  
- Cola와 Automerge 또는 Y.js/Yrs와 같은 유사한 기술 간의 성능이나 기능 비교에 대한 질문이 있음  
- 동적 배열에서 노드 소유권 문제에 대한 해결책이 논의되었으며, 이때 모든 노드는 동적 배열에 저장되고 인덱스는 다른 노드를 참조하는 데 사용됨  
- 'slotmap'이라는 crate를 사용하여 인덱스가 이동하거나 다른 값들을 가리키는 것에 대한 걱정 없이 삭제를 지원하도록 제안  
- 일부 사용자들은 Etherpad와 Word와 같은 다른 도구들이 실패한 프로젝트에서 Cola를 시도해보는 데 관심을 표현  
- 사용된 벤치마크의 공정성에 대한 비판이 제기되었는데, 이는 작업이나 실제 텍스트를 계산하고 저장하지 않기 때문  
- 이 Cola가 Ian Piumarta의 동명의 작품과 혼동되어서는 안 된다는 사항도 얘기됨  
- 텍스트 CRDT를 사용하여 브라우저에서 양식의 협업 편집을 가능하게 하는 것에 대한 질문도 있음  
- "CRDT"라는 약어를 문서에서 정의하는 것이 제안되었는데, 이는 매우 흔하지 않아 독자들이 혼란스러워할 수 있기 때문  
- Cola를 tiptap/prosemirror 또는 다른 텍스트 편집기와 함께 사용하여 CRDT 기반의 협업 편집을 추가할 수 있는 가능성에 대한 질문도 제기
