Els desenvolupadors de Bottles van donar a conèixer fa pocs dies, mitjançant una publicació de bloc detalls sobre el treball que realitzaran sobre Bottles Next, una iniciativa destinada a redissenyar completament l'arquitectura i el codi base del projecte.
Al comunicat esmenten que la versió actual de Bottles, escrita a Python amb una interfície basada en GTK, enfronta limitacions significatives que dificulten la incorporació de noves funcionalitats, com el suport per a macOS, i planteja problemes que només es poden resoldre mitjançant un canvi estructural profund.
Fa més d'un any, vam anunciar Bottles Next, una reescriptura completa del projecte Bottles. Inicialment, la idea era aprofitar les tecnologies web per aconseguir lexperiència que imaginem per als nostres usuaris. No obstant això, com sol passar, es van fer investigacions exhaustives, debats, experiments i reavaluacions contínues.
Per què passar per tots aquests problemes? Bé, per assegurar-nos prendre les decisions correctes.
Després de l'anunci, comencem a experimentar amb moltes tecnologies, però sobretot escoltem els comentaris de la comunitat, en particular els relacionats amb Electron. Això ens va impulsar a explorar altres camins, cosa que ens va portar a crear prototips de frameworks adaptats a les necessitats específiques de Bottles Next.
I aquí som avui.
És per això que el nou enfocament divideix l'aplicació en tres components principals:
- Un client: responsable de la interfície gràfica
- Un servidor: encarregat de la lògica per executar aplicacions i gestionar els prefixos de Wine
- Un agent: que opera dins de Wine per interactuar directament amb l'API de Windows.
Tot i que inicialment es va considerar implementar el client amb tecnologies web com Electron i VueJS, i desenvolupar el servidor a Go, la reacció de la comunitat i els resultats obtinguts amb els prototips van portar els desenvolupadors a abandonar aquesta idea.
És per això que, al final, es va decidir utilitzar Rust tant pel client com pel servidor, mentre que la interfície gràfica es basarà en el marc libcosmic. Aquest framework, utilitzat a l'entorn d'escriptori COSMIC, és una extensió de la biblioteca iced , que facilita la creació d'interfícies gràfiques modernes i escalables. Libcosmic adopta un model de programació reactiva i segueix una arquitectura similar a la del llenguatge declaratiu Elm, cosa que en facilita la comprensió per a desenvolupadors familiaritzats amb aquest enfocament.

Tot i que els desenvolupadors preferirien treballar amb el llenguatge Go, finalment van optar per Rust a causa de la limitada disponibilitat d'eines d'alta qualitat per desenvolupar interfícies gràfiques a Go. Tot i aquesta transició, la nova arquitectura també inclou plans per mantenir com a opció la versió clàssica de la interfície, oferint als usuaris una experiència familiar mentre s'adapta als nous estàndards i tecnologies.
En termes de renderitzat, Bottles Next serà compatible amb motors com Vulkan, Metall, DX12, OpenGL 2.1+ i OpenGL ES 2.0+, assegurant una àmplia adaptabilitat a diferents sistemes i maquinari. Aquest redisseny promet oferir més rendiment, estendre la compatibilitat multiplataforma i proporcionar una base més robusta per al futur desenvolupament de Bottles.
Aquesta actualització afecta tant Bottles Legacy (la versió actual de Bottles) com Bottles Next. En les properes setmanes es completarà la primera versió de cpak. És un format de distribució de programari portàtil i deduplicat basat íntegrament en imatges OCI.
També s'esmenta que l'agent de Bottles Next, que opera dins de l'entorn Windows generat per Wine, s'escriurà a C# utilitzant .NET. Aquesta elecció respon a les necessitats específiques del servei WineBridge, que requereix integrar-se eficientment amb l'API de Windows en un entorn emulat.
Pel que fa al desenvolupament, s'espera que en poques setmanes es publiqui un contenidor per provar el prototip inicial de Bottles Next, completament escrit a Rust. Ara com ara, només està disponible una versió de demostració bàsica, que permet als usuaris obtenir una idea preliminar de les capacitats i la direcció del projecte. Aquesta transició cap a Bottles Next promet millores significatives en funcionalitat, compatibilitat i rendiment.
Finalment, si estàs interessat en poder conèixer més sobre això , pots consultar els detalls al següent enllaç.