5 pontos por GN⁺ 2025-02-24 | 7 comentários | Compartilhar no WhatsApp
  • Recentemente, o autor encontrou os velhos discos de vinil do avô e ficou surpreso ao ver que esse meio de uma era anterior ainda reproduz perfeitamente sem problemas
    • O vinil trouxe uma grande mudança para a distribuição de música, tornando a prensagem e o compartilhamento possíveis, e continua sendo um padrão até hoje
    • As formas de compartilhar áudio evoluíram, mas os métodos iniciais ainda continuam funcionando
    • Em um mundo cada vez mais complexo, muitas pessoas estão voltando ao vinil, que oferece simplicidade, estabilidade e durabilidade
  • Em meio às mudanças constantes da tecnologia web, é fácil esquecer que sites antigos ainda funcionam muito bem
    • Até sites simples de texto dos anos 1990 carregam nos navegadores modernos exatamente como naquela época
    • Com o tempo, os sites ganharam recursos adicionais, como estilização via CSS, interatividade via JavaScript e atualizações em tempo real via WebSockets
    • No entanto, sua base continua sendo páginas, formulários e sessões
  • Ruby on Rails surgiu há 20 anos como uma abordagem integrada para criar aplicações web interativas e baseadas em banco de dados
    • Tornou-se a base de inúmeras empresas bem-sucedidas, como Airbnb, Shopify, Github, Instacart, Gusto e Square, e hoje negócios de trilhões de dólares operam sobre Ruby on Rails
  • Ferramentas eficazes simplificam tarefas complexas por meio de abstrações
    • Usando o carro como exemplo, dirigir antes exigia entender sistema de combustível, sincronização e mecânica da embreagem, mas hoje a maioria dos motoristas nem sabe quantas marchas seu carro tem
    • Ruby on Rails empacotou boas práticas de desenvolvimento web, como sessões de login, proteção contra CSRF e ORM de banco de dados, em um conjunto de ferramentas acessível
    • Essas abstrações permitem que os desenvolvedores se concentrem em criar o produto, em vez de nos detalhes técnicos
    • Hoje, a maioria dos desenvolvedores não sabe o que existe dentro dos cookies de login, mas é isso que mantém a aplicação funcionando
  • Rails teve sucesso por permanecer fiel aos elementos básicos da web
    • Usa fundamentos do HTML, como páginas, campos de entrada e formulários
    • Como framework centrado no backend, foca em validar, processar e armazenar dados, tornando a criação de formulários simples
  • O JavaScript ganhou destaque após o sucesso inicial do Rails
    • Os avanços no desenvolvimento web da última década basicamente deram aos sites funcionalidades de apps de iPhone, sem deixarem de ser sites
  • Next.js agora é a ferramenta mais comum para construir startups
    • Como framework centrado no frontend, permite estados de carregamento dinâmicos, renderização no lado do servidor e construção de componentes complexos
    • Outra leva de empresas de trilhões de dólares está sendo construída sobre Next.js, e esses apps web são mais rápidos e sofisticados do que os criados com Ruby on Rails
  • Next.js e sua tecnologia base, React, impulsionam grande parte da inovação web moderna
    • Basicamente, produtos de consumo populares como Spotify, Netflix, Facebook e Stripe rodam todos sobre essa stack
    • Isso permite que desenvolvedores criem produtos interativos rápidos e personalizados, indo além dos limites dos padrões da web
  • Mesmo com a rápida adoção do Next.js, o Rails continua relevante
    • Novos projetos, de iniciativas independentes a empresas de IA, ainda escolhem Rails
  • Na prática, a onda de novos frameworks web em JavaScript, como Next.js, tornou mais difícil construir apps web
  • Essas ferramentas dão aos desenvolvedores mais recursos, como renderização de dados dinâmicos e interações em tempo real, mas em troca reduzem o nível de abstração
  • Next.js compete de fato com apps nativos de iPhone
    • Antes, startups precisavam de apps de iPhone para oferecer experiências de usuário sofisticadas, e construir esses apps frequentemente era um processo complexo que exigia vários desenvolvedores especializados
    • Next.js permitiu que sites se aproximassem da qualidade de apps de iPhone
    • Hoje, alguns dos produtos mais sofisticados, como Linear e ChatGPT, foram lançados como aplicações Next.js, tratando os apps móveis como prioridade secundária.
  • Ao longo dos 20 anos desde seu lançamento, Rails evoluiu e adicionou interações em JavaScript, gerenciamento de tarefas de backend, estados de carregamento e ferramentas para aplicações em tempo real
    • Também dá suporte ao desenvolvimento de apps móveis. À medida que os padrões de aplicação evoluíram, o Rails integrou esses padrões como recursos do framework, mantendo sua base em HTML
  • A maioria das aplicações web ainda é composta por formulários em páginas
    • Quadros de vagas, sistemas de fornecedores e lojas de e-commerce se enquadram nisso
    • Next.js pode construir isso, mas exige mais tempo de desenvolvimento em comparação com Rails
    • Usar um framework de ponta traz instabilidade por meio de atualizações frequentes, novas bibliotecas e problemas inesperados
    • Aplicações Next.js frequentemente dependem de vários serviços de terceiros, como Vercel, Resend e Temporal, aumentando o risco de plataforma
  • Desenvolvedores ainda escolhem Rails hoje porque, mesmo após 20 anos, ele continua sendo a forma mais simples e abstrata de construir aplicações web
    • Desenvolvedores solo conseguem criar aplicações web dinâmicas e em tempo real de forma independente, e equipes enterprise podem construir aplicações com vários modelos e controles de acesso, com suporte a testes rigorosos
    • Rails ajuda equipes pequenas a trabalhar mais rápido, reduzindo custos de desenvolvimento e manutenção
  • O autor tem experiência com ambos os frameworks
    • Construiu a Find AI, uma startup de IA financiada por venture capital, com Rails
    • Como mecanismo de busca, ela se beneficiou da capacidade do Rails de lidar com tarefas complexas de backend junto com requisitos simples de frontend
    • Atualmente, está trabalhando no Chroma Cloud para explorar e gerenciar grandes conjuntos de dados, e o Next.js atende às exigências avançadas de interatividade e carregamento de dados
  • Rails começa a mostrar sinais de idade na atual onda de aplicações impulsionadas por IA
    • Enfrenta dificuldades em áreas como streaming de texto de LLM (grandes modelos de linguagem), processamento paralelo em Ruby e suporte forte a tipos para ferramentas de programação com IA.
    • Ainda assim, continua sendo uma ferramenta eficaz
  • O vinil ampliou o acesso à música e transformou a indústria
    • Com o tempo, a qualidade de áudio melhorou, mas o formato inicial ainda tem valor
    • The Köln Concert continua popular independentemente do bitrate
    • No mundo da tecnologia, vale o mesmo: ao mesmo tempo em que podemos desfrutar de produtos sofisticados como Linear, um site em estilo anos 90 como o Craigslist ainda pode gerar mais receita.
  • No fim, os usuários se importam mais com a utilidade de um produto do que com a forma como ele é implementado
    • O refinamento visual pode desaparecer, mas a utilidade permanece

