node.js와 io.js가 손잡을 수 있도록 도와주세요.

node.js와 io.js가 손잡을 수 있도록 도와주세요.

우리는 서로 어느 때보다도 더 가까워졌지만, 당신의 도움이 필요합니다.

지난 몇 주간 리눅스 재단 사람들과 Node.js 그리고 io.js는 프로젝트들과 작업그룹들이 서로 조화로울 수 있는 개방된 관리 체계 구조의 초안을 작성해 왔습니다. 현재는 그 내용을 검토하는 중요한 단계에 와 있습니다.

저는 그와 관련된 문서를 만들고 이곳에 링크할 것입니다. 적절한 이슈에 의견을 적어주시고 그 문서에 새로운 풀 리퀘스트도 제안해 주시기를 부탁합니다.

프로젝트 생명주기

재단에서는 핵심만을 위한 규정보다는 프로젝트들에 관한 규정을 더 포함해야 합니다. 오늘날 io.js는 홀로 약 300여 명의 회원이 있는 50여 개의 작업그룹을 가지고 있습니다. 이 문서에 그 작업그룹들이 운영될 구조를 정의할 것입니다.

io.js에서 우리는 아무런 자원(돈, 법률 등)을 갖지 않습니다. 비용이 들지 않기 때문에 우리는 새로운 작업그룹과 프로젝트들을 활성화하는 데에 매우 자유로울 수 있습니다. 보통 한 재단에서는 프로젝트별로 충당하는 자원이 있고 이사회는 이러한 자원을 보호하기 위해서 더 많은 제약을 요구하게 됩니다. 그러나 io.js의 성공은 많은 부분 아무 제약 없이 자유롭게 작업그룹 내에서 일을 쉴 수 있었다는 것에 기인합니다. 따라서 이 균형을 찾기 위한 작업이 좀 필요할 것입니다.

의견수집을 위해 풀 리퀘스트를 열었지만, 커뮤니티로부터 여전히 많은 작업과 추가적인 의견이 필요합니다.

기술 결정 위원회(TSC) 협약

기술 결정 위원회(Technical Steering Committe, TSC)는 단일화된 io.js와 node.js 플랫폼의 관리의 주요한 주체가 될 것입니다. io.js에 익숙한 사람들에게는 새로운 기술위원회가 될 것이며 아마도 node.js의 핵심 커미터들뿐만 아니라 기존의 io.js TC 회원들도 받아들이게 될 것입니다.

기술 결정 위원회 협약은 결국 이사회의 승인을 받게 될 것입니다. 그것은 특정한 권리(재단 이사회로부터 기술적인 의사결정의 자율성과 같은)가 그 안에 있어야 한다는 것을 의미합니다. 이 문서의 수정을 위해서는 이사회의 승인이 필요한데 이는 한번 공식화되면 변경이 어렵다는 것을 의미합니다.

하나의 문서에 견고한 관리체계와 함께 현재의 TC 프로세스가 혼재되어있는 io.js와는 달리, 이 협약은 자유와 개방된 관리를 보장하는 동시에 가능한 최소한의 내용을 포함해야 합니다. 우리는 io.js가 지난 4개월간 해왔던 것처럼 TC 프로세스를 계속 반복하길 원합니다. 그리고 우리가 이 문서에 프로세스와 관련된 세세한 규정을 지나치게 많이 담는다면, 그것은 꽤 곤란하게 될 것입니다. 우리는 이 선을 지키기 위해 지역의 식별과 언어를 개선하는 데 도움이 필요합니다.

기술 결정 위원회 정책 초안

이 문서에서 재단 이사회가 기술 결정 위원회가 할 방향과 가치 그리고 범위를 비준할 것입니다.

거기서 만들어진 재단의 모델에는 이사회와 선임된 경영진에 의해서 관리되는 "재단"과 기술 결정 위원회에 의해 관리되는 “프로젝트” 사이에 벽이 있습니다. 이 문서는 이사회가 기술 결정 위원회에게 인정해주는 부분, 그리고 기술 결정 위원회 방향성과 요구사항(개방성 같은)들을 서술합니다.

일부 문제(법적인 문제 등)는 기술 결정 위원회에게 남아있지 않고 재단에 의해 다루어지므로 이 문서에 포함되지 않습니다.

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

io.js 1.6.2 릴리스

이번 주에는 v1.6.2 릴리스가 있었습니다. GitHub에서 전체 변경사항을 볼 수 있습니다.

주요 변경 사항

