[역자 주] 이 글은 2014년 10월 29일에 나왔다. jQuery 공식 블로그에서 3.0을 어떻게 만들 것인지를 밝힌 글이다. 올해 1월 14일에 3.0 베타가 출시됐고, 곧 정식 버전이 나올 테니, 3.0이 어떤 생각으로 만들어졌는지 번역해 두면 도움이 될 것 같다. 나중에 베타에서의 변화도 번역하려고 한다.

practice는 그냥 프랙티스로 번역했다. 실천, 관행 등의 뜻이 있고, ‘실천 관행’이라고 번역할까 하는 생각도 했지만, 영어 단어의 뉘앙스를 충분히 살리지 못하는 듯하다. 이게 정식 출판물이라면 고민을 좀더 하겠지만, 개발자가 읽고 빠르게 뜻을 이해하는 것이 중요한 번역이므로 그냥 프랙티스라고 번역했다. best practice는 최고의 프랙티스라고 번역할 수도 있지만 어색하게 느껴졌다. 베스트 프랙티스라는 말은 많이 사용하는 말이므로 그냥 베스트 프랙티스라고 번역했다.


jQuery가 출시된지 거의 8년이 됐다는 것은 믿기 힘든 일이다. 웹 개발은 지난 몇 년간 아주 많이 변해 왔다. 그리고 jQuery는 그와 함께 변해 왔다. 그 시간 동안 우리 팀은 과거 코드와의 호환성 유지와 현재 최고의 웹 개발 프랙티스를 지원하는 것 사이에서 줄타기를 하기 위해 애썼다.

베스트 프랙티스중 하나는 유의적 버전 붙이기(semantic versioning), 짧게 줄여 심버(semver)다. 실질적으로, 심버는 개발자(와 빌드 도구)에게 새 버전의 소프트웨어로 옮길 때 생기는 위험에 해법을 제시한다. 버전 번호는 MAJOR.MINOR.PATCH 형태1고, 각 부분은 정수로 표시한다.2 심버에 따르면, MAJOR 번호가 변경되는 것은 API의 하위 호환성을 깨는 변화가 있다는 것을 가리키기 때문에 개발자는 주의할 필요가 있다.

버전 번호를 붙이는 이 개념은 jQuery에선 브라우저 호환성이 API 호환성 만큼이나 중요하다는 점에서 좀더 미묘한 뉘앙스를 띤다. jQuery를 좀더 가볍게 만들기 위해서 우리 팀은 2013년부터 두 종류의 버전을 내놓기 시작했다. 하나는 1.x대를 유지하는 것이다. 현재 1.11.1까지 나왔고, 최대한 많은 브라우저와의 호환성을 유지하는 버전이다. 다른 하나는 2.0.0으로 시작해 현재 2.1.1이 된 버전인데, 코드의 능률을 위해 IE8 이하에 대한 지원을 포기한 버전이다. 1.x와 2.x 버전은 동일한 public API를 가진다. 안쪽 구현이 어떻게 됐는지 상관없이 말이다.

다음 출시되는 버전은 다른 명명법을 사용할 것이다. 출시 버전은 이전처럼 두 가지다. 현재 1.11.1 버전을 계승하는 것은 jQuery Compat 3.0이 될 것이다.3 jQuery 2.1.1을 계승하는 것은 jQuery 3.0이 될 것이다. npm과 Bower에도 두 가지 다른 배포판이 있을 것이다. 물론 버전 숫자가 같은 것은 같은 API를 가진다는 것을 뜻할 것이다.

우리는 3.0 출시와 함께 브라우저 지원 정책도 재정비할 것이다. 메인 jQuery 배포판은 출시 시점에 널리 사용되는 싱싱한(evergreen) 브라우저(해당 브라우저의 최신 버전과 직전 버전)를 지원함으로써 작고 엄격하게 유지할 것이다. 우리는 아마 시장 점유율에 따라 이 배포판에서 몇몇 브라우저를 추가로 지원할 것이다. jQuery Compat 배포판은 더 광범위한 브라우저를 지원한다. 하지만 더 큰 파일 크기와 잠재적으로 더 낮은 성능이라는 비용을 지불해야 할 것이다.

버전 숫자에 큰 변화가 있는 것이지만, 대부분의 최신 jQuery 코드에 판올림 문제(migration issue)는 별로 없을 것으로 예상한다. 우리는 이 판올림에 관해 아주 훌륭한 심버 시민이다. 더이상 사용하지 않을(deprecated) 메서드들을 제거하는 것과 같은 변화는 새 버전의 jQuery Migrate plugin이 감지할 것이다. 이 플러그인은 제거한 메서드들을 쉽게 찾고 고칠 수 있게 해 준다. 이후에 올릴 블로그 포스트들에서 변화들을 자세히 설명하도록 하겠다.

자, 아래는 jQuery API 버전 3.0에 관한 따분한 설명이다.

  • IE8, 오페라 12, 사파리 5나 그 비슷한 것들 같은 광범위한 브라우저를 지원해야 한다면, jQuery-Compat 3.0.0 배포판을 사용하라. 이 버전은 모든 웹사이트 방문자에게 최고의 호환성을 제공하므로 대부분의 웹 사이트에 이 버전을 추천한다.

  • 싱싱한 첨단 브라우저들만 상대하면 되는 웹사이트거나, 어떤 브라우저 엔진이 사용되는지 알고 있는, 앱의 웹뷰에 탑재하는 HTML(예컨대 폰갭이나 코르도바)이라면 jQuery 3.0.0 배포판을 사용하라.

  • 우리가 따로 알리기 전까지는 동일한 MAJOR와 MINOR 버전 숫자를 가진 두 배포판은 동일한 퍼블릭 API들을 가질 것이다. 이것은 개발자들이 두 배포판을 손쉽게 서로 교체할 수 있게 해 주고, 써드 파티 jQuery 플러그인들과 최대한의 호환성을 갖게 해 준다.

새 버전을 출시하면, 우리는 npm과 bower에 두 배포판을 모두 사용 가능하게 만들 것이다. 두 배포판은 jQuery CDN에서 단일 파일로 사용할 수도 있을 것이다. jQuery CDN을 이용하는 것은 jquery-compat-3.0.0.js든 jquery-3.0.0.js든 필요에 따라 가장 손쉽게 사용할 수 있는 방법이다. 우리는 Google CDN을 이용하는 사람들과도 이야기를 나눠 왔고, 그 경우도 두 배포판을 모두 지원받을 수 있을 것이다.

버전 3.0을 진행하면서 코드 변화, 지원 브라우저 등의 세부 사항에 대한 모든 것을 올리도록 하겠다. 최신을 유지하라!(Stay tuned!)

  1. 역자 주 - semver의 한국어 번역본을 보면 주.부.수 라고 번역해 놨는데, 별로다. 수는 아마도 수리한다는 단어에서 첫 글자를 따온 듯한데 맘에 들진 않는다. 따라서 여기서는 그냥 영어를 사용하겠다. 

  2. 역자 주 - integer라서 정수라고 번역했는데 정확히 말하면 음수는 사용하지 않는다. 

  3. 역자 주 - MS가 구버전 IE 지원을 중단하면서 jQuery Compat 계획은 취소됐다.