Vývojári programu Bottles, ktorý ponúka rozhranie na zjednodušenie inštalácie, konfigurácie a spúšťania aplikácií Windows v prostredí Linux, zverejnili informácie o rozvoji iniciatívy Bottles Next, ktorá je zameraná na úplné prepracovanie architektúry a kódu projektu. Uvádza sa, že existujúca monolitná aplikácia v Pythone s rozhraním na GTK neumožňuje realizovať mnohé nápady, ako je podpora pre macOS, obmedzuje možnosti a vedie k problémom, ktoré nie sú riešiteľné bez radikálnej zmeny architektúry.
Nová architektúra predpokladá rozdelenie aplikácie na tri samostatné komponenty: klient s implementáciou grafického užívateľského rozhrania, server s logikou spúšťania aplikácií a správy predvoľieb Wine a agent, ktorý beží pod Wine a interaguje s API Windows. Pôvodne sa plánovalo použiť na implementáciu klienta webové technológie (Electron a VueJS), ale server mal byť napísaný v jazyku Go, no vytvorené prototypy a odmietnutie zo strany komunity myšlienky prechodu na motor Electron prinútili vývojárov vzdať sa tohto plánu.
Nakoniec sa rozhodli použiť na vývoj klienta servera jazyk Rust a grafické rozhranie postaviť na báze frameworku libcosmic. Libcosmic sa používa v prostredí desktopu COSMIC a predstavuje nadstavbu nad knižnicou iced, ktorá poskytuje funkcie pre vytváranie grafických aplikácií a appletov. Na vývoj sa používa model reaktívneho programovania a architektúra, na ktorú sú zvyknutí vývojári oboznámení s jazykom deklaratívneho konštruovania rozhraní Elm. Na renderovanie môžu byť použité engine založené na Vulkan, Metal, DX12, OpenGL 2.1+ a OpenGL ES 2.0+.
Uvádza sa, že vývojárom by bolo pohodlnejšie používať jazyk Go, ale museli sa ho vzdať kvôli nedostatku kvalitných nástrojov na vývoj užívateľských rozhraní. Okrem nového zjednodušeného rozhrania sa plánuje ako možnosť ponechať tradičnú klasickú variantu rozhrania. Kód agenta bude napísaný v C# a .NET, čo je vysvetlené potrebou spúšťať službu WineBridge v prostredí Windows, ktoré vytvoril Wine. Kontajner na testovanie počiatočného prototypu Bottles Next, napísaného v Rust, plánujú zverejniť o niekoľko týždňov. V súčasnosti je dostupná len najjednoduchšia demo verzia.


Zdroj: opennet.ru