1.6.2

  • Windows: Windows 지원 상태의 개선작업으로 전체 테스트를 다시 통과하게 되었습니다. v1.4.2의 릴리스 노트에서 언급했듯이, CI 시스템과 설정이 Windows 테스트의 바른 문제 보고를 방해하던 문제와 CI와 코드베이스의 문제는 완전히 해결된 것으로 보입니다.
  • FreeBSD: io.js/Node.js에 영향을 주는 커널 버그발견되어 io.js에서 이 문제가 일어나지 않도록 수정했습니다.(Fedor Indutny) #1218.
  • module: 이제 require('./') 대신 require('.')를 사용할 수 있습니다. 이 변경은 버그 수정으로 간주합니다.(Michaël Zasso) #1185.
  • v8: 4.1.0.25로 업데이트 했습니다. 여기에는 --max_old_space_size4096을 넘는 값을 사용한 경우 발생하는 문제의 수정사항과 Solaris 지원이 들어있습니다. 언급된 수정은 이미 io.js에 포함되어 있습니다.

알려진 이슈

  • 원인을 아직 알 수 없는 미미한 메모리 누수가 있을 수 있습니다. 자세한 사항은 #1075를 참조하세요.
  • 대화형 셸에서 서러게이트 페어(Surrogate pair)가 터미널을 정지시킬 수 있습니다. #690
  • io.js를 정적 라이브러리로 빌드할 수 없습니다. #686
  • process.send()는 문서에서 설명된 바와는 다르게 동기적이지 않습니다. 이 회귀는 1.0.2에서 발생했습니다. #760에서 확인 가능하며 #774에서 수정하고 있습니다.
  • DNS 쿼리 중에 dns.setServers()를 호출하면 실패한 단언문 때문에 크래시가 발생할 수 있습니다. #894

커뮤니티 업데이트

  • Node.js Technical Governance 초안이 제안되었습니다. 여기에서 초안을 확인하실 수 있습니다.
  • Microsoft Visual Studio 팀이 Visual Studio를 위한 Node.js Tools 1.0을 릴리스 했습니다. 이 릴리스에는 리치 에디터, 코드 자동완성, 대화형 윈도우, 고급 디버깅과 프로파일링이 포함됩니다. 공지를 읽어보세요.
  • node.js, io.js SPM 모니터 지원, 모니터에 성능 모니터링, 경고 및 이상 탐지를 추가합니다.

다가오는 이벤트

  • NodeConf 입장권을 판매하고 있습니다. 6월 8일과 9일, 캘리포니아 오클랜드에서 열리며, NodeConf Adventure는 6월 11일~14일, 캘리포니아 Walker Creek Ranch에서 열립니다.
  • CascadiaJS 입장권을 판매하고 있습니다. 7월 8일~10일, 워싱턴주에서 열립니다.
  • NodeConf EU 입장권을 판매하고 있습니다. 9월 6일~9일, 아일랜드 워터퍼드에서 열립니다.
  • nodeSchool tokyo가 4월 12일 일본의 도쿄에서 개최될 예정입니다.

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

io.js 1.6 릴리스

이번 주에는 v1.6.1v1.6.0 두 번의 릴리스가 있었습니다. GitHub에서 전체 변경사항을 볼 수 있습니다.

