Wordgard 0.1, 새로운 리치 텍스트 에디터의 등장

by DD
12시간 전
조회수 0

Wordgard 0.1이 ProseMirror 및 CodeMirror에서 영감을 받아 새롭게 출시되었음

JavaScript 기반으로 브라우저 DOM을 활용하며 MIT 라이선스로 공개됨

Markdown 편집 지원AI 코드 생성에 대한 커뮤니티의 관심이 높음

PR을 받지 않는 독특한 오픈소스 모델에 대한 논의가 주목받고 있음

Wordgard의 변경점 및 개선 사항

개발자는 ProseMirror의 단계별 변경(Step-based Changes) 시스템이 다루기 어렵다고 지적하며, Wordgard에서는 CodeMirror v6의 델타(Delta) 형식에서 영감을 받은 수정 섹션(Modification Sections)을 도입했다고 설명합니다. 이는 텍스트 변경(Text Changes)마크 수정(Mark Modifications)을 통합하여 단일 트랜잭션으로 관리하며, 운영 변환(Operational Transformation) 지원을 통해 협업 편집 및 부분적 실행 취소 기능을 향상시킵니다. 또한, 토큰 기반 인덱싱(Token-based Indexing)을 사용하여 문서 위치를 평탄한 시퀀스로 다루지만, 유효한 트리 구조를 보장하기 위한 변경 검증(Change Validation) 로직이 추가되었습니다.

스키마 구성(Schema Composition)의 유연성 증대

ProseMirror와 달리 Wordgard는 노드 및 마크 타입(Node and Mark Types)을 독립적인 객체로 취급하여 스키마 재사용성(Schema Reusability)을 높였습니다. 각 타입은 여러 스키마에 걸쳐 독립적으로 사용될 수 있으며, 스키마는 기본 정의를 재정의(Override)하여 특정 관계를 조정할 수 있습니다. 이는 모듈식 기능 확장(Modular Feature Extension)을 용이하게 하며, ProseMirror의 스키마 종속성 문제를 해결하여 재사용 가능한 기능을 제공하는 데 유리합니다.

콘텐츠 제약(Content Constraints) 완화 및 확장 시스템

Wordgard는 ProseMirror의 시그니처 기능이었던 정규식 기반 콘텐츠 제약(Regex-based Content Constraints)을 제거했습니다. 대신 노드 내용 설명은 자식 노드 타입만 제한하며, 순서는 자유롭게 허용합니다. 이는 문서 조작 코드의 복잡성(Complexity of Document Manipulation Code)을 줄이고, 사용자가 중간 단계에서 비정형적인 문서 모양을 만들더라도 사용자 경험(User Experience)을 저해하지 않도록 하기 위함입니다. 또한, 확장 시스템(Extension System)은 CodeMirror v6의 패싯(Facet) 기반 모델을 차용하여, 플러그인보다 세분화된 확장 포인트(Extension Points)를 제공하고 구성 트리(Configuration Tree)를 통해 유연한 에디터 설정을 지원합니다.

브라우저 의존성 감소 및 선택 동작 직접 제어

기존 ProseMirror가 브라우저의 네이티브 선택 동작에 의존하여 발생했던 커서 이동(Cursor Motion)마우스 선택(Mouse Selection)의 불안정성 문제를 Wordgard는 직접 해결합니다. 양방향 텍스트 처리(Bidirectional Text Handling) 및 자체적인 커서 렌더링(Cursor Rendering)을 구현하여 이를 극복했습니다. 다만, 터치 선택(Touch Selection)은 네이티브 동작에 의존하며, beforeinput 이벤트를 활용하여 DOM 변경 감지 및 파싱 방식의 복잡성을 줄였습니다.

PR 없는 오픈소스 모델과 AI 코드 생성에 대한 입장

개발자는 유지보수 부담을 줄이기 위해 풀 리퀘스트(Pull Requests, PRs)를 받지 않는 실험적인 방식을 채택했습니다. 이는 AI 코드 생성 시대에 LLM 생성 코드(LLM-generated Code)의 유입을 막는 효과적인 방법으로 언급됩니다. MIT 라이선스 하에 코드를 공개했지만, AI가 코드를 학습하는 것에 대한 우려를 표하며, 수작업으로 시스템을 설계 및 구축했음을 강조합니다. 이는 오픈소스 커뮤니티 내에서 AI 활용 및 기여 방식에 대한 새로운 논의를 촉발합니다.

Wordgard Release 0.1