Concrete Logo
Hamburger button

Como são adicionadas novas features ao JS?

  • Blog
  • 4 de Junho de 2016
Share

*Post originalmente publicado no Medium pessoal do autor. Confira aqui.

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 utilizado o Javascript no Netscape (aquele feito em 10 dias) e uma outra linguagem parecida, utilizada pela Microsoft, o JScript. Foi então criada uma especificação para essa linguagem, chamada de ECMA-262. A linguagem recebeu o nome de ECMAScript e foi também decidido que o comitê técnico 39 seria o responsável por essa especificação e padronização.

Este comitê é formado por algumas empresas. Hoje temos como membros a Google, Microsoft, Yahoo, Mozilla, e algumas outras. De tempos em tempos os membros fazem reuniões (geralmente são seis por ano e ocorrem durante três dias) nas quais 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 com cinco estágios. São eles:
  • Estágio zero, rascunho: simplesmente o envio de propostas, que 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 esta página.
  • Estágio 1, proposta: um membro do TC-39 é escolhido como responsável por essa proposta (champion).  Ele deve descrever o problema que será resolvido e mostrar uma API e ilustração de exemplos, além de discutir sobre os aspectos principais do algoritmo dessa proposta.
  • Estágio 2, esboço: a especificação da proposta deve estar completa e um exemplo deve ser formalmente descrito usando Javascript. Duas implementações da proposta são necessárias, porém uma delas pode usar transpiladores (ex.: Babel).
  • Estágio três, candidata: a especificação da proposta é revisada por dois membros do TC-39 e assinada por estes dois revisores mais o campeão responsável. Nesta etapa é entendido que todo o trabalho possível foi feito e que será necessário o feedback 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. Aqui 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 último, mas não menos importante, neste repositório estão as atuais propostas e seus estágios.

Tem alguma dúvida ou alguma contribuição? Aproveite os campos abaixo. Espero que tenham gostado do post e os feedbacks são mais que bem vindos. 😉

Se você quiser saber mais, pode dar uma olhada nos links abaixo:
https://github.com/tc39/agendas
https://github.com/tc39/ecma262
https://tc39.github.io/process-document/
https://github.com/tc39/test262
https://www.2ality.com/2015/11/tc39-process.html
https://github.com/tc39/ecma262/blob/master/stage0.md
https://www.ecma-international.org/memento/TC39.htm

É desenvolvedor e quer trabalhar com a gente? Acesse aqui.