주요 변경 사항

  • path: path.resolve() #1153의 새로운 타입 검사는
    실무에서 발생하는 일부 경계조건(특히 path.dirname(undefined))은 다루지 않습니다. path.dirname(), path.basename(), path.extname()의 타입 검사가 느슨해졌습니다. (Colin Ihrig) #1216.
  • querystring: querystring.parse()querystring.stringify()의 내부 최적화(#847)에서 querystring.escape()Number 리터럴을 적절하게 변환하지 못하는 문제가 있었습니다.(#1208) 이는 테스트에서 발견하지 못한 것이지만 지금은 버그와 테스트를 수정했습니다. (Jeremiah Senkpiel) #1213.

1.6.0

  • node: 시작할 때 모듈을 미리 로드하기 위해 새로운 커맨드라인 옵션 -r이나 --require를 사용할 수 있습니다. (Ali Ijaz Sheikh) #881
  • querystring: parse()stringify()가 더 빨라졌습니다. (Brian White) #847
  • http: joyent/node#9048에 따라 Node.js v0.12에서 변경된 내용과 맞추려고 http.ClientRequest#flush() 메서드를 폐기하고 http.ClientRequest#flushHeaders()로 대체했습니다. (Yosuke Furukawa) #1156
  • net: joyent/node#9268에서 net.connect()가 받는 옵션과 같게 하려고 server.listen()portString 옵션으로 받을 수 있게 되었습니다. (예시: { port: "1234" }) (Ben Noordhuis) #1116
  • tls: 아직 사용 사례를 논쟁 중인 사소한 누수이지만 보고된 메모리 누수에 대한 작업을 하고 있습니다. 진행사항은 #1075에서 볼 수 있습니다.
  • v8: --max_old_space_size4096을 넘는 값을 사용한 경우 발생하는 정수 오버플로에 대한 수정사항을 백포트했습니다. (Ben Noordhuis) #1166
  • platforms: io.js CI 시스템이 이제 FreeBSDSmartOS(Solaris)에서도 통과합니다.
  • npm: npm을 2.7.1로 업그레이드했습니다. 자세한 내용은 npm CHANGELOG.md를 참조하세요.

알려진 이슈

  • TLS와 관련된 메모리 누수가 있을 수 있습니다. 자세한 사항은 #1075를 참조하세요.
  • 대화형 셸에서 서러게이트 페어(Surrogate pair)가 터미널을 정지시킬 수 있습니다. #690
  • io.js를 정적 라이브러리로 빌드할 수 없습니다. #686
  • process.send()는 문서에서 설명된 바와는 다르게 동기적이지 않습니다. 이 회귀는 1.0.2에서 발생했습니다. #760에서 확인 가능하며 #774에서 수정하고 있습니다.
  • DNS 쿼리 중에 dns.setServers()를 호출하면 실패한 단언문 때문에 크래시가 발생할 수 있습니다. #894

커뮤니티 업데이트

  • browserify가 io.js를 지원합니다. 여기서 공지사항을 볼 수 있습니다.
  • express.js가 io.js 지원을 추가했습니다.
  • 지난 두 주 사이에 Joyent의 하드웨어에 접근 권한을 얻고 V8에 패치를 올려서 io.js를 빌드할 수 있게 되었습니다. SmartOSFreeBSD에서 테스트를 통과하도록 작업한 결과 이틀 전부터 테스트를 통과하게 되었습니다. 이는 빌드 팀과 Johan Bergström의 놀라운 작업 덕분입니다.
  • Petka Antonov가 실험적으로 io.js에서 워커 구현체를 제안하고 있습니다. 여기서 이에 대한 논의에 참여할 수 있습니다.
  • io.js는 openssl을 1.0.1m으로 업그레이드했습니다.

다가오는 이벤트

  • NodeConf 입장권을 판매하고 있습니다. 6월 8일과 9일, 캘리포니아 오클랜드에서 열리며, NodeConf Adventure는 6월 11일~14일, 캘리포니아 Walker Creek Ranch에서 열립니다.
  • CascadiaJS 입장권을 판매하고 있습니다. 7월 8일~10일, 워싱턴주에서 열립니다.
  • NodeConf EU 입장권을 판매하고 있습니다. 9월 6일~9일, 아일랜드 워터퍼드에서 열립니다.

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

io.js 1.5.1, 커뮤니티 이벤트 등

io.js 1.5.1 릴리스

3월 9일 월요일, @rvagg가 io.js v1.5.1을 릴리스 했습니다. 모든 변경 내역은 GitHub에서 보실 수 있습니다.

주요 변경 사항

  • tls: 제보된 TLS 메모리 누수 현상이 이번 릴리스의 여러 커밋에 걸쳐 해결되었습니다. 현재 테스트 결과에 따르면 아직 누수 문제가 있을 수 있습니다. 전체 진행 과정은 #1075에서 보실 수 있습니다.
  • http: joyent/node#9348npm/npm#7349에서 보고 된 에러를 고쳤습니다. socket.destroy()에서 'error' 이벤트가 단언문 실패를 일으키는 경우 전송되길 기다리던 데이터를 끝까지 읽지 못하고 있었습니다. (Fedor Indutny) #1103

알려진 이슈

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

커뮤니티 업데이트

다가오는 이벤트

  • NodeConf 입장권을 판매하고 있습니다. 6월 8일과 9일, 캘리포니아 오클랜드에서 열리며, NodeConf Adventure는 6월 11일~14일, 캘리포니아 Walker Creek Ranch에서 열립니다.
  • CascadiaJS 입장권을 판매하고 있습니다. 7월 8일~10일, 워싱턴주에서 열립니다.
  • NodeConf EU 입장권을 판매하고 있습니다. 9월 6일~9일, 아일랜드 워터퍼드에서 열립니다.

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는 어떻게 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명의 사람들이 단 하루 만에 모여들었다는데 경악을 금치 못했다.

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