Como assim a internet está mudando? A internet vem sofrendo uma série de atualizações, que começaram a tomar corpo depois de 2013, e essas mudanças estão chegando a um novo patamar.  Mas vocês só vão entender do que eu estou falando ao final de uma linha de raciocínio que eu vou falar aqui, e vão perceber o quanto é grandiosa essa mudança que a internet está passando.

Quem trabalha com internet provavelmente sabe que existem basicamente duas grandes organizações de padronização, uma delas é a W3C, que foi fundada pelo Tim Berners-Lee, “criador” da internet domestica, dos primeiros sites, do primeiro navegador, entre outras coisas, e a W3C foi responsável durante muitos anos por várias padronizações relacionadas à internet. A outra é a ECMA, uma entidade internacional formada pelas maiores empresas de tecnologia do mundo, da qual fazem parte Big Techs como Google, Microsoft, Apple, Facebook, entre outros. Em 2013 a ECMA teve uma reunião muito famosa, onde foram definidos os rumos para onde a internet iria caminhar. Até aquele momento a internet era uma coisa muito doida, nós tínhamos vários navegadores brigando entre si, não tinha um padrão, programar na internet era uma coisa extremamente difícil, tinha problemas de compatibilidade e tudo mais. Nessa época a gente tinha acabado de ter o lançamento do Google Chrome, que trouxe uma proposta muito interessante, que viria a revolucionar o motor de programação da internet que é o JavaScript. Então um dos destaques do Google Chrome no seu lançamento era justamente o Motor V8 para JavaScript, que deu origem, posteriormente, ao Node.JS. O Google Chrome era rápido, limpo e simples, e, por isso, se tornou o navegador mais utilizado da internet, passando à frente de todos os outros e mantendo a hegemonia desde então.

Na reunião do ECMA em que foram definidos os rumos da internet, houve a introdução de várias tags HTML como “video” e “canvas”, que antes não existiam e o CSS foi atualizado para o conhecido CSS3, que é utilizado até hoje, padronizando vários filtros, que antes eram feitos individualmente por cada empresa de navegadores. Ainda nessa época a gente teve a popularização dos Smartphones, que trouxeram a necessidade de introduzir responsividade dentro do CSS, incluindo animação e outras pequenas coisas que também foram introduzidas nesse período. Nós tivemos o Web Assembly, que possibilitava trazer códigos de outras linguagens, como o C++, por meio de uma plataforma chamada LLVM [Low Level Virtual Machine], gerar bytecodes, bin codes, executáveis por interfaces em JavaScript, etc. O Web Assembly foi lançado pro mercado trazendo o jogos antigos, como o DOOM, direto no navegador, sinalizando o que estaria por vir. Uma das coisas mais importantes também proposta na reunião da ECMA, no meu ponto de vista, foi a introdução de sockets bidirecionais, os websockets. Até então, a internet era fundamentada em cima de um protocolo direcional de perguntas e respostas, via TCP, com os websockets, os servidores conseguiam se comunicar com os clientes sem a necessidade de serem provocados. Junto a isso, também teve o componente canvas adicionado ao HTML, que é um componente para desenhos, muito utilizado no mercado de jogos para criar dos frames . A gente também teve o WebGL, possibilitando ao navegador interagir com a placa de vídeo do computador e, inclusive, personalizar shaders. Além disso tudo, a gente ainda teve service works, onde você consegue executar e comunicar várias threads separadas com uma thread principal, que é exatamente o mesmo modelo que as engines modernas de jogos utilizam, por exemplo, a Unity. Ainda, o web sound, que permite o processamento de áudio multicanais no browser, tanto pra gravação quanto para reprodução foi desenvolvido. Hoje, o navegador já tem suporte para ativar a câmera, captar, gravar, pausar, recortar vídeos, você consegue plugar microfone e gravar direto no navegador, há suporte para joysticks, controles de videogames, tem uma série de funcionalidades para poder lidar com dispositivos de Smartphone, inclusive para pegar uma série de informações desse device, tudo isso via JavaScript.

Juntando todas essas coisas, mais uma série de outras pequenas coisas, o que é que falta nesse caldo? Falta, nesse caldo, estruturar o JavaScript, que foi justamente o que o ECMA priorizou. Nessa atualização, o JavaScript passou a ter classes, passou a ter async/await, a ter fetch items, começou a ter construtores e destrutores de arrays e de objetos, entre várias outras funcionalidades super interessantes, para se tornar uma linguagem mais robusta, “A” linguagem da internet. Mas pra que foi feito tudo isso? Por que o navegador se tornou tão poderoso? Hoje eu posso falar com certeza absoluta que o navegador precisaria de uma camada muito fina de drivers para poder funcionar como um sistema operacional completo. Você consegue rodar jogos completos direto no navegador, sem precisar baixar nada, usando lazy loading, já existem frameworks para desenvolvimento de jogos, ainda em nível de código, obviamente, que conseguem carregar e renderizar modelos 3D e fazer uma série de outras coisas impensáveis até bem pouco tempo atrás. Toda essa mudança começou em 2013 e ela vem até os dias de hoje, então a gente teve um amadurecimento dessas tecnologias ao longo desses anos.

