Udviklerne af Bottles afslørede for nylig , via et blogindlæg , detaljer om det arbejde, de vil udføre på Bottles Next, et initiativ, der sigter mod at fuldstændigt redesigne projektets arkitektur og kodebase.
I erklæringen nævnes det, at den nuværende version af Bottles, skrevet i Python med en GTK-baseret brugerflade, står over for betydelige begrænsninger , der hindrer integrationen af nye funktioner, såsom macOS-understøttelse, og skaber problemer, der kun kan løses gennem en dybtgående strukturel ændring.
For over et år siden annoncerede vi Bottles Next, en komplet omskrivning af Bottles-projektet. Oprindeligt var ideen at udnytte webteknologier til at opnå den oplevelse, vi havde forestillet os for vores brugere. Men som det ofte er tilfældet, var der omfattende forskning, debat, eksperimenter og løbende re-evaluering.
Hvorfor gå igennem alle disse problemer? Nå, for at sikre, at vi træffer de rigtige beslutninger.
Efter annonceringen begyndte vi at eksperimentere med mange teknologier, men frem for alt lyttede vi til feedback fra fællesskabet, især dem, der var relateret til Electron. Dette fik os til at udforske andre veje, hvilket førte os til at skabe rammeprototyper tilpasset Bottles Nexts specifikke behov.
Og her er vi i dag.
Derfor opdeler den nye tilgang applikationen i tre hovedkomponenter:
- En klient: ansvarlig for den grafiske grænseflade
- En server: ansvarlig for logikken til at køre applikationer og administrere vinpræfikser
- En agent: som opererer i Wine for at interagere direkte med Windows API.
Selvom det oprindeligt blev overvejet at implementere klienten med webteknologier som Electron og VueJS og udvikle serveren i Go, førte reaktionen fra fællesskabet og de resultater, der blev opnået med prototyperne, til, at udviklerne opgav denne idé.
Derfor blev det i sidste ende besluttet at bruge Rust til både klienten og serveren, mens den grafiske brugerflade skulle baseres på libcosmic-frameworket. Dette framework, der bruges i COSMIC-skrivebordsmiljøet, er en udvidelse af iced- biblioteket , hvilket letter oprettelsen af moderne og skalerbare grafiske brugerflader. Libcosmic anvender en reaktiv programmeringsmodel og følger en arkitektur, der ligner den deklarative Elm-sprog, hvilket gør det lettere for udviklere, der er bekendt med denne tilgang, at forstå.

Selvom udviklerne ville have foretrukket at arbejde med Go-sproget, valgte de i sidste ende Rust på grund af den begrænsede tilgængelighed af værktøjer af høj kvalitet til udvikling af grafiske brugerflader i Go. Trods denne overgang inkluderer den nye arkitektur også planer om at bevare den klassiske version af brugerfladen som en mulighed, hvilket giver brugerne en velkendt oplevelse, samtidig med at de tilpasser sig nye standarder og teknologier.
Med hensyn til rendering vil Bottles Next understøtte motorer som Vulkan, Metal, DX12, OpenGL 2.1+ og OpenGL ES 2.0+, hvilket sikrer bred tilpasningsevne til forskellige systemer og hardware. Dette redesign lover at levere forbedret ydeevne, udvide kompatibilitet på tværs af platforme og give et mere robust fundament for fremtidig Bottles-udvikling.
Denne opdatering påvirker både Bottles Legacy (den aktuelle version af Bottles) og Bottles Next. I de kommende uger vil den første version af cpak være færdig. Det er et bærbart, dedupliceret softwaredistributionsformat, der udelukkende er baseret på OCI-billeder.
Det nævnes også, at Bottles Next-agenten, som opererer i Windows-miljøet genereret af Wine, vil blive skrevet i C# ved hjælp af .NET. Dette valg imødekommer de specifikke behov for WineBridge-tjenesten, som kræver effektiv integration med Windows API'en i et emuleret miljø.
Med hensyn til udvikling forventes en container til test af den første prototype af Bottles Next, skrevet udelukkende i Rust, at blive udgivet om et par uger . For nuværende er der kun en grundlæggende demoversion tilgængelig, der giver brugerne mulighed for at få en foreløbig idé om projektets muligheder og retning. Denne overgang til Bottles Next lover betydelige forbedringer i funktionalitet, kompatibilitet og ydeevne.
Endelig, hvis du er interesseret i at lære mere om dette , kan du finde detaljerne på følgende link.