5 puntos por GN⁺ 2025-02-24 | 7 comentarios | Compartir por WhatsApp
  • Hace poco, el autor encontró unos viejos discos de vinilo de su abuelo y le sorprendió ver que este medio de otra época todavía se reproducía sin problemas
    • El vinilo trajo un gran cambio en la distribución de la música, al permitir su prensado y compartición, y sigue siendo un estándar hasta hoy
    • La forma de compartir audio ha evolucionado, pero los métodos iniciales siguen funcionando
    • En un mundo cada vez más complejo, muchas personas están volviendo al vinilo porque ofrece simplicidad, estabilidad y permanencia
  • En medio del cambio constante de las tecnologías web, es fácil olvidar que los sitios web antiguos todavía funcionan muy bien
    • Incluso los sitios web de texto simple de los años 90 cargan igual en los navegadores modernos
    • Con el tiempo, los sitios web adquirieron funciones adicionales como estilos con CSS, interactividad con JavaScript y actualizaciones en tiempo real mediante WebSockets
    • Sin embargo, su base sigue estando construida sobre páginas, formularios y sesiones
  • Ruby on Rails apareció hace 20 años como un enfoque integrado para construir aplicaciones web interactivas y basadas en bases de datos
    • Fue la base de muchas empresas exitosas como Airbnb, Shopify, Github, Instacart, Gusto y Square, y hoy negocios valuados en billones de dólares operan sobre Ruby on Rails
  • Las herramientas efectivas simplifican tareas complejas mediante la abstracción
    • Si pensamos en el automóvil, conducir antes requería entender el sistema de combustible, la sincronización y la mecánica del embrague, pero ahora la mayoría de los conductores ni siquiera sabe cuántas marchas tiene su vehículo
    • Ruby on Rails empaquetó buenas prácticas del desarrollo web, como sesiones de inicio de sesión, protección CSRF y ORM de base de datos, en un conjunto de herramientas accesible
    • Estas abstracciones permiten que los desarrolladores se concentren en crear productos en lugar de en detalles técnicos
    • Hoy en día, la mayoría de los desarrolladores no sabe qué contiene una cookie de inicio de sesión, pero aun así eso hace funcionar sus aplicaciones
  • Rails logró el éxito al mantenerse fiel a los elementos básicos de la web
    • Usa elementos fundamentales de HTML como páginas, campos de entrada y formularios
    • Como framework centrado en el backend, se enfoca en validar, procesar y almacenar datos, por lo que crear formularios es sencillo
  • JavaScript ganó protagonismo después del éxito inicial de Rails
    • Los avances del desarrollo web en la última década, en esencia, le dieron a los sitios web capacidades de apps de iPhone sin dejar de ser sitios web
  • Next.js ahora se usa como la herramienta más común para construir startups
    • Como framework centrado en el frontend, permite estados de carga dinámicos, renderizado del lado del servidor y construcción de componentes complejos
    • Otro grupo de empresas valuadas en billones de dólares se está construyendo sobre Next.js, y estas apps web son más rápidas y sofisticadas que las construidas con Ruby on Rails
  • Next.js y su tecnología base, React, están impulsando gran parte de la innovación web moderna
    • En esencia, productos de consumo masivo como Spotify, Netflix, Facebook y Stripe funcionan sobre este stack
    • Esto permite a los desarrolladores crear productos interactivos rápidos y personalizados más allá de los límites de los estándares web
  • A pesar de la rápida adopción de Next.js, Rails sigue siendo relevante
    • Nuevos proyectos, desde iniciativas independientes hasta empresas de IA, siguen eligiendo Rails
  • De hecho, la ola de nuevos frameworks web de JavaScript como Next.js ha hecho más difícil construir aplicaciones web
  • Estas herramientas ofrecen a los desarrolladores más capacidades, como renderizado de datos dinámicos e interacciones en tiempo real, pero a cambio reducen el nivel de abstracción
  • Next.js compite de verdad con las apps nativas de iPhone
    • Antes, para ofrecer una experiencia de usuario sofisticada, una startup necesitaba una app para iPhone, y construirla solía ser un proceso complejo que requería varios desarrolladores especializados
    • Next.js permitió que los sitios web se acercaran a la calidad de una app para iPhone
    • Hoy, algunos de los productos más sofisticados, como Linear y ChatGPT, fueron lanzados como aplicaciones de Next.js, dejando las apps móviles como prioridad secundaria.
  • Rails ha evolucionado durante los 20 años desde su lanzamiento y añadió interactividad con JavaScript, gestión de trabajos de backend, estados de carga y herramientas para aplicaciones en tiempo real, entre otras cosas
    • También es compatible con el desarrollo de apps móviles. A medida que los patrones de aplicación evolucionaron, Rails integró esos patrones como funciones del framework mientras mantenía su base en HTML
  • La mayoría de las aplicaciones web todavía están compuestas por formularios dentro de páginas
    • Esto incluye bolsas de trabajo, sistemas de proveedores y tiendas de comercio electrónico
    • Next.js puede construirlas, pero requiere más tiempo de desarrollo en comparación con Rails
    • Usar un framework de vanguardia genera inestabilidad por medio de actualizaciones frecuentes, nuevas librerías y problemas inesperados
    • Las aplicaciones de Next.js a menudo dependen de múltiples servicios de terceros como Vercel, Resend y Temporal, lo que incrementa el riesgo de plataforma
  • Los desarrolladores siguen eligiendo Rails hoy porque, incluso 20 años después, sigue siendo la forma más simple y abstracta de construir aplicaciones web
    • Los desarrolladores solitarios pueden crear por su cuenta aplicaciones web dinámicas y en tiempo real, y los equipos empresariales pueden construir aplicaciones con múltiples modelos y controles de acceso, con soporte para pruebas exhaustivas
    • Rails ayuda a equipos pequeños a trabajar más rápido y a reducir los costos de desarrollo y mantenimiento
  • El autor tiene experiencia usando ambos frameworks
    • Construyó Find AI, una startup de IA financiada con capital de riesgo, con Rails
    • Como motor de búsqueda, se benefició de la capacidad de Rails para manejar trabajos complejos de backend junto con requisitos simples de frontend
    • Actualmente está trabajando en Chroma Cloud para explorar y gestionar grandes conjuntos de datos, y Next.js satisface sus necesidades de interactividad avanzada y carga de datos
  • Rails empieza a mostrar señales de envejecimiento en la actual ola de aplicaciones impulsadas por IA
    • Tiene dificultades en áreas como el streaming de texto de LLM (modelos de lenguaje de gran tamaño), el procesamiento paralelo en Ruby y un soporte fuerte de tipos para herramientas de programación con IA.
    • Aun así, sigue siendo una herramienta efectiva
  • El vinilo amplió el acceso a la música y transformó la industria
    • Con el tiempo, la calidad del sonido mejoró, pero los formatos iniciales siguen teniendo valor
    • The Köln Concert sigue siendo popular sin importar el bitrate
    • En el mundo de la tecnología pasa lo mismo: al mismo tiempo que podemos disfrutar productos sofisticados como Linear, un sitio web con estilo noventero como Craigslist todavía puede generar más ingresos.
  • Al final, a los usuarios les importa más la utilidad del producto que la forma en que fue implementado
    • La sofisticación visual puede desvanecerse, pero la utilidad permanece