E por que é que isso tudo está acontecendo? Qual a minha visão disso, com relação a essas mudanças? Por que a internet está mudando? Se vocês forem parar para pensar, quando surgiram os Smartphones, eles mudaram a visão da durabilidade que teria o mercado de PCs, que se tornaram praticamente obsoletos. Hoje quem usa PC são os gamers e os programadores, a população normal utiliza no máximo um notebook simples, mas, na maioria das vezes, é só o Smartphone. Quando você vai ver algum filme, você pode ver numa TV Smart, e olhe lá. O que sustenta até hoje o mercado de hardwares para PCs são os mercados de datacenter, obviamente, que são peças bem específicas para uma aplicação industrial quase, mas o mercado de PCs desktop ainda sobrevive por causa do mercado de games. O mercado de games é o segundo maior mercado do mundo, só perde para a indústria bélica, e a indústria de games tem uma especificidade muito característica dela, que ela não depende diretamente de plataformas, principalmente os grandes estúdios de games que tem autonomia para lançar seus próprios launchers e não dependem de nenhuma Big Tech para conseguir fazer o lançamento dos seus jogos. Perceba, se você for um aspirante a tentar criar jogos, você vai ter que se dobrar a alguma Big Tech para conseguir lançar o seu jogo, vai ter que lançar ele na Steam, ou vai lançar para Android, e colocar o jogo dentro do Google Play, ou da Apple Store, para iOS, e só nessa brincadeira, 30% dos seus rendimentos vão ficar com essas empresas. Com as televisões, a mesma coisa, se você quiser lançar um aplicativo nas Smart TVs que já venha instalado, igual à Netflix faz, você precisa fazer um lobby gigantesco com as indústrias de televisores. E na internet, até então, a gente tem certa liberdade “controlada”, porque nós estamos utilizando o Google Chrome, com o Google como mecanismo de pesquisa, então o Google meio que controla a internet, e controla, também, os Smartphones, porque a maioria utiliza Android.

Como é que você consegue mandar mais ainda no mercado, eliminando as grandes fábricas de hardware? Você precisa fazer com que o navegador se torne uma ferramenta tão absurdamente boa que não tenha a necessidade de hardwares de qualidade para poder fazer tudo que você quer. Se o browser já tem todos os componentes para se desenvolver jogos nativos direto no navegador, que não precisam instalar, é mais ou menos como se você transformasse os jogos em sistemas de streaming, como o Spotify fez para a música e a Netflix e o YouTube fazem para os streamings de vídeo. A gente teria apenas a necessidade de um hardware simples com conexão à internet, acessando o nosso desktop online, que estaria num datacenter do Google ou da Amazon da vida, e, de lá, a gente conseguiria fazer tudo. Se você for parar para pensar, o Google fez um Google Drive? Por que o Google tem tantas coisas correlacionadas à digitalização de serviços que naturalmente são de desktop?

Mas ainda faltava um elemento, no meu ponto de vista: os jogos teriam que ser portabilizados para a internet, assim como os sistemas estão sendo portabilizados, mas essa conta não fechava. Você pegar toda a indústria de games, que quer ser independente, e transportar ela pro navegador, porque é mais fácil de distribuir os jogos, não tem necessidade de ter um launcher para fazer download, como é que você faz essa migração, principalmente com as engines de games melhorando ano após ano? Eu acho que na indústria dos games eles entenderam o recado do que estava acontecendo e começaram a procurar alternativas. Eles já estavam na mão da Sony e da Microsoft nos consoles, e na mão da Apple e do Google nos Smartphones, mas ainda conseguiam ter certa independência nos PCs, porque é uma plataforma que não tem um controle absoluto, tem o controle de sistema operacional, mas o resto é opcional, você pode usar o navegador que quiser, você pode usar o SO que bem entender, mas como é que você faz para poder não se curvar às Big Techs que estão dominando a internet? Você precisa criar formas de conseguir manter os seus jogos exclusivos, em plataformas exclusivas, que vão se contrapor a essa mudança que a internet vem sofrendo. Ano passado a gente teve um sinal forte dessa movimentação das indústrias de games com a compra as Zynga, empresa conhecida pelo desenvolvimento de jogos, pela Take-Two, que é a desenvolvedora do GTA, entre outros jogos. Eu ouvi algumas pessoas da indústria falando que a Zynga era estratégica para a Take-Two portabilizar o GTA para dispositivos móveis de baixo custo. Olha só a gente está falando aqui: como é que você roda um jogo de mundo aberto, pesado, que normalmente precisaria de um computador muito potente, num Smartphone de baixo custo? Vou te dar alguns segundos pra você pensar aí…