7 comentários

 
jhj0517 2025-02-24

Airbnb, Shopify e Github — tem mais empresas usando Ruby on Rails do que eu imaginava!! 😊

 
thinkpad 2025-02-24

É a primeira vez que ouço que o GitHub foi desenvolvido em Rails. Já o GitLab ter sido desenvolvido em Rails está correto... O GitLab realmente usou Rails muito bem, então isso acabou ficando marcado na memória por bastante tempo.

 
hahnlee 2025-02-24

No início do GitHub, eles construíram a rede em torno da comunidade Rails.
https://read.first1000.co/p/-github

É um caso um pouco diferente, mas houve um episódio em que Egor Homakov apontou um problema de segurança no Ruby on Rails (Mass Assignment Vulnerability). Como era um problema que poderia ser evitado se o desenvolvedor tomasse cuidado, houve discussão sobre se isso deveria mesmo ser corrigido ou não. (Dava até para responder com algo como RTFM.)

O método que Egor Homakov escolheu para reportar isso foi atacar o GitHub, que na época também rodava em Rails e, inclusive, hospedava o Rails. E ele realmente conseguiu.

Assim, ficou demonstrado que nem o maior app em Rails estava livre desse caso.

Acho que era uma escolha entre confiar no desenvolvedor (gerenciamento manual de memória) ou não confiar nele (GC etc.), mas eu costumo me lembrar disso quando vejo respostas do tipo RTFM ou, em segurança, quando se espera que alguém "saiba e faça direito".

 
thinkpad 2025-02-25

