io.js 주간 뉴스 2015년 3월 6일

Buffer.indexOf(), Tessel 2 그리고 다른 것들.

io.js 1.5.0 릴리스

3월 16일 금요일에 @rvagg가 io.js v1.5.0을 배포하였습니다. 모든 변경 기록은 GitHub에서 확인할 수 있습니다.

주요 변경 사항

  • buffer: 새로운 Buffer#indexOf() 메서드가 Array#indexOf()를 대체하였습니다. 인수로 String, Buffer, 또는 Number를 받을 수 있습니다. String은 UTF8 문자열로 처리됩니다. (Trevor Norris) #561
  • fs: 'fs' 메서드 내의 options 오브젝트 속성은 더는 hasOwnProperty() 검사를 수행하지 않으며, 따라서 options 오브젝트가 알맞은 prototype 속성도 가질 수 있습니다. (Jonathan Ong) #635
  • tls: TLS 메모리 누수로 생각되는 현상이 PayPal에 의해서 보고되었습니다. 최근의 stream_wrap 상의 변경사항들 중 일부가 그 이유인 것으로 보입니다. 첫 버그 수정은 #1078에서 이루어졌고, 전체 과정은 #1075에서 볼 수 있습니다. (Fedor Indutny)
  • npm: npm을 2.7.0으로 업그레이드했습니다. npm CHANGELOG.md에서 왜 이것이 유의적 버전의 주 버전업이 될 수 있었음에도 부 버전업으로 처리되었는지에 대한 이유와 다른 세부사항을 확인할 수 있습니다.
  • TC: Colin Ihrig(@cjihrig)가 회의보다는 코딩에 집중 하고자 TC에서 사임하였습니다.

알려진 이슈

  • TLS와 관련된 메모리 누수가 있을 수 있습니다. 자세한 사항은 #1075를 참조하세요.
  • 아직 윈도우에서 통과하지 못하는 사소한 테스트들이 있습니다. 저희는 이들을 우선적으로 처리하는 중입니다. #1005를 확인해 보세요.
  • 대화형 셸에서 서러게이트 페어(Surrogate pair)가 터미널을 정지시킬 수 있습니다. #690
  • process.send()는 문서에서 설명된 바와는 다르게 동기적이지 않습니다. 이 회귀는 1.0.2에서 발생했습니다. #760에서 확인 가능하며 #774에서 수정하고 있습니다.

