Este artículo del blog de gethopp.app, escrito por Costas Alexoglou, detalla las frustraciones experimentadas al trabajar con WebKit, el motor de renderizado utilizado por Safari y otras aplicaciones. El problema surge porque Hopp, una aplicación de programación remota de baja latencia, requiere un control preciso sobre el rendimiento y la compatibilidad, algo que WebKit a menudo dificulta.
Inicialmente, Hopp eligió Tauri como framework para facilitar el desarrollo multiplataforma (macOS, Windows, Linux). Sin embargo, a medida que la aplicación evolucionó, se encontraron con una serie de problemas con WebKit. Estos incluyen la representación incorrecta de sombras SVG, errores inexplicables en iOS que provocan bloqueos de la página, una versión del agente de usuario desactualizada que dificulta la compatibilidad con ciertas funciones (como la integración de Krisp para cancelación de ruido), y problemas con la gestión de audio que generan ruidos extraños o reducción del volumen. Además, WebKit tiene un soporte limitado para códecs modernos como AV1, lo que obliga a soluciones alternativas para garantizar la compatibilidad con todos los dispositivos. Un problema particularmente grave fue la falta de soporte nativo de WebRTC en WebKitGTK, lo que bloqueó el desarrollo de soporte para Linux.
Para solucionar algunos de estos problemas, el equipo de Hopp ha recurrido a soluciones temporales como el 'monkey patching' de bibliotecas externas y el uso de IntersectionObserver para cargar elementos de forma diferida. Sin embargo, la acumulación de estos problemas ha llevado a la decisión de migrar partes críticas de la interfaz de usuario de Hopp a Rust, utilizando el framework iced. Esta decisión no es una adhesión ciega a Rust, sino una respuesta pragmática a las limitaciones y la imprevisibilidad de WebKit en su contexto específico. La migración a Rust permitirá un mayor control sobre el rendimiento y la compatibilidad, cruciales para la experiencia de usuario de Hopp. El artículo concluye con la esperanza de que esta transición resuelva los problemas persistentes y permita a Hopp ofrecer una experiencia de programación remota más fluida y confiable.