7 comentarios

 
jhj0517 2025-02-24

Airbnb, Shopify, Github... ¡hay más empresas de las que pensaba usando Ruby on Rails! 😊

 
thinkpad 2025-02-24

No tenía idea de que GitHub estuviera desarrollado con Rails. Que GitLab sí esté desarrollado con Rails es correcto... y la verdad es que GitLab usó Rails tan bien que se me quedó grabado por mucho tiempo.

 
hahnlee 2025-02-24

Al principio, GitHub construyó su red alrededor de la comunidad de Rails.
https://read.first1000.co/p/-github

Es un caso un poco distinto, pero hubo una ocasión en la que Egor Homakov señaló un problema de seguridad de Ruby on Rails, la Mass Assignment Vulnerability. Como era un problema que los desarrolladores podían evitar si tenían cuidado, hubo debate sobre si debía parchearse o no. (Porque se podía responder algo como RTFM).

El método que eligió Egor Homakov para reportarlo fue atacar GitHub, que en ese momento también funcionaba con Rails e incluso alojaba a Rails. Y de hecho tuvo éxito.

Así mostró que ni siquiera la aplicación más grande de Rails estaba libre de este caso.

Creo que era una elección entre confiar en los desarrolladores (gestión manual de memoria) o no confiar en ellos (GC, etc.), pero a mí me viene seguido a la mente cuando veo respuestas como RTFM o, en temas de seguridad, cuando se espera que “ya lo sepan y lo hagan bien”.