커뮤니티 업데이트

  • io.js와 최신의 node.js는 FREAK Attack에 의해 영향을 받지 않으니 모두 안심해도 좋습니다. 물론 io.js나 node.js의 최신 버전을 사용하고 계시겠지요?

  • Walmart가 io.js Jenkins CI 시스템을 위한 서버를 만드는 일을 후원하고 있습니다. @iojs/build 팀이 (여러분이 nodejs.org에서 내려받을 수 있는 것과 같은) io.js SunOS 바이너리를 만들고 있습니다.

  • 아래의 회사들도 io.js 빌드를 위한 하드웨어와 그와 관련된 기술/지원/엔지니어링을 제공해주셨습니다. 감사드립니다.

    • Digital Ocean (대부분 리눅스 관련)
    • Rackspace (대부분 윈도우 관련)
    • Voxer (OS X와 FreeBSD)
    • NodeSource (ARMv6 & ARMv7)
    • Linaro (ARMv8)
    • Walmart (SmartOS / 솔라리스)
  • io.js 커뮤니티는 관련 콘텐츠를 매우 열심히 국제화 하였습니다. 이제 iojs.org와 i18n 커뮤니티 사이트들에서 20개가 넘는 언어로 게시되고 있습니다. 덧붙이자면 더욱 나은 접근성을 위해서 i18n 링크들(iojs/website#258)이 웹사이트 바닥 글에 추가되었습니다. 빠진 언어가 있나요? 추가하도록 도와주세요!

  • 번역에 대해서 말하자면 io.js 로드맵 발표 자료가 영어 외의 다른 언어들도 표시하도록 업데이트되었습니다.

  • PayPal이 io.js와 node.js v0.12, node.js v0.10 상에서 Kappa를 비교하는 실험을 하고 있는 것으로 보입니다. 페이팔 팀은 TLS와 관련된 것으로 생각되는 메모리 누수를 찾아냈습니다. 첫 버그 수정은 #1078에서 이루어졌고, 전체 과정은 #1075에서 볼 수 있습니다.

  • NodeSource가 이제 우분투/데비안뿐만 아니라 RHEL/페도라 배포판을 위한 io.js 리눅스 바이너리를 제공합니다.

  • io.js 도커 빌드는 1월과 2월에 추가된 13개의 공식 도커 저장소 중 하나입니다.

  • NodeBots와 IoT 관련자는 Tessel2io.js를 네이티브로 실행한다는 소식에 매우 기쁠 것입니다.

  • @maxbeatty가 io.js 상에서 실행되는 jsperf.com의 새 버전을 개발하고 있으며, 이것은 완전히 오픈 소스 기반으로 진행됩니다. 프로젝트에 대한 기여는 언제든지 환영합니다!

  • @eranhammerThe Node Version Dilemma라는 제목의 글을 썼습니다. 이 글에서는 다양한 node.js / io.js 버전을 다루며 어떤 것을 언제 써야 할지에 대한 방안을 제시합니다.

io.js 지원 추가

  • **scrypt**가 이제 io.js를 지원합니다. 자세한 내용은 GitHub issue에서 확인할 수 있습니다.
  • **proxyquire**가 v1.3.2부터 iojs에 대한 지원을 포함합니다.

화해 제안

node.js와 io.js 프로젝트를 어떤 식으로 통합 할 것인지 많은 질문을 받았습니다. 두 프로젝트에 참여하는 사람들은 작업이 쓸모없어지는 것은 아닌지, 어떻게 각 프로젝트의 좋은 점을 반영할지 등을 알고 싶어합니다.

이 문서는 초안이며 커뮤니티의 의견에 따라 수시로 업데이트되고 편집됩니다. 이 문서는 Joyent과 Node.js 재단에 대한 최종 의사는 아니지만 통합을 위한 제안을 여기에서 만들어 io.js 커뮤니티가 협력 할 부분을 명확히 하는 것에 목적이 있습니다.

이 문서에서는 통합 이전의 각 프로젝트는 io.js와 node.js라 하고 통합 된 프로젝트는 Node라 하겠습니다.

미래의 프로젝트가 io.js에서 시작되었다고 생각하는 경향이 있는데, 이 문서에서는 재단하에 놓인 새로운 프로젝트를 node.js나 io.js 중 한쪽만의 연장이 아니라 두 프로젝트의 통합을 통한 새로운 조직체로 취급합니다. 통합의 최종 목표는 단순한 합병이 아닌 더 그림이 되어야 합니다.

Technical Governance

Node.js 재단은 Technical Governance Structure(재단 운영 조직에서 분리된 독립 조직)를 채용합니다. 이 재단은 다음 내용을 보장하는 아주 간단한 구조입니다.

  • 재단과 재단의 회의의 영향을 받지 않고 자율적으로 의사 결정을 할 수 있다.
  • 운영 소유권 및 투표 시스템을 가져야 한다.

재단의 규정은 변경이 매우 어렵고 TC는 조직 구조를 점진적으로 개선하고 싶기 때문에 현재 운영 구조를 그대로 가져오는 것은 큰 실수가 되리라 생각합니다.

규정 구조에 대한 합의의 초안으로 다음 문서를 io.js에서 가져올 것입니다.

덧붙여 CONTRIBUTING.md에 있는 "collaborator" 항목의 기존 io.js 기여자들 역시 이관됩니다.

문서가 이전하면서 다음과 같은 변경이 이루어집니다.

  • TC 멤버 추가:
    • TJ Fontaine
    • Alexis Campailla
    • Julien Gilli
  • 기여자 추가:
    • James M Snell
    • Stephen Loomis
    • Michael Dawson

장기 지원

장기 지원에 관한 고차원적인 아이디어는 io.js 로드맵에서 언급하고 있지만, 구체적이진 않습니다. 이는 아직 io.js가 이전 버전의 호환성을 깨뜨리는 릴리스를 하지 않았기 때문입니다. node.js 프로젝트는 비공식적인 장기 지원 정책을 가지고 있지만 공식 문서에 명시되지는 않습니다. 하지만 이전 버전을 위한 패치 릴리스를 만들고 있기 때문에 어떤 정책이 존재한다고 생각할 수 있습니다.

LTS WG (Long Term Support Working Group)

다음 문장은 장기 지원 워킹 그룹(이하 LTS WG)을 위한 선언의 초안이며 WORKING_GROUPS.md로 추가될 예정입니다.

LTS WG는 Node 이전 버전의 유지 보수 및 릴리스에 책임을 집니다.

Node는 커뮤니티가 유지 보수를 하려 하는 한 이전 버전의 패치 릴리스를 만듭니다. LTS WG는 특정 버전을 지원하기 위해 기여할 필요가 없을 때까지 책임이 있습니다.

LTS WG의 책임 범위는 다음과 같습니다.

  • 버그를 수정해 하위 버전으로 백 포트, 안정성 향상, 다른 관련 변경을 이전 릴리스 버전에 적용(현재 버전과 Canary 제외).
  • 관리 및 변경 백 포트 자동화 도구의 작성, 유지 보수
  • 안정된 패치 릴리스를 보장하기 위한 정책과 문서화의 시행

초기 멤버에 추가

  • Michael Dawson

브랜치 관리 등 구체적인 것은 이 문서에는 포함하지 않았지만 워킹 그룹이 책임을 집니다.

버전 통합

io.js와 node.js에 겹치는 버전 (v0.12.0 및 v1.1.0)는 없기 때문에, 두 프로젝트의 모든 버전을 Node 버전으로 할 수 있습니다. 이렇게 하지 않으면, 이 버전에 의존하는 커뮤니티의 상당 부분에 불필요한 혼란을 줄 것 입니다.

이전 릴리스

다음 버전은 "이전 버전"으로 간주하고 LTS WG에서 관리합니다.

  • 0.8.x
  • 0.10.x
  • 0.12.x

1.0 이전 버전은 호환되지 않았지만, 1.0 이후 릴리스는 유의적 버전과 호환합니다. LTS WG의 재량 하에 0.12.x와 0.10.x 패치 릴리스에 API를 추가할 수 있습니다. 그러나 하위 호환성이 없는 변경은 node.js, io.js 양쪽에 존재하는 정책을 준수하여 이 릴리스에서는 할 수 없는 것으로 합니다.

현재 릴리스

  • 1.x

현재 node.js 0.12.x과 io.js 1.x 두 개의 CURRENT 개발 라인이 있습니다. 사용자가 존재하는 한 두 개발 라인 모두 계속할 필요가 있습니다. 문제는 "LTS(장기 지원)에 어느 라인을 넣어야 하는가?"입니다.

근 몇 개월동안 io.js는 현재 stable 개발 라인과 종속 라이브러리를 모두 동기화하는 커다란 성과를 이루었습니다. 더 빠른 릴리스 주기와 함께 많은 npm 모듈 저자들을 코어 내부에 흡수했고, 생태계가 코어에 맞추어 현재의 안정 개발과 함께하기 시작했습니다. 이것은 각 프로젝트와 더 거대한 공동체 간 협력의 새로운 시대를 열었고 Node도 이것을 계승할 것입니다.

하지만 이 말이 0.12.x는 "죽는다"는 것은 아닙니다. 0.12.x, 0.10.x는 지금도 많은 사용자가 사용하고 있으며, LTS WG는 이들이 안정적으로 지원되는 플랫폼을 계속 사용할 수 있도록 할 것입니다.

버전 번호가 없는 릴리스

CANARY ("다음" V8과 주 버전의 모든 변경)

현재 안정 버전의 개발과 함께 앞으로를 위한 버전의 개발도 이루어져야 합니다. 이 개발 라인은 브랜치와 버전 번호없이 테스트 용 나이틀리 빌드가 될 것입니다. 이는 Node의 변경을 테스트할 곳이 될 것이며, V8의 CANARY 버전 뿐만 아니라 주 버전을 올릴 때에도 필요할 것입니다.

현재 안정 버전에서 그랬던 것처럼 Node의 "다음" 개발 라인도 종속 라이브러리와 동기화해야 합니다. 이렇게 함으로써, Node 안정 버전이 나오기 훨씬 전부터 CANARY을 사용해 의존 라이브러리 프로젝트와 그 사용자는 쉽게 성능 회귀나 의존성 내의 하위호환성을 깨뜨릴 수 있는 변경이 있는지 테스트 할 수 있게 됩니다.

웹 사이트

nodejs.org 웹 사이트는 웹 사이트 WG에 이관되어 워킹 그룹이 책임지게 될 것입니다. 이 사이트는 io.js의 여러 언어 커뮤니티에서 웹 사이트를 현지화 할 수 있도록 iojs.org(gulp에서 구축 된 사이트)와 비슷하게 재구성됩니다.

소셜 미디어

소셜 미디어 계정(Twitter, Facebook 등)은 Evangelism WG에 이관합니다.

Evangelism WG

이 io.js WG는 Node로 이관할 것입니다.(WG의 내부 투표가 끝나지 않아 보류 중) Node 프로젝트를 위해 계속 주간 업데이트를 만들고 소셜 미디어를 통한 전파 등의 일을 하게 됩니다.

i18n

모든 io.js 현지화 커뮤니티 WG(마지막으로 집계했을 때에는 32개 팀)는 Node 프로젝트로 이관 여부를 투표할 것입니다. 각 언어에서 서로 협조를 하며 계속 프로젝트 리소스를 지역화하게 될 것입니다.

io.js 한국 커뮤니티의 투표는 nodejs/nodejs-ko#38에서 진행 중입니다. 댓글로 의견을 달아주세요.

로드맵 WG

이 io.js WG는 Node로 이관할 것입니다.(WG의 내부 투표가 끝나지 않아 보류 중) 사용자의 피드백을 계속 모으고 TC가 검토할 로드맵 자료의 초안을 작성합니다.

Streams WG

이 io.js WG는 Node로 이관할 것입니다.(WG의 내부 투표가 끝나지 않아 보류 중) readable-stream과 함께 Node에서 Streams를 만들고 개선해 나아갈 것 입니다.

Tracing WG

이 io.js WG는 Node로 이관할 것입니다.(WG의 내부 투표가 끝나지 않아 보류 중) Node 애플리케이션의 투명성을 개선해 나아갈 것입니다.

빌드 WG

이 io.js WG는 Node로 이관할 것입니다.(WG의 내부 투표가 끝나지 않아 보류 중) Node의 빌드 생성과 빌드를 위한 인프라 개선, 유지 보수를 계속해 나아갈 것입니다.

io.js 주간 뉴스 2015년 2월 27일

io.js 1.4.1 릴리스

주의: 1.4.0 버전은 태깅하고 빌드는 했지만 릴리스하지는 않았다. 도중 libuv 버그를 발견해서 릴리스를 취소했다. 혼동을 피하고자 바로 1.4.1 버전으로 건너뛰었다.

주요 변경 사항

  • process / promises: 이제 에러 핸들러가 이벤트 루프에서 차례가 돌아왔을 때 Promise가 거부되었지만 Promise에 연결된 에러 핸들러가 없을 때 process에서 'unhandledRejection' 이벤트가 발생한다. #758 (Petka Antonov)
  • streams: 이제 tls.connect()를 사용할 때 기반 소켓으로 일반 스트림을 사용할 수 있다. #926 (Fedor Indutny)
  • http: 클라이언트가 http.ClientRequest를 중지했을 때 새로운 'abort' 이벤트가 발생한다. #945 (Evan Lucas)
  • V8: 버전을 4.1.0.21로 업그레이드했다. 여기엔 금지된(embargoed) 수정이 포함된다. 세부사항은 금지가 해제될 때 사용할 수 있다. 호환성이 깨진 ABI 변경사항은 이번 업드레이드에는 포함되지 않았지만 io.js에 V8 4.2를 합칠 때 포함할 수도 있다. 논의는 #952를 참조.
  • npm: 2.6.0으로 업그레이드했다. 새로운 저장소와 npm@3를 준비하는 기능이 포함된다. 자세한 것은 npm CHANGELOG.md를 참조. 요약:
    • #5068 새로운 logout 명령어가 추가되어서 bearer-based와 basic-based에서 인증되는 클라이언트 모두에서 편리해졌다.
    • #6565 peerDependency 동작이 변경되었다는 경고가 나오고 문서에도 추가된다.
    • #7171 npm의 다음 major 버전(곧 릴리스!)에 package.jsonengineStrict가 삭제될 예정이다.
  • libuv: 1.4.2로 업그레이드했다. 자세한 수정 내용은 libuv ChangeLog를 확인하라.

ARM사, ARMv8부터 io.js 지원 의향

ARM에서 빌드 워킹그룹의 리더인 Rod Vagg에게 io.js 프로젝트를 지원 하고 싶다는 연락이 왔다. ARM과 ARM의 하드웨어 파트너는 ARMv8를 발전적인 서버 플랫폼으로 만들고 싶어 하고, 실행 속도가 빠른 서버 사이드 JavaScript는 새로운 ARM에서 실행하기 최적이다.

ARMv8가 이미 모바일 디바이스 제조에 도입 되었으므로 새로운 버전의 V8도 이미 지원하고 있다. V8은 이미 Android에서 중추적인 역할을 하고 있으므로, io.js는 이 지원에 따라가기만 하면 되고 V8 팀과의 새로운 관계에도 도움이 된다.

io.js 프로젝트를 시작할 때부터, Rod는 IoT, 취미용, 서버로서의 ARM의 역할에 기대를 하고 있었다. 이미 Raspberry Pi 같은 디바이스에 각 릴리스의 ARMv6 빌드를 가지고 있고 더 많은 유명한 디바이스에 (io.js를 지원하기로 한 Online Labs의 ARM 기반 클라우드 플랫폼을 포함) ARMv7 빌드를 가지고 있다. ARMv8은 이것의 논리적 확장이지만, 서버 사이드 애플리케이션에 놀라운 잠재력이 있고, 특히 새로운 64 비트 지원이 주어진다.

빌드 팀은 io.js CI 플랫폼과 통합용의 Linaro ARMv8 Server Cluster에의 접근 권한을 얻을 예정이며, 이로 인해 매 릴리스에 ARMv8 바이너리의 배포가 가능해진다.

커뮤니티 업데이트

  • 화해 제안: io.js 프로젝트는 Node.js 재단과의 화해를 계획하는 중이다. 초기 단계이므로 커뮤니티로부터의 의견은 매우 중요하다. 의견을 남겨달라.
  • 새 내부 C++ 스트림 API: 새로운 C++ 스트림 API가 이번 주에 io.js에 추가되어, TLS 스트림을 다른 TLS 스트림으로 감싸는 것이 가능해졌다.
  • io.js 로드맵: 로드맵은 io.js의 미래를 위한 계획이다. 여기에는 안정성 규정과 즉시 해결해야할 우선순위 목록이 있다.
  • 로드맵 슬라이드 완성, 번역 준비 완료: io.js의 로드맵의 소개 슬라이드가 완성되었고 번역 준비가 완료 되었다.. 지역 모임에서 발표할 수 있을 것 같으면, 댓글을 남겨달라. 우리가 준비를 도와주겠다!
  • Microsoft Azure 웹사이트를 위한 io.js 해설: Microsoft는 Azure 플랫폼을 위해 어떻게 Azure 웹사이트에서 io.js를 사용하는지에 대한 튜토리얼을 출간했다.
  • Floobits가 io.js로 이동: 페어 프로그래밍 소프트웨어 Floobits가 플랫폼을 io.js로 이전했다. 이 결정은 Node의 느린 릴리스 주기, --harmony 플래그 없이 사용할 수 있는 더 많은 ES6 기능, 0.10.0에서 0.12.0에의 변경이 크게 느껴지지 않았기 때문이다.
  • Anand Mani Sankar의 Node.js vs io.js: Why the fork?!?: Anand가 최대한 객관적인 좋은 io.js의 최근 역사와 달성 목표에 관한 글을 썼다. 최근의 흐름에 따라오지 못한 사람들을 위해 추천한다.
  • iojs-jp - 새 io.js 일본어 블로그: iojs-jp 커뮤니티는 일어로 자료를 배포하기 위한 지역화된 io.js 관련 블로그를 만들었다. 관심이 있다면 살펴보라.
  • iojs-cn - 새 io.js 중국어 블로그: iojs-jp 커뮤니티와 비슷하게, iojs-cn 커뮤니티는 io.js 관련 글을 중국어로 게시하기 위한 지역화 블로그를 만들었다. iojs-cn이나 io.js의 중국어 뉴스에 관심이 있다면 방문해 보라!
  • 로드맵 슬라이드 리뷰 - 릴리스 전에 로드맵 슬라이드가 프로젝트가 지지하는 방향과 맞는지 확인하기 위한 리뷰다.

io.js 지원 추가

io.js 주간 뉴스 2015년 2월 20일

1.3.0 릴리스, MongoDB, 로드맵 등

1.3.0 릴리스

다음 변경 사항을 포함합니다:

  • url: url.resolve('/path/to/file', '.')는 이제 맨 끝에 붙은 슬래시와 함께 /path/to/를 리턴합니다. url.resolve('/', '.')/를 리턴합니다. #278 (Amir Saboury)
  • tls: tls와 https에 사용되는 기본 암호(cipher) 모음이 모든 최신 브라우저에서 Perfect Forward Secrecy를 달성할 수 있도록 변경되었습니다. 추가로, 안전하지 않은 RC4 암호는 제외되었습니다. RC4가 정말 필요하다면 당신의 암호 모음을 직접 지정하시기 바랍니다. #826 (Roman Reiss)

커뮤니티의 주목할 만한 이벤트

  • Node 거버넌스 — William Bert는 Joyent의 CEO인 Scott Hammond에게 Node 재단 TC의 기반이 될 io.js 오픈 거버넌스 모델에 대한 커뮤니티의 바람을 전하기 위해 http://nodegovernance.io/를 만들었습니다. 커뮤니티의 반응은 환상적이었습니다!
  • Node.js와 io.js 성능 향상 — Raygun.io에서 최근 Node.js와 io.js로 성능 테스트를 진행하였고, 양쪽 모두 매 릴리스마다 성능이 향상되고 있습니다! 원문 읽기.
  • LTTng 기초 — jgalar의 asciinema: io.js LTTng 기초
  • io.js 로드맵 슬라이드 — io.js의 현재 로드맵에 대한 슬라이드입니다.

io.js 지원 추가

io.js 워킹 그룹 회의

io.js 주간 뉴스 2015년 2월 13일

29개 언어 지역화, 1.2.0 릴리스 등

다음 프로젝트/서비스가 io.js를 지원합니다.

io.js 별 개수 10,000개 돌파

2월 13일을 기준으로 io.js가 GitHub에서 받은 별의 개수가 10,000개를 돌파했습니다. 자바스크립트 커뮤니티의 지원이 없었더라면 이루지 못했을 것입니다. 여러분 모두에게 감사드립니다!

io.js 1.2.0 릴리스

전 세계 커뮤니티에 문을 열다

Medium에 있는 원본 글을 참고하세요.

  • 참여 의사가 있는 공헌자들을 자기 지역 언어 지역화팀에 추가했습니다.
  • 지역화팀이 각자 트위터를 비롯한 여러 소셜 미디어에 계정을 등록했습니다.
  • 지역화팀이 자신들에게 맞는 협업 방법을 모색했으며 "번역자"보다는 "커뮤니티 오거나이저"에 가까워졌습니다.

지역화 통계

  • 첫 날 146명이 지역화를 돕기 위해 등록했습니다(현재는 160명 이상).
  • 첫 날 27개 언어 커뮤니티가 만들어졌습니다(현재는 29개).

언어 커뮤니티

io.js와 node.js

Medium에 있는 원본 글을 참고하세요.

  • Joyent의 CEO인 Scott Hammond가 io.js를 다시 node.js로 가져오고 싶다는 의사를 밝혔습니다.

겨우 몇 개월 만에 io.js는...

  • 활동적인 코어 팀 멤버가 23명으로 늘었습니다.
  • 워킹 그룹을 여러 개 만들었습니다.
  • 29개 언어 지역화 팀이 생겼습니다.
  • node.js 역사상 유례없이 많은 공헌자와 함께합니다.
  • 아주 뛰어난 커뮤니티의 지원 덕분에 좋은 페이스로 품질 좋은 소프트웨어를 릴리스 할 수 있게 되었습니다.

여기에 머물지 않고 더 나아가고 싶은 마음은 강렬하지만 지금까지 이룩한 진척이나 우리를 여기에 있게 한 원칙과 오픈 거버넌스를 희생할 수는 없습니다.

미래

  • node.js 재단과 대화를 계속 진행할 것입니다.
  • node.js 재단이 기술 거버넌스 모델을 가진다면 io.js의 GitHub에서 io.js 참여 여부에 대한 이슈를 보게 될 것입니다. 여기에 대해서는 우리가 이미 이룩한 거버넌스 규칙에 따라 공개 TC 회의에서 논의하고 표결에 부칠 것입니다.

커뮤니티에 달라지는 점은 없습니다.

여러분이 지금 당장 할 수 있는 것

io.js와 node.js 재단

현재의 중재 상황

일주일 전 Joyent의 CEO인 Scott Hammond가 비공개회의에 io.js TC (Technical Committee)를 초대해서 node.js 재단을 만들 것이고 io.js가 다시 node.js 프로젝트로 돌아오길 바란다고 했다.

불과 몇 달 만에 io.js는 활발한 핵심 팀멤버가 23명이나 되었고 다수의 워킹 그룹과 27 언어의 지역화 팀이 생기고 엄청난 커뮤니티의 지원에 힘입어 괜찮은 속도로 질 좋은 소프트웨어를 릴리즈할 수 있게 되었다. 이는 오픈 거버넌스 구조로 커뮤니티에 다시 활력을 주고 node.js 예전에 가졌던 컨트리뷰터보다 더 많은 컨트리뷰터를 모아서 이룬 것이다.

node.js와 갈라선 io.js의 미래에 대한 질문을 미뤄주는 것이 io.js를 더 좋게 만드는 유일한 방법이다. 이 모든 문제를 잊어버리고 싶지만, 우리가 이룬 진보나 io.js에서 얻은 기반과 오픈 거버넌스를 희생할 수는 없다.

Joyent와의 협의는 계속될 것이다. node.js 재단이 기술에 대한 거버넌스 모델을 가진다면 io.js의 Github에서 io.js가 합류해야 하는지에 대한 이슈를 만들 것이고 기존에 만들어 놓은 거버넌스 규칙에 따라 공개적인 TC 회의에서 논의하고 공개적으로 투표할 것이다.

커뮤니티가 달라지는 것은 전혀 없다. 계속해서 io.js에 풀 리퀘스트를 보내고 27 언어 지역화 팀에 참여하고 io.js의 워킹 그룹 (streams, website, evangelism, tracing, build, roadmap)에 공헌하고 애플리케이션에 io.js를 적용하길 바란다. 언젠가 io.js의 이름이 달라지더라도 계속해서 io.js를 릴리즈하고 개선해 나갈 것이다. ☺

겨우 하루 만에... io.js는 어떻게 146명이 참가하는 27개 언어 지역화라는 성과를 냈는가

커뮤니티에 참여를 요청한다면 그들은 기꺼이 도와줄 것입니다.

나의 첫 한국 방문에서 나는 그곳에 거대한 Node 커뮤니티가 있을 뿐만 아니라, 우리가 생각지도 못했던 그들의 지원 네트워크와 자료들을 가지고 있다는데 깜짝 놀랐다. 현재까지는, 이것이 바로 복수의 언어가 사용되는 큰 커뮤니티들이 그들의 지역 커뮤니티를 지원하고 또 기능해온 방식이었다.

@isaacs, @mikeal 그리고 play(node) 관계자들, 2012년 가을, 대한민국 서울.

@isaacs, @mikeal 그리고 play(node) 관계자들, 2012년 가을, 대한민국 서울.

io.js의 비전 중 하나는 커뮤니티가 이 프로젝트의 모든 면에 참여하고 추진하며, 이러한 커뮤니티에 의해 io.js가 발전하고 성장하는 것이다. 나는 지역화를 할 때가 되었을 때 단순히 웹 사이트나 문서를 번역하는 그룹을 만들고 싶지 않았다.

그 대신 나는 다양한 언어를 사용하는 커뮤니티 구성원들이 모여 자신들의 언어로 협력할 수 있는 공간을 만들고 싶었다. 구성원들은 그 공간을 문서를 번역할 때는 물론 지역 커뮤니티를 지원하고 지역 커뮤니티와 io.js 프로젝트를 연결하는 가교 구실을 할 때도 사용할 수 있다. io.js에서 개방 협력 체제를 통해 에반젤리즘, 소셜 미디어, 심지어 프로젝트의 로드맵까지 만들어 낸 바 있다. 비영어권 커뮤니티라고 여기에 참여하지 못할 이유가 있을까?

놀라웠던 토요일!

우리의 웹 사이트 프로젝트 내에는 웹사이트와 과거의 블로그 글을 스페인어로 번역하는 사람들이 몇 있다. NodeSchool에서 시작된 작업을 준비하면서 그들에게 혹시 결과물을 정리하기 위한 스페인어 지역화 저장소/팀이 필요한지 물어보았다.

대만 NodeSchool

대만 NodeSchool

나는 웹사이트 저장소에 혹시 지역화 작업에 참여하고 싶은 사람이 있는지 묻는 이슈를 생성했다. 트위터에서 몇몇에게 링크를 알려주었고 곧 엄청난 수의 사람들의 참가 신청을 볼 수 있었다.

이슈에 코멘트를 남김으로써 참가를 신청한 모든 사람들은 각자의 언어에 해당하는 팀에 배정되었다. 이 팀은 그들의 언어에 해당하는 iojs Github 단체 저장소의 관리자이다. 각 저장소를 설정한 후에 몇 가지 "first step"을 알리는 이슈를 생성했다. 사람들이 이런 새로운 장소를 그들이 완전히 소유한다고 느끼게 만드는 것은 어려움이 따른다. 의도적으로, 각 저장소의 설명과 README 파일을 빈 채로 놓아두었는데 그로 하여금 각 언어 사용자들의 첫 번째 일거리가 그들의 언어로 이것들을 작성하는 것이 되게 하기 위해서였다.

나는 또 그들에게 지역화 팀에서 사용하게 될 트위터 계정과 지역 커뮤니티에서 접근하기 용이한 다른 소셜 미디어 계정을 만들도록 했다. io.js는 소셜 미디어를 통해서 기여자들을 불러모으고 중요한 안건들에 대한 주의를 끄는데 있어 많은 성과를 거두고 있었으며 또한 소셜 미디어를 통해서 우리가 이루어 낸 성과들을 말함으로써 사람들에게 의욕을 주고 신나게 해 왔다. 소셜 미디어 계정을 만듦으로써 성취하고자 한 목표는 이러한 성공들을 재현하고, 그럼으로써 이 팀들의 영역을 "번역자"에서 "커뮤니티 관리자"로 확대하는데 있었다.

마지막 단계로써 나는 이 팀들이 최신의 주간 io.js 업데이트를 번역하는 작업을 새로운 이슈로 생성하도록 권했다. 이것은 각 그룹이 어떻게 작업을 정의하고 나눌것인지 고민하도록 하는 교묘한 장치였다. 몇몇 속도가 빠른 커뮤니티들은 두사람 이상이 동시에 동일한 글을 번역하는것과 같은 혼란에 빠지기도 했다. 물론 이러한 문제들은 금세 해결되었고 그들이 스스로 과정들과 그에 수반되는 절차들을 만들어냈기 때문에 그들 스스로가 대단한 주인의식을 가지게 되었다. 만약 나나 다른 사람들이 과정들을 알려주고 따르도록 했다면 그렇지 못했을것이다.

진짜 재미있는것은 사람들에게 어떠한 안내도 하지 않은 채로 어떠한 일들을 하는 지 관찰하는 것이었다. 하루가 채 끝나기도 전에 사람들은 웹사이트를 번역하고, 팀원들을 추가하고, 공용 이메일을 만들고, 계정 정보를 팀 내에서 공유하기 위한 다양한 방법들을 고안해냈다.

최초의 물속 JS 강연! JSConf.asia 2013, 필리핀

최초의 물속 JS 강연! JSConf.asia 2013, 필리핀

언어 vs 지역화

사람들은 빠르게 팀이 언어 당 생성되며 지역마다 할당되는것이 아님을 눈치챘다.(es는 생성되지만 es_ES는 아닌것처럼) 이 팀/저장소들은 각각이 협업이 실제로 일어나는 장소이며 나는 구성원들이 참여하고 서로를 이해할 수 있는 가능한 큰 집단을 만들기를 바랬다. 예를 들어서, 스페인어 팀(iojs-es)은 서로 다른 지역화의 결과물들을 만들어내기 위해(es_ES, es_MX, es_CO 등등의) 서로 쉽게 소통하고 효과적으로 협업할 수 있다. 그들은 또한 행사에 참여 가능한 연사들의 목록을 서로 공유함으로써 우리의 국제적인 에반젤리즘 성과를 키워나가는데 기여할 수 있다.

네트워크의 효과

나는 하루의 상당부분을 Github 관리자 도구를 사용하는데 사용했다: 팀을 만들고, 멤버들을 추가하고, 저장소를 만들고, 이슈를 생성하는데.

새로운 사람들이 속속 참가신청을 했다. 맨 처음에는 트위터에서 이것에 대해서 알게 된 사람들이 그들의 친구들에게 알려주었고, 그들 중 얼마가 참가신청을 했을것이다. 각각의 지역화 팀이 첫 번째 이슈에 있는 과정들을 따라가며 일하기 시작했을때 그들은 팀의 트위터 계정을 생성하고, @official_iojs를 팔로우했다. 그리고 @official_iojs가 참가자들에게 각각의 지역화 팀의 트위터 계정을 팔로우하도록 알리는 트윗을 작성했다. 각각의 새로운 지역화 팀 계정을 알리는 트윗들은 리트윗되고 순환하며, 또 다른 참가 신청의 파도를 불러왔다.

위와 같은 일이 매 시간마다 각각의 시간대에서 일어났으며 한 시간마다 몇 개의 새로운 언어가 지역화 작업에 추가되는 결과를 만들어냈다. 일요일 아침(태평양 표준시)에 일어나서 잠든 동안 참가 신청을 한 사람들을 모두 추가했다. 그리고 하루 동안 얼마나 사람들이 모였는지를 확인하고는 27개 언어를 사용하는 146명의 사람들이 단 하루 만에 모여들었다는데 경악을 금치 못했다.

만약 우리가 이 모든 것을 하루 만에 성취할 수 있었다면, 한 달 후에는 어떤 놀라운 일들이 벌어질 수 있을지 몹시 기대된다 ☺

io.js 주간 뉴스 2015년 2월 6일

Atom과 nw.js의 io.js 채용, Linux Tracing 등

앞으로 매주 금요일에 io.js와 관련 활동에 대한 정보를 올릴 생각입니다.

1월의 모든 기여를 돌아보니 노드 역사상 3번째로 활발하고 (294 커밋) 거의 3년만에(2012년 2월에 308 커밋) 가장 활발한 달이었습니다. 추세로 보건데 2월에는 좀 더 활발해 질 것으로 예상합니다.

  1. 1.1.0가 릴리스되었습니다. Changelog를 확인하세요.
  2. Sam Newman 님의 간단한 스트림 작성(Simplified Stream Construction)이 도입되었습니다.
  3. Linux Tracing(LTTNG) 이 추가되었습니다.
  4. io.js 디버깅에 대해 긴밀하게 협업하면서 구글이 v8과 Chrome의 tracing 작업 일부를 공유했습니다.
  5. Travis CI에서 io.js가 지원됩니다.
  6. Codeship이 io.js를 지원합니다.
  7. Atom 에디터가 io.js로 바꿨습니다.
  8. nw.js(구 node-webkit)가 io.js로 바꿨습니다.
  9. 새로 출시되는 Tessel 하드웨어가 io.js를 지원할 예정입니다.
  10. Chris Dickinson 님이 새로 참여하는 커미터 6명을 목록에 올렸습니다. 이제 활동하는 커미터는 총 23명입니다.
  11. 안정성 및 호환성 정책을 만드는 중입니다. 커뮤니티의 참여가 필요합니다.
  12. 로드맵에 대한 기업의 피드백을 받기 시작했습니다. 우리가 빠뜨린 기업의 연락처를 알고 있다면 저희에게 알려주세요.
  13. 다음 주에는 많은 io.js 사용자들이 발표하고 참석하는 Node Summit이 열립니다.
  14. 주간 TC 회의.
  15. 웹사이트 워킹 그룹 회의.
  16. Tracing 워킹 그룹 회의.

io.js의 상태

기억하는 한 가장 성공적인 오픈 소스 주도 활동

io.js의 발표 후 몇 달 동안 많은 일이 있었습니다. 야심에 찬 출시는 Fedor의 생일인 1월 13일로 결정했습니다. 놀랄만큼 많은 사람들이 열심히 노력해 준 끝에 출시일을 맞출 수 있었습니다. ☺

덧붙여 최초의 릴리스 외에도 4번의 패치 릴리스가 있었고 이는 40만 번이 넘는 다운로드를 기록했습니다.

우리는 누구도 예상치 못한 기여를 받고 있습니다. 프로젝트 발표 후, 뛰어난 활약을 해준 Chris DickinsonColin Ihrig

TC (프로젝트 의사결정 기구)에 추가했습니다. Domenic Denicola도 (저나 Rod Vagg처럼) 투표권이 없는 참가자로 TC 회의에 초대되었습니다. 이는 TC39v8과의 협력의 길을 열었습니다.

node.js™ 역사상 활발한 커미터가 8명 이상 있었던 적은 없습니다. 지난주 Chris Dickinson는 또 다른 라운드로 이끌어 줄 새로운 커미터 8명을 io.js에 올렸습니다.

io.js에서 현재 사용 중인 V8은 안정 버전으로 표기될 예정이며 3월 초에 크롬에 포함될 것입니다. 그때부터는 v8 최신 안정 버전을 사용하는 안정된 채널과 v8 다음 개발 버전을 사용하는 불안정한 채널을 갖게 됩니다. 이 말은 3월에는 안정 버전 io.js를 기대해도 된다는 이야기입니다. 개발 버전은 계속 유지되며 io.js와 v8의 새 기능을 테스트하는데 사용될 것입니다.

코어 개발 외의 몇 가지 작업은 이미 프로젝트 팀과 커미터가 필요할 만큼 성장했습니다. 설립될 때 있었던 빌드 그룹 말고도 이제는 웹사이트 그룹과 스트림 그룹이 있습니다. 우리는 앞으로 전파, 문서화, 지역화, nan[1], 로드맵과 관련한 워킹 그룹도 만들어지기를 기대합니다. 이 그룹들이 만들어지면 커뮤니티에서 더 다양한 참여를 이끌어 낼 수 있을 것입니다.

io.js를 시작할 때만 해도 node.js에 공헌하는 사람이 없다는 것이 가장 큰 문제였습니다. 지금은 프로젝트 전반에 걸쳐 참여하고 유입되는 공헌자들을 따라잡는 것이 큰 문제가 되었습니다. io.js는 현재의 node.js™는 물론, 그 어느 때의 node.js™보다 활발합니다. 그리고 이것은 시작에 불과합니다.


  1. https://github.com/rvagg/nan