Obrigado. :)

 
thinkpad 2025-02-24

Obrigado.

 
GN⁺ 2025-02-24
Comentários no Hacker News
  • Enquanto centenas de pessoas leem este artigo agora, vocês estão acessando através do Mac Mini em cima da minha mesa

  • Gosto de aplicativos web que são apenas formulários CRUD. Não se aplica a todos os problemas, mas funciona bem em muitos domínios de problema que interagem com o mundo real. É algo como: "se quiser saber se há um compromisso, confira a lista de compromissos"

    • Por outro lado, o padrão de "app" misturado em um calendário integrado ou dashboard também é útil. Tudo isso também pode ser construído em Rails. Ainda assim, a simplicidade de um app CRUD é atraente
    • Você pode construir em qualquer estilo, com a tecnologia que quiser, mas o Rails parece preferir "1 modelo = 1 conceito = 1 entidade REST"
    • Bibliotecas como Next.js parecem preferir "1 tarefa/visão = conceitos misturados = 1 tela específica"
  • A coisa estranha da comunidade Ruby/Rails é que metade está silenciosamente fazendo o trabalho, e a outra metade parece precisar lembrar periodicamente que Rails não morreu

    • Nem tudo precisa de IA
  • Rails está mostrando a idade nesta onda de aplicações de IA. Está tendo dificuldades com streaming de texto de LLM e processamento paralelo

    • Na minha experiência, funcionou com muita facilidade junto com Hotwire. Estou operando uma interface de chat com agentes em streaming em um app Rails com milhares de usuários, sem problemas
  • Recomendo Django + gevent. Usa o sistema de tipos do Python e é adequado para streaming e paralelismo limitado por IO. Não é adequado para paralelismo limitado por CPU, mas isso importa menos em aplicações web

  • Dá para construir e manter meta web frameworks como RoR em Ruby, Django e na linguagem D

    • Go e Rust são linguagens incríveis, mas fico me perguntando por que não conseguem criar um framework como Rails. Não sei se será possível com o tempo ou se existe um problema fundamental
  • RoR é poderoso. Mas tudo está mudando tão rápido que dá a sensação de que, se você não acompanhar a tecnologia mais recente, vai ficar para trás

  • Já ouvi críticas de que as ferramentas de programação com IA sofrem por falta de tipagem forte, mas, na minha experiência, LLMs funcionam bem em codebases Rails

    • Rails tem convenções fortes, então mesmo sem informações de tipos os LLMs conseguem aprender bem. O núcleo do Rails não mudou tanto ao longo do tempo
  • Estou usando Django, e tudo parece novo. Estou usando htmx + alpine.js para enviar HTML e, ao sair de uma API REST JSON, minha produtividade melhorou bastante

  • RoR é excelente. Ruby precisa crescer além disso

    • Trabalhei em uma empresa que precisou escolher entre reescrever um app Django para Python 3 ou reescrevê-lo em RoR, e escolheu a segunda opção. Muitas ideias que chegaram ao Django começaram no RoR
    • Outras áreas onde Python está presente também precisam de inovação. Computação científica, machine learning/IA, análise de dados etc. precisam que Ruby seja adotada como Rails foi
  • Nos anos 2010, a abordagem de convenção sobre configuração ganhou popularidade

    • Angular, EmberJS, Django e Rails eram muito populares
    • A stack moderna migrou para backends personalizados com React/NextJS
    • Fico me perguntando se NextJS é a abordagem de "convenção sobre configuração" mais adequada para React