Muitíssimo obrigado pelo feedback, pessoal! Estou realmente feliz com essa discussão.
O ponto central que percebi é o uso excessivo de bibliotecas externas espalhadas pelo projeto. Não tenho nada contra libs em si, mas quando elas estão profundamente entranhadas no código, qualquer alteração se torna complicada e arriscada.
Entendo o argumento de trazer o código externo para dentro do projeto, assumindo a responsabilidade de mantê-lo. Mas existem alguns contras:
No contexto atual, não usar libs externas muitas vezes equivale a improdutividade. Prazos apertados, times desalinhados e sem comando central tornam o trabalho caótico.
Muitas libs são enormes; você quer apenas a funcionalidade, não ler e manter toda a base de código. Vulnerabilidades surgem, atualizações são constantes — manter tudo manualmente dentro do projeto é um retrabalho enorme.
Mesmo trazendo o código para dentro, manter a lib isolada facilita atualizar e substituir versões, sem quebrar padrões de uso, props ou instâncias.
Dito isso, sou super a favor de código próprio. Quase todos os componentes que uso eu crio do zero: entendo, controlo e distribuo como preciso. É muito mais produtivo no meu contexto.
Mas em alguns casos, não aproveitar recursos externos é contraproducente. Um bom exemplo é o SDK do Jitsi para videoconferências: reinventar algo tão robusto seria perda de tempo, mesmo que fosse implementada uma camada de domínio própria para centralizar o uso.
Então, minha visão é que libs externas são válidas, desde que bem abstraídas e gerenciáveis, para não tornar qualquer alteração ou atualização uma emergência.
No fim das contas, gosto de lembrar de uma frase que resume bem:
Se você quer realmente fazer uma torta de maçã do zero, terá que recriar o universo primeiro.