Quem desenvolve jogos sabe que, no final, eles são só uma ilusão de ótica, uma série de componentes desenhados à medida do necessário, para dar impressão puramente ótica. Só que a nossa visão é limitada, então os jogos simulam vários tipos de comportamento da visão humana. Na prática, quando a gente fala que os jogos estão rodando a tantos FPS [frames por segundo], são 60 imagens alinhadas passando por segundo no seu monitor. O cérebro humano não é muito acostumado com 60 FPS e a tecnologia das placas de vídeo já conseguem inserir frames por inteligência artificial para compensar esse frame rate. Então, na prática, o que você precisa é mandar uma imagem frequente e receber inputs de teclado, mouse, ou controle, para conseguir fazer com que esse elemento se movimente. Mas ainda falta uma coisa para isso acontecer: como fazer o streaming de um jogo, onde o servidor está a quilômetros de distância do jogador, sem ter latência? O mercado de games é muito exigente com latência, principalmente jogos online, MMORPG [Massively Multiplayer Online Role-Playing Game], jogos de MOBA [Multiplayer Online Battle Arena] e FPS [First Person Shooter], que são jogos que precisam ter a latência mínima, porque um pequeno delay já faz com que você esteja em desvantagem.

E aí entra o tal do 5G, que todo mundo está falando. Como é que a tecnologia do 5G vai chegar e mudar o mundo? Se o 5G for tudo isso que estão prometendo, vai romper as barreiras da física e entregar velocidades com pings inferiores aos que a gente vê hoje, o que, particularmente, eu acho muito improvável conseguir uma diferença de latência tão grande assim. Mas vamos supor que, de fato, o 5G seja revolucionário e a gente parta para uma latência quase inexistente, então a gente está falando que transmitir um vídeo, por exemplo, dos EUA para o Brasil, levaria menos de milésimos de segundo, e que seria possível transmitir imagens em 4K a 60 FPS, tudo sendo processados num datacenter do Google lá nos EUA e recebendo inputs numa velocidade rápida, também, então a latência ficaria tão baixa que daria para compensar com recursos do próprio game. Os próprios jogos já têm alguns recursos de compensação de lag quando são jogos multiplayer. Com isso, o browser se tornaria auto-suficiente, você conseguiria trazer os jogos mais perfeitos, realistas, para serem renderizados direto no navegador. Hoje, a gente já tem suporte streaming, já tem tecnologia de buffer array, tem sockets bidirecionais, gerenciados de inputs de teclado, mouse e joystick, então é totalmente possível. Obviamente, é preciso respeitar essa “licença poética” e entender que o 5G precisa trazer muita coisa, mas muita coisa mais mesmo, diferente do que a gente tem com o 4G, pra gente conseguir ter essa mudança acontecendo efetivamente.

Eu vou fazer outro post, muito mais técnico do que esse aqui, falando o que muda pra gente como programador. Esse aqui é um overview geral da mudança que a internet está passando, mas, pra gente, o que é que muda? A forma de programar vai mudar também. Se você pensou que se especializar num framework era a melhor coisa pra sua vida, seus dias estão contados. A forma de programar está mudando, e o que é mais impressionante, não é nada inovador, não é nada novo. A gente está trazendo as “velharias” dos anos 80 e 90 de volta. O React ou o Angular que você está usando, não tem nada de novo, orientação a componente existe desde os anos 80. Quem se lembra do Delphi, entre várias outras soluções que utilizavam orientação a componente, sabe não tem nada de novo. Se você é muito novo e não pegou essa época, você deve estar achando a oitava maravilha do mundo, mas é tudo conceito antigo. Mas eu vou deixar esse conteúdo mais técnico para um próximo post. A gente se vê numa próxima, valeu!

Para quem gosta de entender a origem das coisa, eu vou deixar linkada uma série de post onde eu conto a história da internet, pela perspectiva de quem viveu boa parte dessas mudanças:

O conteúdo deste post foi retirado do vídeo “A Internet Esta Mudando E Você Nem Viu”: