Processo de adição de novas features do JS

O que é o TC39 e qual a sua importância para o futuro do Javascript

Bruno Vinícius
3 min readMay 4, 2016

Um pouco de história

Em 1996 o então chamado Javascript foi levado até a ECMA (European Computer Manufacturer’s Association) para que fosse padronizado para utilização nos diversos browsers. Inicialmente foi utilzado o Javascript que estava sendo utilizado no Netscape (aquele feito em 10 dias) e uma outra linguagem parecida, utilizado pela Microsoft, o JScript. Foi então criada uma especificação para tal, chamada de ECMA-262, a linguagem recebeu o nome de ECMAScript e foi tambem decidido que o comitê técnico 39 seria o responsável por essa especificação e pela padronização dessa linguagem.

Este comitê é formado por empresas, hoje temos como membros a Google, Microsoft, Yahoo, Mozilla, entre outras. De tempos em tempos há reuniões (geralmente são 6 por ano e ocorrem durante três dias) em que representantes dos membros discutem sobre as novas features. As notas desses encontros podem ser vistas nesse repositório:

O processo do TC-39

Quaisquer alterações na linguagem seguem um processo de maturidade de 5 estágios, vamos a eles:

  • Estágio zero, rascunho: Simplesmente o envio de propostas, estas devem ser feitas por algum membro do TC-39, ou algum contribuidor. Em seguida devem ser discutidas em alguma reunião, e então adicionadas a essa página:
  • Estágio um, proposta: Nessa etapa um membro do TC-39 é escolhido como responsável por essa proposta (champion). O problema que será resolvido por essa proposta deve ser descrito, há tambem a necessidade de mostrar uma API, ilustração de exemplos e discutir sobre os aspectos principais do algoritmo dessa proposta.
  • Estágio dois, esboço: Nessa etapa a especificação da proposta deve estar completa e um exemplo deve ser formalmente descrito usando Javascript. Duas implementações da propostas são necessarias, porém uma delas pode usar transpiladores (ex.: Babel).
  • Estágio três, candidata: A especifição da proposta é revisada por dois membros do TC-39 e então assinada por estes dois revisores mais o campeão responsável. Nessa etapa é entendido que todo o trabalho possível foi feito e que será necessário feedbacks dos usuários. Ao menos dois navegadores devem conter alguma implementação (não ativada por padrão) compatível com a especificação.
  • Estágio quatro, finalizada: A proposta está pronta para entrar formalmente como uma especificação do Javascript. Nessa etapa todos os requisitos foram atendidos e os testes de aceitação devem ser mergeados com o repositório de testes de aceitação do Javascript.

Poucas pessoas sabem da existência deste repositório, mas é aí que se encontram todos os testes de aceitação das propostas que estão, no mínimo, no estágio 3. Ao contrário de todas as etapas do processo, esse repositório aceita contribuição de qualquer pessoa da comunidade, sem restrições.

Por últimos mas não menos importante, neste repositório estão as atuais propostas e seus estágios:

Espero que tenham gostado do post, feedbacks são mais que bem vindos. ;)

Fontes:
https://github.com/tc39/agendas
https://github.com/tc39/ecma262
https://tc39.github.io/process-document/
https://github.com/tc39/test262
http://www.2ality.com/2015/11/tc39-process.html
https://github.com/tc39/ecma262/blob/master/stage0.md
http://www.ecma-international.org/memento/TC39.htm

--

--