O grande dilema do Deno

Aviso: tudo que você vai ler neste post é minha opinião pessoal e apenas isso.

O Deno chegou ao v1 com um objetivo grandioso em mente: destruir o Node. Não sou eu que estou dizendo, mas um dos desenvolvedores da equipe principal da nova tecnologia.

Alguns podem considerar esse objetivo exagerado, mas a minha opinião é de que o Deno tem sim bastante potencial, principalmente por:

  • ter uma forte integração com TypeScript
  • promises ao invés de callbacks
  • segurança (acesso restrito ao filesystem, network, etc)

Além disso, o idealizador do Deno é o mesmo do Node. Podemos esperar que a tecnologia mais nova conserte alguns problemas bem conhecidos da antiga.

Para saber que problemas são esses, assista a talk abaixo:

Dito tudo isso, na minha visão, existe um dilema que o Deno criou pra si mesmo que pode impedir com que tudo isso aconteça. E é este o tema deste post.

Mas antes disso, um pouco de história.

O open source moderno

Em 2012 o jQuery reinava praticamente sozinho, até surgirem algumas alternativas: Backbone, Knockout e Angular, só pra citar algumas. O grande vencedor desse conflito - pelo menos até 2015, quando o React ganhou os corações da comunidade - foi o Angular.

O curioso desse conflito, e o motivo do relato, é que um dos grandes argumentos favoráveis ao uso do Angular era quem estava por trás dele: o Google.

Não estou dizendo que o Angular não era tecnicamente capaz. Muito pelo contrário. Mas o meu ponto é que se o Angular não tivesse sido criado pelo Google, a história poderia ter sido muito diferente.

Isso, é claro, não vale só pro Angular. O mesmo argumento é equivalente pro React, que é do Facebook. Ter uma grande empresa por trás de um projeto open source pode ser fundamental pro sucesso do mesmo.

E se a gente quer falar de uma empresa com imensa participação em projetos open source, a gente tem que citar uma em especial.

A Microsoft pós-2014

Desde que o Satya Nadella assumiu como CEO da Microsoft em 2014, a estratégia da empresa - principalmente pensando no ambiente open source - mudou drasticamente. A antiga Microsoft, que era sinônimo de código fechado, se transformou radicalmente numa empresa com uma participação muito ativa na comunidade.

Só pra citar alguns exemplos de projetos com o dedo da Microsoft: TypeScript, VSCode e RxJS. Além disso, a empresa fez duas aquisições cruciais: o GitHub e o npm.

TypeScript, VSCode, GitHub e npm. Todos da Microsoft. Se você trabalha com desenvolvimento web em 2020, é praticamente impossível que você não use diariamente pelo menos um desses projetos.

Voltando pro Deno

Uma das características que mais chamam atenção do Deno, que é bem distinta de tudo que a comunidade web vem experimentando - com uma única exceção que comprova a regra, a linguagem Go - é a ausência de um package manager.

Existe inclusive uma certa nocividade contra o npm. Segue um trecho da página oficial do Deno, na seção auto-comparativa com o Node:

Deno does not use npm (...) It uses modules referenced as URLs or file paths Deno does not use package.json in its module resolution algorithm.

Bem, se o Deno não usa um package manager e não gosta do npm, como ele resolve módulos externos? O exemplo abaixo, também tirado da documentação oficial, ilustra esse cenário:

import * as log from "https://deno.land/std/log/mod.ts";

E é aqui que mora o perigo.

Pra entender o porquê, vamos conectar tudo o que sabemos até o momento:

  1. Um dos grandes benefícios do Deno é o suporte ao TypeScript de fábrica
  2. A Microsoft é dona do TypeScript
  3. Um projeto open source pode dar muito certo se tiver uma empresa grande ajudando
  4. O Deno não abraçou o npm
  5. A Microsoft também é dona do npm

Em outras palavras, seria muito interessante ter a Microsoft como grande aliada do Deno, mas isso será muito díficil enquanto o Deno mantiver essa atitude anti-npm.

Pense comigo: como a comunidade reagiria se o Deno tivesse todos os benefícios que tem e, além disso, tivesse também uma integração ainda melhor com o TypeScript, com o VSCode, com o npm e o nome da Microsoft por trás? A maioria já estaria planejando uma migração.

Mas não é isso que estamos vendo. Pelo contrário. O Deno vem sendo atacado - até de forma exagerada, eu diria - pela comunidade. O que é uma pena, porque é uma tecnologia que tem muito potencial, mas pode acabar morrendo antes de ter tido uma chance.

E este, pra mim, é o grande dilema do Deno: se ele realmente quer matar o Node, uma aliança com a Microsoft pode ser o caminho. Mas enquanto eles mantiverem essa atitude contra o npm, isso jamais vai ser possível.