본문으로 건너뛰기

첫 TC39 회의

TC39를 조직하는 회의는 1996년 11월 21-22일 캘리포니아 마운틴뷰의 Netscape 사무실에서 열렸다. 회의록 [TC39 1996]에 따르면 참석자는 총 30명이었다(그림 11). 회의는 Ecma를 대표하여 참석한 Jan van den Beld와 Netscape의 코어 기술 부사장인 David Stryker의 환영사로 시작되었다. Stryker는 위원회가 당시의 구현에서 최소한의 변화만 있는 명세를 만들기를 희망하며 그 이상의 언어 확장은 추후로 연기되기를 바란다고 했다.

의장 대행: Mr. J. van den Beld
총무: Mr. J. van den Beld
참석자: Mr. Cargill (Netscape), Ms. Converse (Netscape), Mr. Eich (Netscape), Mr. Fisher(NIST), Mr. Gardner (Borland), Mr. Krull (Borland), Mr. Ksar (HP), Mr. Lenkov(HP), Mr. Lie (W3C), Mr. Luu (Mainsoft), Mr. Mathis (Pithecanthropus, JTC1/SC22), Mr. Matzke (Apple), Mr. Murarka (Spyglass), Ms. Nguyen (Netscape), Mr. Noorda(Nombas), Mr. Palay (Silicon Graphics), Mr. Reardon (Microsoft), Mr. Robinson(Sun), Mr. Singer (IBM), Mr. Smilonich (Unysis), Mr. Smith (Digital), Mr. Stryker(Netscape), Ms. Thompson (Unisys), Mr. Urquhart (Sun), Mr. Veale (Borland), Mr.Welland (Microsoft), Mr. White (AAC Group, Microsoft), Mr. Willingmyre (GTW Associates, Microsoft), Mr. Wiltamuth (Microsoft).
결석: Mr. Huffadine (Callscan)

그림 11. 회의록[TC39 1996] 상에 기록된 TC39 첫 회의의 참석자들

Microsoft Internet Explorer 개발팀 리더 Thomas Reardon은 위원회가 HTML 객체 모델에 대한 내장 라이브러리 작업을 W3C에 맡기는 것이 좋다고 권했다. 작업 중복을 피하기 위해서였다. 위원회는 이 권고를 받아들였다. 이는 위원회의 초기 성공에 핵심적인 역할을 했다. Netscape와 Microsoft의 핵심 언어 기능은 매우 유사했지만 HTML API는 크게 달랐기 때문이다. TC39가 오직 플랫폼/호스트 환경에 독립적인 표준만 개발하기로 한 결정은 일관적인 TC39의 핵심 운영 원칙 중 하나가 되었다. Reardon은 Microsoft가 JScript를 Netscape와 완전히 호환되도록 하기 위해 겪었던 어려움들을 이야기하며 언어 명세의 공식화 필요성을 강하게 주장했다. 하지만 경쟁 구현체들이 가치를 더할 수 있는 여지를 남겨두어야 한다고도 이야기했다.

제안된 의제에는 먼저 Netscape, Sun, Microsoft, Nombas Inc.의 기술 발표가 있었다. 그뿐만 아니라 새로운 Ecma 기술 위원회를 설립하고 표준 언어 명세를 작성하는 작업을 시작하는 데 필요한 실제 조직 활동도 의제에 있었다. 그러나 회의에서 선은 아무것도 발표할 필요가 없다고 말했고, Borland International의 발표가 추가로 포함되었다.

Netscape와 Borland는 회의 시작 시 기술 명세 초안을 배포했다. Microsoft는 그러지 않았다. Thomas Reardon이 발표 중에 Microsoft가 초안 명세를 개발했다고 언급하며 문서를 들어 보였다. Reardon은 아직 시간이 부족해서 복사본을 준비하지 못했고 다음 날 복사본을 제공할 거라고 했다. 그래서 Microsoft의 기술 발표는 회의 둘째 날로 미뤄졌다.

Brendan Eich도 그 자리에 참석했지만, Netscape의 기술 발표는 Anh Nguyen이 진행했다. 그 발표에서는 Eich와 C. Rand McKinny가 작성한 JavaScript 1.1의 JavaScript 언어 명세 초안을 소개했다 [1996]. Netscape는 이를 Ecma에 기여하여 표준화 노력의 기초 문서 중 하나가 되도록 했다. Nguyen은 Netscape Navigator 3의 JavaScript 1.1이 Netscape 2의 초기 JavaScript 버전과 몇 가지 차이가 있다고 설명했다. Netscape의 명세는 ANSI C 언어 표준 [ANSI X3 1989]에서 사용된 것과 유사한 BNF 표기법을 사용하여 언어 구문을 기술했다. 대부분의 시맨틱을 비공식적인 산문체로 썼고 언어의 강제 형변환 규칙을 기술하기 위해서는 표 형식을 사용했다.