https://news.ycombinator.com/item?id=3666564

 
thinkpad 2025-02-25

Gracias. :)

 
thinkpad 2025-02-24

Gracias.

 
GN⁺ 2025-02-24
Opiniones de Hacker News
  • Mientras cientos de personas leen este artículo ahora mismo, en realidad están accediendo a él a través del Mac Mini que está sobre mi escritorio

  • Me gustan las apps web que básicamente solo tienen formularios CRUD. No aplica a todos los problemas, pero funciona bien en muchos dominios que interactúan con el mundo real. Algo como: "si quieres verificar si hay una cita, revisa la lista de citas"

    • En cambio, el patrón de "app" mezclado en un calendario integrado o un dashboard también es útil. Todo eso también se puede construir en Rails. Pero la simplicidad de una app CRUD es atractiva
    • Puedes construirlo en cualquier estilo y con la tecnología que quieras, pero Rails parece preferir "1 modelo = 1 concepto = 1 entidad REST"
    • Bibliotecas como Next.js parecen preferir "1 tarea/vista = conceptos mezclados = 1 pantalla específica"
  • La comunidad de Ruby/Rails es rara porque parece que la mitad está trabajando en silencio y la otra mitad tiene que recordar periódicamente que Rails no está muerto

    • No todo necesita IA
  • Rails está mostrando su edad en la ola de aplicaciones de IA. Tiene dificultades con el streaming de texto de LLM y el procesamiento en paralelo

    • En mi experiencia, funcionó muy fácilmente junto con Hotwire. Estoy operando una interfaz de chat con agentes en streaming en una app de Rails con miles de usuarios sin problemas
  • Recomiendo Django + gevent. Usa el sistema de tipos de Python y es adecuado para streaming y paralelismo ligado a IO. No es ideal para paralelismo ligado a CPU, pero eso importa menos en aplicaciones web

  • Se puede construir y mantener un meta framework web como RoR con Ruby, Django y el lenguaje D

    • Go y Rust son lenguajes increíbles, pero me pregunto por qué no han logrado crear un framework como Rails. Me pregunto si con el tiempo será posible, o si hay un problema fundamental
  • RoR es potente. Pero todo está cambiando tan rápido que da la sensación de que, si no sigues las tecnologías más recientes, te vas a quedar atrás

  • He escuchado críticas de que las herramientas de codificación con IA carecen de tipado fuerte, pero en mi experiencia los LLM funcionan bien en codebases de Rails

    • Rails tiene convenciones fuertes, así que los LLM pueden aprender bien incluso sin información de tipos. La esencia de Rails no ha cambiado mucho con el tiempo
  • Estoy usando Django y todo se siente nuevo. Estoy enviando HTML con htmx + alpine.js, y al alejarme de una API REST en JSON, mi productividad mejoró muchísimo

  • RoR es excelente. Ruby necesita crecer más allá de eso

    • Trabajé en una empresa que tuvo que elegir entre reescribir una app de Django a Python 3 o reescribirla en RoR, y eligió lo segundo. Muchas ideas que llegaron a Django comenzaron en RoR
    • También se necesita innovación en otras áreas donde está Python. Ruby necesita ser adoptado, como lo fue Rails, en computación científica, machine learning/IA, análisis de datos, etc.
  • En la década de 2010 se popularizó el enfoque de convenciones sobre configuración

    • Angular, EmberJS, Django y Rails eran muy populares
    • Los stacks modernos se movieron hacia React/NextJS con backends personalizados
    • Me pregunto si NextJS es el mejor enfoque de "convenciones sobre configuración" para React