Copyright © Origin Corp. All Rights Reserved.
v1.0.10
로딩 중입니다
행복에는 덕이면 충분하다안티스테네스
2013년 5월, Pete Hunt가 무대에 올라 자바스크립트 코드 안에 HTML 태그를 직접 쓰는 모습을 보여주자, 청중이 야유했어요.
트위터에는 비난 글이 쏟아졌고, 개발자 커뮤니티는 들끓었죠.
그런데 그 라이브러리가 결국 웹 프론트엔드의 표준이 됐어요.
당시 웹 개발자들에게는 10년 넘게 지켜온 불문율이 있었어요.
HTML은 HTML 파일에, 자바스크립트는 JS 파일에 따로 써야 한다는 관심사 분리 원칙이에요.
요리 학교에서 "고기와 채소는 반드시 다른 도마에 썰어야 한다"는 철칙 같은 거예요.
Pete Hunt가 무대에서 보여준 건 정반대였어요.
자바스크립트 함수 안에 <div>와 <span>이 버젓이 등장했죠.
그게 JSX였어요. JS와 HTML을 한 파일에 섞어 쓰는 문법이에요.
JSConf는 자바스크립트 개발자들이 가장 큰 목소리를 내는 컨퍼런스예요.
그 무대에서 철칙을 어겼으니 셰프들이 야유할 만했죠.
"이건 10년 된 원칙을 무시하는 거잖아."
리액트는 DOM을 두 벌 들고 다녀요.
비효율의 극치처럼 보였던 이 발상이 가장 빠른 UI 라이브러리를 만들어냈어요.
DOM은 브라우저가 화면을 그리는 설계도예요.
버튼 하나를 클릭할 때마다 브라우저는 이 설계도를 뒤져서 바뀔 부분을 찾고 다시 그려요.
설계도가 복잡해질수록 이 과정이 느려지고, 화면이 뚝뚝 끊기죠.
리액트가 내놓은 해법이 버추얼 DOM(Virtual DOM)이에요.
자바스크립트 메모리 안에 실제 DOM과 똑같은 사본을 한 벌 더 만들어두는 거예요.
책상 위 서류를 정리할 때 옆에 사본을 한 부 더 만들어두는 것처럼요.
"사본을 두 벌 들고 다닌다고? 그게 어떻게 더 빠르냐?"
발표 직후 이런 반응이 쏟아졌어요.
하지만 결과는 달랐어요. 사본끼리 비교해서 바뀐 부분만 찾아내면, 설계도 전체를 처음부터 뒤질 필요가 없거든요.
이 발상이 결과적으로 가장 빠르고 직관적인 방식이라는 게 밝혀지면서, Vue·Svelte 같은 후발 주자들도 이 아이디어를 따라가거나 의식적으로 거부하면서 자신의 설계를 만들어갔어요.
비난받으면서도, 업계 전체의 기준이 됐죠.
2017년 9월 14일, 워드프레스가 리액트를 버리겠다고 선언했어요.
9일 뒤, 페이스북은 라이선스를 통째로 바꿨어요.
워드프레스는 전 세계 웹사이트의 약 30%를 돌리는 플랫폼이에요.
오늘날 인터넷에 존재하는 웹사이트 세 개 중 하나가 워드프레스 위에서 돌아가요.
그 창립자 Matt Mullenweg가 공개적으로 선전포고를 날린 거예요.
문제는 페이스북이 리액트에 걸어둔 BSD+Patents 라이선스였어요.
조항의 핵심은 이거예요. "리액트를 쓰다가 우리 특허 관련 분쟁을 일으키면, 당신의 리액트 사용권을 회수할 수 있어요."
거대 식재료 회사가 약관에 "맘에 안 들면 거래를 끊을 권리가 우리에게 있다"고 적어둔 셈이죠.
Matt Mullenweg는 이 조항이 위험하다고 봤어요.
그래서 워드프레스 공식 블로그에 직접 썼어요. "우리는 리액트 대신 다른 라이브러리로 갈아탈 계획이에요."
동네에서 가장 큰 식당이 "그러면 우리 안 산다" 한마디 한 거예요.
페이스북은 9일을 버텼어요.
그리고 9월 23일, 리액트의 라이선스를 MIT로 바꾸겠다고 발표했어요.
MIT 라이선스는 아무 조건 없이 쓸 수 있는, 오픈소스에서 가장 자유로운 라이선스예요.
이건 단순한 라이선스 변경이 아니에요.
페이스북이 "내 라이브러리가 웹의 표준이 되려면 워드프레스를 잃을 수 없다"고 인정한 순간이에요.
단일 사용자가 거대 플랫폼 회사의 약관을 9일 만에 바꾼 사례는 오픈소스 역사에서 찾아보기 드물어요.
2017년에 리액트는 한 번 처음부터 다시 쓰였어요.
사용자들은 그 사실을 알 필요조차 없었어요.
같은 해 9월에 출시된 리액트 16의 내부 엔진은 완전히 새 코드였어요.
Fiber라는 이름의 이 재작성 프로젝트는 Andrew Clark가 주도했고, 약 2년이 걸렸어요.
핵심은 이거예요. 개발자가 쓰는 함수 이름과 사용법은 거의 그대로 뒀어요.
매일 타고 다니는 차의 엔진을 정비사가 2년에 걸쳐 통째로 갈아 끼웠는데, 운전자는 핸들 모양도 그대로고 시동 거는 법도 똑같아서 바뀐 줄 모르고 운전하는 격이에요.
수백만 명의 개발자가 매일 쓰는 라이브러리의 심장을 교체하면서, 사용자들은 한 줄도 코드를 바꿀 필요가 없었어요.
Fiber 이후에야 비로소 가능해진 것들이 있어요.
동시에 여러 작업을 처리하는 동시성 렌더링, 데이터를 기다리면서 화면을 보여주는 Suspense, 서버에서 컴포넌트를 렌더링하는 서버 컴포넌트.
오늘날 리액트의 새로운 기능들은 모두 이 2년짜리 재작성 위에 얹힌 거예요.
야유를 받으며 시작해서, 라이선스 전쟁을 거쳐, 심장 이식까지.
리액트가 표준이 된 건 처음부터 옳아서가 아니었어요.
그렇다면 지금 야유받고 있는 라이브러리 중에, 다음 표준이 숨어 있지 않을까요?
TTS 음성이 없어요.
아래 버튼으로 나레이션을 생성할 수 있습니다.
1
개