Borland는 Javascript의 서버 구현과 Javascript IDE를 만들었다[Lazar 1997]. Borland의 발표는 그들이 이미 구현했거나 구현할 예정인 여러가지 확장들에 중점을 두었다[Borland International 1996]. 그들의 주요 확장은 클래스 정의, try/catch/finally 예외 처리, C 언어 스타일 switch 문, 코드 블록을 일급 값으로 사용하기, 배열 리터럴, C 언어 스타일 전처리기, 그리고 내장 라이브러리에 추가된 몇 가지 I/O 기능 등이었다. Borland도 Netscape의 구현과 호환성을 갖도록 하기 위해 겪었던 어려움을 강조하며 상호 호환 가능한 구현을 위해 더 공식적인 명세가 필요하다고 말했다.

Nombas Inc.의 Brent Noorda는 Nombas Inc.가 Cmm("C minus minus")을 스크립팅 언어로 시장에 출시한 경험에 대해 발표했다. Cmm의 표면적인 문법과 몇몇 시맨틱은 Javascript 1.0과 상당히 비슷했다. Nombas는 이후 Cmm 구현을 임베디드 애플리케이션용 ECMAScript 구현으로 발전시켰다[Noorda 2012].

회의 첫 날이 끝나자마자, Microsoft의 Robert Welland는 할 일이 있었다 [Welland et al. 2018, at +8:30]. Thomas Reardon이 발표에서 복사본을 만들 시간이 없었다고 주장한 건 Welland에게 Microsoft 명세 작업에 더 많은 시간을 주기 위한 지연 전술이었다. 회의를 위해 명세 문서를 작성하는 건 Microsoft의 테크니컬 라이터에게 맡겨졌었다. 그런데 Welland는 회의에 참석하기 직전 이 문서를 받았을 때 그 문서가 초기 언어 명세로조차 부적합하다고 판단했다. 그는 그 문서를 위원회에 제출하고 싶지 않았다. 하지만 그가 회의 시작 전 Netscape의 문서를 보았을 때 Welland는 Netscape가 작성한 문서도 언어 명세로 부족하다고 느꼈다. 그는 Netscape의 문서가 표준 개발을 위한 유일한 기초 문서가 되는 것을 원하지 않았다. 그래서 Welland와 Reardon은 하루를 지연시켜서 더 나은 문서를 준비하고 회의 둘째 날이 시작할 때 제시하기로 결정했다.

회의가 끝난 후 Robert Welland는 Walter Smith의 집을 방문했다. Walter Smith는 Microsoft에서 일하고 있었지만 여전히 Bay Area에 거주하고 있는, Welland와 NewtonScript 작업을 함께했던 동료였다. 그들은 밤새도록 Microsoft의 문서를 핵심 Javascript 언어의 그럴듯한 초기 명세로 바꾸는 작업을 했다. 그들의 명세는 ANSI C 표준의 많은 문법을 빌려왔고 형변환 규칙에 표를 사용했다. 하지만 Welland는 나머지 시맨틱이 더 형식적으로 명시되기를 원했다. 그는 LISP 1.5 Programmer’s Manual[McCarthy and Levin 1965]이 Lisp 인터프리터의 시맨틱을 설명할 때 먼저 해당 문법이 어떻게 평가되어야 하는지를 엄밀하게 기술하고 그 문법적 형태가 바로 따라 나오는 방식을 쓴 것을 기억해냈다 [Welland et al. 2018, at +10:10]. 어떤 경우 시맨틱은 의사 코드를 사용하여 제시되었다1. Welland는 Javascript의 평가 시맨틱을 설명하기 위해 단계별로 번호가 매겨진 비슷한 스타일의 의사코드를 사용하기로 결정했다.

Welland와 Smith는 당시의 JScript 구현을 바탕으로 문서에 의미론을 추가했다. 확신이 서지 않는 부분이 있으면 그들의 Self와 NewtonScript 경험으로 돌아가서, 그 관점에서 보고 타당한 것들을 기술했다. 문서에는 Array의 객체 다이어그램도 있었는데 이것은 매우 Self와 비슷한 방식으로 속성 상속을 모델링했다. 다음날 아침까지 그들은 출발점으로 사용하기에는 충분히 좋다고 느껴지는 문서를 만들었다. 그들은 문서를 복사했고 Welland는 회의 둘째날이 시작할 때 그것을 배포했다. 그 문서의 제목은 "The JScript Language Specification, Version 0.1 [Welland et al. 1996]"이었고, Ecma의 표 대한 Microsoft의 기초 문서 기여가 되었다.

