이건 후퇴다, 커뮤니티의 격렬한 반발

862025년 11월 09일3

JSConf에서의 차가운 반응은 시작에 불과했다. 진짜 폭풍은 온라인 커뮤니티에서 몰아쳤다. 컨퍼런스가 끝난 다음 날 아침, 리액트 팀 사무실의 분위기는 그 어느 때보다 무겁게 가라앉아 있었다.

맷의 모니터에는, 당시 실리콘밸리 엔지니어들의 여론 광장이었던 ‘해커 뉴스(Hacker News)’의 메인 페이지가 띄워져 있었다. 그리고 그 최상단에, 그들을 겨냥한 듯한 제목의 글이 올라와 있었다.

“리액트: 페이스북의 새 JS 라이브러리, 자바스크립트에 HTML을 넣다”

수백 개의 댓글이 달린 스레드는 그야말로 전쟁터였다. 팀원들은 스크롤을 내리며, 익명의 개발자들이 쏟아내는 날 선 비판들을 착잡한 심정으로 읽어 내려갔다.

user_1123: “이건 명백한 후퇴다. 우리는 지난 10년간 웹 표준을 지키며 마크업과 스크립트를 분리하기 위해 노력해왔다. 페이스북은 대체 무슨 생각으로 이런 결과물을 내놓은 거지?”

ng_fan: “앵귤러JS가 ng-repeat 같은 아름다운 디렉티브로 이 문제를 얼마나 우아하게 풀었는지 잊었나? HTML은 HTML답게, JS는 JS답게 둬야 한다. JSX는 그냥 끔찍한 아이디어일 뿐.”

dom_master: “버추얼 DOM? 흥미로운 장난감이네. 하지만 실제 성능은 어떨까? 간단한 데모 말고, 수천 개의 노드를 가진 실제 앱에서도 빠를 거라고? 나는 내 손으로 직접 DOM을 최적화하는 편을 택하겠다. 기계가 나보다 똑똑할 리 없지.”

댓글들은 대부분 이런 식이었다. ‘후퇴’, ‘끔찍한 아이디어’, ‘오염’, ‘장난감’. 그들의 창조물은 조롱과 비난의 대상이 되어 있었다. 특히 JSX는 집중포화를 맞았다. 그것은 기술적인 논쟁을 넘어, 웹 개발의 근본적인 철학에 대한 도전으로 받아들여졌고, 기존 질서의 수호자들은 이를 용납할 수 없다는 듯 격렬하게 반발했다.

“봤죠? 다들 이렇게 생각한다고요.” 맷이 거의 울상이 되어 말했다. “우리는 지금 웹 커뮤니티 전체의 적이 된 기분이에요.”

옆에 있던 크리스도 답답한 듯 머리를 감싸 쥐었다. “그들은 버추얼 DOM이나 단방향 데이터 흐름의 가치는 보려고 하지도 않아요. 오직 JSX의 겉모습만 보고 비난하고 있습니다. 핵심을 놓치고 있는 거예요.”

리액트의 혁신적인 개념들은, JSX라는 거대한 장벽에 가로막혀 빛을 보지 못하고 있었다. 팀의 사기는 바닥으로 떨어졌다. 지난 2년간의 노력이 한순간에 부정당하는 듯한 무력감이 사무실 전체를 덮쳤다.

그때, 회의실 한쪽에서 묵묵히 댓글들을 읽고 있던 조던 워크가 조용히 입을 열었다. 그의 목소리는 놀랍도록 차분했다.

“사람들이 혼동하고 있는 겁니다.”

팀원들의 시선이 그에게로 향했다.

“그들은 ‘기술의 분리’와 ‘관심사의 분리’를 같은 것이라고 착각하고 있어요.”

조던은 자리에서 일어나 화이트보드에 <LikeButton>이라고 적었다.

“‘좋아요 버튼’이라는 하나의 ‘관심사’를 생각해 봅시다. 이 버튼의 모양(HTML)과, 클릭했을 때의 동작(JS), 그리고 눌렸을 때의 스타일(CSS)은 본질적으로 서로 아주 밀접하게 연결된 하나의 덩어리입니다. 이것들을 억지로 다른 파일에 쪼개놓는 것이 과연 진정한 의미의 ‘분리’일까요? 저희는 아니라고 생각했습니다. 우리는 기술을 분리하는 대신, 이 ‘좋아요 버튼’이라는 하나의 관심사를 완벽하게 캡슐화된 컴포넌트 안에 함께 두는 길을 택한 겁니다.”

그의 말은 흔들림이 없었다. 그는 세상의 비난에 맞서, 자신들의 철학을 다시 한번 분명히 했다.

하지만 그의 논리가 온라인의 성난 군중에게까지 닿을 리는 만무했다. 그들의 싸움은 이제 코드와의 싸움이 아니었다. 세상의 뿌리 깊은 고정관념과의 싸움이었다. 그리고 그 싸움의 첫 번째 라운드에서, 리액트는 처참하게 패배하고 있었다.