본문 바로가기
C.W.K.
Stream
Lesson 03 of 04 · published

왜 VS Code 나 Obsidian 을 fork 안 하나

~11 min · fork, vscode, monaco, obsidian

Level 0식은 초고
0 XP0/33 lessons0/12 achievements
0/100 XP to next level100 XP to go0% complete
"Cursor 는 그 chrome 이 필요해서 코드 IDE 를 fork 해. Rekindle 은 거기서 도망치는 중이고. 집이 아니라 심장을 빌려."

VS Code fork (Cursor 의 길)

'AI 에디터' 로 가는 뻔한 지름길은 Cursor 처럼 VS Code 를 fork 하는 거야. Cursor 한텐 맞는 선택이지. 코드 IDE 를 만드는 중이고 그 chrome 이 통째로 필요하니까. Rekindle 한텐 정확히 틀린 선택인데 이유가 셋이야. 첫째, VS Code 는 원래 집이던 Sublime 의 열 배쯤 되니까 절반은 안 쓰는 기능 문제를 최대 규모로 다시 떠안게 돼. 둘째, 심장인 Monaco 는 line/column 코드 셀을 모델로 삼는 코드 에디터지 prose 에디터가 아니야. 셋째, fork 하는 순간 Microsoft upstream 에 영구적인 rebase 세금이 붙어. VS Code 가 릴리스될 때마다 네 변경 사항과 화해시켜야 하는 merge 가 생기는 거지. Cursor 는 그 세금을 감당할 팀이 있고, 두 명짜리 팀은 없어.

Obsidian fork (어차피 불가능)

또 다른 본능은 Obsidian 을 fork 하는 거야. 워낙 잘 맞으니까. 그런데 애초에 못 해. Obsidian 은 무료지만 Electron 기반의 closed-source 독점 소프트웨어거든. 할 수 있다 해도 하면 안 되고. 트랙 2 에서 얻은 깨달음이 여기서 또 나오니까. Obsidian 의 편집 성능은 Obsidian 것이 아니라 CodeMirror 6 것이야. Obsidian 을 fork 해서 얻을 그 부분은 Obsidian 자신도 빌려 온 레이어라는 뜻이지. 그러니 fork 해봤자 직접 가져올 수 있는 코어를 무거운 Electron 껍데기로 감싼 물건만 손에 들어와.

집이 아니라 심장을 빌려

두 fork 다 같은 실수를 저질러. 하나 얻자고 을 통째로 들고 오는 거지. Rekindle 이 원하는 방은 편집 코어인데, 그건 깔끔한 MIT 라이브러리로 따로 구할 수 있어. 그래서 심장인 CodeMirror 6 만 빌리고 몸은 Tauri 로 가볍게 직접 지었어. 남의 애플리케이션 전체와 그 유지보수 짐까지 물려받는 대신에.

VS Code fork    코드 IDE + Monaco (코드 모델) + MS rebase 세금 상속
Obsidian fork   불가능 (closed) — 가능해도 어차피 CM6 를 Electron 으로 감쌈
CM6 빌리기      딱 편집 코어만, 네 가벼운 껍데기에

# 집 말고 방을 가져. 방은 MIT 고 따로 떼어 쓸 수 있어.

Code

집 말고 방을 가져·text
길              실제로 얻는 것
--------------  ---------------------------------------------------
VS Code fork    코드 IDE + Monaco (코드/line-column 모델) +
                영구적인 Microsoft-upstream rebase 세금
Obsidian fork   불가능 (closed source); 가능해도, 직접 가져올 CM6 를
                Electron 으로 감싸는 꼴
CM6 빌리기      딱 편집 코어, MIT, 네 Tauri 껍데기에

# fork 는 방 하나 얻자고 집을 통째로 들고 오는 짓이야.
# Rekindle 이 원한 방, 그러니까 편집 코어는 따로 떼어 쓸 수 있어.

External links

Exercise

'이거랑 비슷한데 좀 다르게' 만들고 싶은 앱을 하나 떠올려봐. 물어봐. 앱 전체가 필요한 거야, 아니면 그 안의 서브시스템 하나가 필요한 거야? 그다음 그 서브시스템이 독립 라이브러리로 나와 있는지 찾아봐. 있으면 앱을 fork 하는 건 거의 확실히 틀린 수야. 방 하나 때문에 집을 물려받고 남의 릴리스를 평생 merge 하게 되니까.
Hint
'X 를 fork 할까 말까' 하는 고민 대부분은 질문 하나로 녹아. 내가 X 에서 진짜로 원하는 그 한 부분이 뭐고, 그건 따로 구할 수 있어? 구할 수 있으면 그 부분만 빌려. fork 는 정말로 집 전체가 필요할 때 쓰는 거야.

Progress

Progress is local-only — sign in to sync across devices.
이 페이지에서 버그를 발견하셨거나 피드백이 있으세요?문제 신고

댓글 0

🔔 답글 알림 (로그인 필요)
로그인댓글을 남기려면 로그인해 주세요.

아직 댓글이 없어요. 첫 댓글을 남겨보세요.