회의 참석자들은 Welland의 문서를 일반적으로 좋아했고 상호 호환이 가능한 구현을 보장하기 위해서는 더 형식적인 명세가 필요하다는 데에 동의했다. 그리고 Robert Welland는 발표를 하면서 이 사실에 기뻐했다. 하지만 아직 없는 공식 명세를 기다리는 쪽으로 합의되지는 않았다. 대신 Netscape, Microsoft, Borland가 기여한 명세들을 통합하여 표준의 초기 초안을 만들고 그 초안을 더 완전하고 정확하게 만드는 작업을 하는 쪽으로 합의되었다. 그 첫번째 단계로 위원회는 표준의 첫 번째 버전에서 해결하거나 명확히 해야 할 사항들의 목록 [부록 G]을 생성했다. 기초 문서 제출이 2개 있었기 때문에 어떤 문서에서 편집을 시작할지 둘 중 하나를 골라야 했다. Netscape의 문서는 FrameMaker를 사용하여 작성되었고, Microsoft의 문서는 Word를 사용하여 작성되었다. Ecma 대표들은 그들의 내부 편집 과정이 Word를 사용한다고 설명하며 위원회에서 Microsoft의 기여를 기초 문서로 사용하기로 합의했다. Welland는 이 사실에 놀랐다.

의장: Mr. G. Robinson (Sun)
부의장: Mr. C. Cargill (Netscape)
부의장: Mr. S. Wiltamuth (Microsoft)
주 편집자: Mr. M. Gardner (Borland) (확정 예정)
부 편집자: Mr. A. Murarka (Spyglass) (확정 예정)

그림 12. 첫 TC39 회의에서 선출된 담당자들 [TC39 1996]

위원회는 초기 임원진(그림 12)을 선출하고 매우 공격적인 목표를 설정했다. 1997년 1월 다음 회의까지 첫 번째 초안 작성, 1997년 4월 최종 초안 작성 후 1997년 6월의 Ecma 총회에서 표준 승인을 목표로 했다. 위원회는 약 6주 간격으로 다음 회의 일정을 잡고 사설 메일링 리스트와 ftp 서버를 설정하기 위한 조치를 시작했다2.

TC39의 두 번째 회의 [1997e]는 1997년 1월 14일과 15일에 열렸다. 회의에는 Ecma 회원이 아닌 5명의 게스트를 포함해서 22명이 참석했다. Jan van den Beld는 Ecma 총회에서 TC39의 설립이 확정되었다고 발표했다. 그는 TC39가 가능한 한 빨리 Ecma의 회원 자격과 참여에 관한 규칙을 따르기 시작해야 한다고 강조했다. Ecma 표준의 개발에 기여하는 자들은 Ecma 회원인 기관의 대표들이어야 한다고 말이다.

회의에서 다루어진 주요한 기술 사안은 표준의 첫번째 초안[TC39 1997c]의 검토와 토의였다. Borland의 Michael Gardner와 Randy Solton은 Netscape, Microsoft, Borland의 기여를 통합하여 문서를 만들었다. Spyglass는 Ecma에 가입하지 않았기 때문에 Anup Murarka는 첫 번째 초안 개발에 참여하지 않았다. 세 가지 구현에서 완전히 동일한 기능은 논쟁의 여지가 없는 것으로 간주했다. 그리고 구현 간에 기능이 달랐던 부분은 조정되어야 하는 것으로 분류했다.

특정 구현에만 있었던 기능은 "제안된 확장" 부록에 정리되었다. 위원회는 어떻게 확장들을 처리할지 논의했다. 그 결과 확장보다는 모든 당시의 구현에서 공통적이었던 핵심 기능들을 구현하는 것을 우선시하기로 합의했다. 그리고 명세는 기존 애플리케이션을 수정해야 하도록 만드는 변경사항(역주: 즉 breaking change)을 피해야 한다는 합의도 있었다. 이는 표준의 모든 후속 개정들에서도 중요한 설계 지침이 되었다.

촉박한 일정을 맞추기 위해 위원회는 편집자들과 함께 명세의 빠진 부분을 보충하고 중요한 기술적 이슈를 고치는 작업을 할 즉석의 기술 작업 그룹(ad hoc technical working group)을 만들었다. 이 그룹은 전자상으로 소통하고 한 주는 대면 회의, 한 주는 원격 회의로 번갈아가면서 주간 회의를 진행하기로 했다. Scott Wiltamuth가 조사 위원으로 활동할 예정이었다. TC39 회의는 1월 15일 오전 10시 30분에 끝났고 나머지 시간은 즉석 기술 작업 그룹의 회의에 사용되었다.

회의 이후 Borland는 Ecma에 가입하지 않기로 결정했다. 그래서 Michael Gardner는 편집자로 계속 활동할 수 없었다. Sun은 Guy Steele을 보냈고 그는 1997년 1월 말부터 표준의 첫 번째 판이 나오는 1997년 9월 초까지 편집자로 활동했다.

Footnotes

  1. Welland는 McCarthy가 부록 B에서 기술한 PROG 기능에 대해 생각하고 있었을 수도 있다.

  2. 이 채널에 대해서는 아카이브를 두지 않았다.