Vývojári projektu Bottles nedávno prostredníctvom blogového príspevku odhalili podrobnosti o práci, ktorú budú vykonávať na projekte Bottles Next, čo je iniciatíva zameraná na kompletné prepracovanie architektúry a kódovej základne projektu.
Vo vyhlásení sa uvádza, že súčasná verzia Bottles, napísaná v jazyku Python s rozhraním založeným na GTK, čelí značným obmedzeniam , ktoré bránia začleneniu nových funkcií, ako je podpora pre macOS, a predstavuje problémy, ktoré možno vyriešiť iba zásadnou štrukturálnou zmenou.
Pred viac ako rokom sme oznámili Bottles Next, kompletné prepísanie projektu Bottles. Pôvodnou myšlienkou bolo využiť webové technológie na dosiahnutie zážitku, ktorý sme si pre našich používateľov predstavovali. Ako to však často býva, prebiehal rozsiahly výskum, debata, experimenty a neustále prehodnocovanie.
Prečo prechádzať všetkými týmito problémami? No, aby sme sa uistili, že robíme správne rozhodnutia.
Po oznámení sme začali experimentovať s mnohými technológiami, no predovšetkým sme počúvali spätnú väzbu od komunity, najmä tie, ktoré sa týkali Electronu. To nás podnietilo preskúmať ďalšie cesty, ktoré nás viedli k vytvoreniu prototypov frameworku prispôsobených špecifickým potrebám Bottles Next.
A dnes sme tu.
Preto nový prístup rozdeľuje aplikáciu na tri hlavné komponenty:
- Klient: zodpovedný za grafické rozhranie
- Server: zodpovedný za logiku spúšťania aplikácií a správu predpôn Wine
- Agent: ktorý funguje v rámci Wine a interaguje priamo s Windows API.
Hoci sa pôvodne uvažovalo o implementácii klienta pomocou webových technológií ako Electron a VueJS a vývoji servera v jazyku Go, reakcia komunity a výsledky dosiahnuté s prototypmi viedli vývojárov k opusteniu tejto myšlienky.
Preto sa nakoniec rozhodlo použiť Rust pre klienta aj server, zatiaľ čo grafické rozhranie by bolo založené na frameworku libcosmic. Tento framework, používaný v desktopovom prostredí COSMIC, je rozšírením knižnice iced , ktorá uľahčuje vytváranie moderných a škálovateľných grafických rozhraní. Libcosmic prijíma reaktívny programovací model a riadi sa architektúrou podobnou deklaratívnemu jazyku Elm, čo uľahčuje pochopenie pre vývojárov, ktorí sú s týmto prístupom oboznámení.

Hoci by vývojári uprednostnili prácu s jazykom Go, nakoniec sa rozhodli pre Rust kvôli obmedzenej dostupnosti kvalitných nástrojov na vývoj grafických rozhraní v jazyku Go. Napriek tomuto prechodu nová architektúra zahŕňa aj plány na zachovanie klasickej verzie rozhrania ako voliteľnej možnosti, ktorá používateľom ponúka známy zážitok a zároveň sa prispôsobuje novým štandardom a technológiám.
Pokiaľ ide o vykresľovanie, Bottles Next bude podporovať enginy ako Vulkan, Metal, DX12, OpenGL 2.1+ a OpenGL ES 2.0+, čo zabezpečí širokú prispôsobivosť rôznym systémom a hardvéru. Tento redizajn sľubuje lepší výkon, rozšírenie kompatibility medzi platformami a poskytnutie robustnejšieho základu pre budúci vývoj Bottles.
Táto aktualizácia ovplyvňuje Bottles Legacy (aktuálna verzia Bottles) aj Bottles Next. V najbližších týždňoch bude dokončená prvá verzia cpak. Je to prenosný, deduplikovaný formát distribúcie softvéru založený výlučne na obrázkoch OCI.
Taktiež sa uvádza, že agent Bottles Next, ktorý funguje v prostredí Windows generovanom pomocou Wine, bude napísaný v jazyku C# s použitím rozhrania .NET. Táto voľba rieši špecifické potreby služby WineBridge, ktorá vyžaduje efektívnu integráciu s rozhraním Windows API v emulovanom prostredí.
Pokiaľ ide o vývoj, očakáva sa , že o niekoľko týždňov bude vydaný kontajner na testovanie počiatočného prototypu Bottles Next, napísaného výlučne v Ruste . Zatiaľ je k dispozícii iba základná demo verzia, ktorá používateľom umožňuje získať predbežnú predstavu o možnostiach a smerovaní projektu. Tento prechod na Bottles Next sľubuje významné zlepšenia funkčnosti, kompatibility a výkonu.
Na záver, ak sa chcete o tom dozvedieť viac , podrobnosti nájdete na nasledujúcom odkaze.