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에 대한 지원을 포함합니다.

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 지원 추가

화해 제안

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월 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를 릴리즈하고 개선해 나갈 것이다. ☺