July 21, 2015

Can web make ES6 the baseline of the Modern Web?

Minhas anotações sobre a palestra que Chris Heilmann fez no BrazilJS de 2014.

  • Os devs esperam muito que a inovação venha de empresas como Mozilla, Apple, Microsoft.
  • Em uma banda de música, o cara que toca o baixo, tem um papel muito importante, mas quase sempre ele não é levado a sério ou é reconhecido.
  • O baixista dirige a banda. Ele diz para onde a música vai. Ele mantém o ritmo durante a música.
  • A maioria das bandas dão o credito para o vocalista
  • E de tempos em tempos os vocalistas saem da banda, mas os baixistas se mantém. Os bateristas se dedicam a ficar na banda.
  • @brucecoddington
  • Ele é ex-baixista. Mas se tornou um Chief Operating Officer de uma pequena empresa de finanças.
  • Ele é um car que simplesmente gosta de programar, facilitar a vida dos outros pela programação. Ele gosta de copar em JS. Ele gosta de tentar novos frameworks.
  • Ele é um baixista. Ele tem boa conexão com a comunidade e tem uma ligação forte com o que ele faz.
  • Essas agressividades e ataques contra ideias e iniciativas diferentes da comunidade traz muito ruído para a inovação no mercado
  • A web é desenhada para trabalhar independente do hardware, software, habilidade ou localização.
  • Ambiente nativo e bem específico pode inovar mais rápido porque ele controla o usuário.
  • São dois mundos diferentes. Na web nós não temos nenhum controle sobre o que o usuário ou no que ele pode produzir.
  • Sempre haverá uma fragmentação dos browsers. Várias versões.
  • Sempre haverá um browser que você não gosta. E sempre haverá um browser que irá te prejudicar de alguma forma.
  • Nosso trabalhar é entregar conteúdo e funcionalidade para os usuários finais.
  • Veja como o rádio funciona: as pessoas conseguem te ouvir, mas você não consegue se comunicar com elas.
  • Com web é diferente. Você consegue se comunicar e discutir suas ideias
  • É difícil entregar tudo perfeito em todos os meios de acesso.
  • A principal ponto de mudança foi o crescimento dos mobiles
  • No mobile, muitas coisas estão contra a web. Existem vários fatores importantes que precisam ser considerados
  • Os browsers são muito ligados com o hardware e com os sistemas operacionais
  • Para competir com o mobile, nós precisamos que nossa tecnologia melhore.
  • Uma maneira de diminuir os problemas com mobile, é fazer com que linguagens como o JS consigam controlar o mobile como os apps conseguem fazer.
  • O JavaScript mudou muito nos últimos anos, mas ele precisa ter mais força para mudar a web definitivamente.
  • Muitas das inovações estão precisas em browsers em forma de experimentação durante muito tempo
  • Muitos browsers colocam coisas legais, mas essas coisas são retiradas antes que cheguem aos usuários.
  • Algumas features ficam presos por que precisa ser pre-processados, pós-processados ou compilados para funcionarem bem em alguns sistemas
  • Algumas features precisam ser convertidas em formato binário
  • Uma das grandes promessas é o ES6. Por causa das suas features, por causa das suas inovações
  • O Suporte do ES6 é encorajador, mas ainda precisa melhorar muito.
  • Ainda existem muitos browsers com partes do ES6 em fase de testes.
  • Mas os desenvolvedores sempre reclamam que determinados browsers não tem suporte. Mas o que você está fazendo? Quanto mais feedback para os browsers você dar, melhor.
  • A solução para colocar o ES6 em todos os browsers é o “transpile”
  • O problema é que você coloca um passo a mais entre o código e o browser.
  • outro problema é que não temos debug do código que escrevemos.
  • Nós ficamos a mercê do transpire criar um código mais eficiente, para que a performance não seja ruim
  • E os browsers que já conhecem o ES6, nunca vão usar o ES6 de verdade, porque o transpile transforma o ES6 para ES5.
  • Ha outro ponto para usar o ES6: você pode testar se uma feature funciona em determinado browser.
  • O problema é que podemos fazer isso apenas em nível de client-side
  • É mais um passo extra e pode ser custoso para o browser.
  • Voce pode usar também um framework ou uma biblioteca que tem as mesmas features
  • O problema com as abstrações é que eles nos fazem dependentes da abstração
  • Nós não podemos controlar uma versão que quebra a camada de abstração a não ser que os criadores do framework/biblioteca arrumem para nós
  • Nós todos sabemos que o DOM é lerdo e terrível.
  • Nós ainda não podemos usar o ES6 com segurança
  • Nbsp demos usar Typescript ou Transpile o código
  • Nós podemos fazer teste de features, mas isso pode ficar complicado com o tempo. Por que uma feature pode ser implementada pela metade.
  • A performance do ES6 ainda é ruim, mas isso é normal para uma linguagem que está começando
  • Existem uma série de problemas que você aprender quando você escreve um motor JS.
  • Minificação é uma coisa legal, todas as engines de JS são otimizadas pra trabalhar assim
  • Todos os browsers correm para não quebrar a web. Se alguma coisa não funciona, é o problema do navegador.
  • A pressão é imensa. Esqueça essa guerrinha dos browsers. Isso é uma ferramenta apenas
  • O usuário não se importa com a biblioteca de JS ou o suporte do CSS. Ele usa o browser que está no sistema operacional e pronto
  • A maior parte do aumento de velocidade são baseados na analise e na execução de erro dos desenvolvedores
  • O iOS safari já tem suporte a boa parte do ES6.
  • Nós precisamos fazer a web avançar mais rápido dando feedback para os browsers. Assim eles conseguem arrumar os bugs rapidamente.
  • Veja a compatibilidade do ES6 aqui http://kangax.github.io/compat-table/es6
  • Aqui vemos quais features é mais rápido comparado com o Es5. http://kpdecker.github.io/six-speed
  • O bom do JS é que ele é aplicado em toda parte, em qualquer lugar ou dispositivo. De formas diferentes.
  • Tente usar ES6 o quanto você puder.
  • Em ambientes controlados, testes tudo o que você puder, porque você controla o ambiente.
  • Acima de tudo, ache tempo para ter amor pela inovação e tente não deixar as empresas grandes fazerem essa inovações.
  • Nós somos os devs que definem o sucesso da web. A web é um sucesso hoje porque os devs lutaram para isso.
  • A ordem da implementação das features nos browsers sempre são definidas pelos deus.
  • Todos estamos aqui para fazer que a web vá para frente. Todos tem voz. Todos tem habilidades que podem mudar a web.