Los desarrolladores de Bottles dieron a conocer hace pocos días, mediante una publicación de blog detalles sobre el trabajo que realizaran sobre Bottles Next, una iniciativa destinada a rediseñar por completo la arquitectura y el código base del proyecto.
En el comunicado mencionan que la versión actual de Bottles, escrita en Python con una interfaz basada en GTK, enfrenta limitaciones significativas que dificultan la incorporación de nuevas funcionalidades, como el soporte para macOS, y plantea problemas que solo pueden resolverse mediante un cambio estructural profundo.
Hace más de un año, anunciamos Bottles Next , una reescritura completa del proyecto Bottles. Inicialmente, la idea era aprovechar las tecnologías web para lograr la experiencia que imaginamos para nuestros usuarios. Sin embargo, como suele suceder, se realizaron investigaciones exhaustivas, debates, experimentos y reevaluaciones continuas.
¿Por qué pasar por todos estos problemas? Bueno, para asegurarnos de tomar las decisiones correctas.
Tras el anuncio, comenzamos a experimentar con muchas tecnologías, pero, sobre todo, escuchamos los comentarios de la comunidad, en particular los relacionados con Electron. Esto nos impulsó a explorar otros caminos, lo que nos llevó a crear prototipos de frameworks adaptados a las necesidades específicas de Bottles Next.
Y aquí estamos hoy.
Es por ello que el nuevo enfoque divide la aplicación en tres componentes principales:
- Un cliente: responsable de la interfaz gráfica
- Un servidor: encargado de la lógica para ejecutar aplicaciones y gestionar los prefijos de Wine
- Un agente: que opera dentro de Wine para interactuar directamente con la API de Windows.
Aunque inicialmente se consideró implementar el cliente con tecnologías web como Electron y VueJS, y desarrollar el servidor en Go, la reacción de la comunidad y los resultados obtenidos con los prototipos llevaron a los desarrolladores a abandonar esta idea.
Es por ello que, al final, se decidió utilizar Rust tanto para el cliente como para el servidor, mientras que la interfaz gráfica se basará en el marco libcosmic. Este framework, utilizado en el entorno de escritorio COSMIC, es una extensión de la biblioteca iced, que facilita la creación de interfaces gráficas modernas y escalables. Libcosmic adopta un modelo de programación reactiva y sigue una arquitectura similar a la del lenguaje declarativo Elm, lo que facilita su comprensión para desarrolladores familiarizados con este enfoque.
Aunque los desarrolladores preferirían trabajar con el lenguaje Go, finalmente optaron por Rust debido a la limitada disponibilidad de herramientas de alta calidad para desarrollar interfaces gráficas en Go. A pesar de esta transición, la nueva arquitectura también incluye planes para mantener como opción la versión clásica de la interfaz, ofreciendo a los usuarios una experiencia familiar mientras se adapta a los nuevos estándares y tecnologías.
En términos de renderizado, Bottles Next será compatible con motores como Vulkan, Metal, DX12, OpenGL 2.1+ y OpenGL ES 2.0+, asegurando una amplia adaptabilidad a diferentes sistemas y hardware. Este rediseño promete ofrecer un mayor rendimiento, extender la compatibilidad multiplataforma y proporcionar una base más robusta para el futuro desarrollo de Bottles.
Esta actualización afecta tanto a Bottles Legacy (la versión actual de Bottles) como a Bottles Next. En las próximas semanas se completará la primera versión de cpak . Se trata de un formato de distribución de software portátil y deduplicado basado íntegramente en imágenes OCI.
Se menciona también que el agente de Bottles Next, que opera dentro del entorno Windows generado por Wine, se escribirá en C# utilizando .NET. Esta elección responde a las necesidades específicas del servicio WineBridge, que requiere integrarse eficientemente con la API de Windows en un entorno emulado.
En cuanto al desarrollo, se espera que en unas pocas semanas se publique un contenedor para probar el prototipo inicial de Bottles Next, completamente escrito en Rust. Por ahora, solo está disponible una versión de demostración básica, que permite a los usuarios obtener una idea preliminar de las capacidades y la dirección del proyecto. Esta transición hacia Bottles Next promete mejoras significativas en funcionalidad, compatibilidad y rendimiento.
Finalmente, si estás interesado en poder conocer más al respecto, puedes consultar los detalles en el siguiente enlace.
Continúar leyendo...