Utviklerne av Bottles avslørte nylig , gjennom et blogginnlegg , detaljer om arbeidet de skal gjøre på Bottles Next, et initiativ som tar sikte på å fullstendig redesigne arkitekturen og kodebasen til prosjektet.
Uttalelsen nevner at den nåværende versjonen av Bottles, skrevet i Python med et GTK-basert grensesnitt, står overfor betydelige begrensninger som hindrer integreringen av nye funksjoner, som macOS-støtte, og byr på problemer som bare kan løses gjennom en dyptgående strukturell endring.
For over et år siden annonserte vi Bottles Next, en fullstendig omskrivning av Bottles-prosjektet. Opprinnelig var ideen å utnytte nettteknologier for å oppnå opplevelsen vi så for brukerne våre. Men som ofte var det omfattende forskning, debatt, eksperimenter og kontinuerlig re-evaluering.
Hvorfor gå gjennom alle disse problemene? Vel, for å sikre at vi tar de riktige avgjørelsene.
Etter kunngjøringen begynte vi å eksperimentere med mange teknologier, men fremfor alt lyttet vi til tilbakemeldinger fra fellesskapet, spesielt de som er relatert til Electron. Dette fikk oss til å utforske andre veier, noe som førte til at vi laget rammeprototyper tilpasset de spesifikke behovene til Bottles Next.
Og her er vi i dag.
Derfor deler den nye tilnærmingen applikasjonen inn i tre hovedkomponenter:
- En klient: ansvarlig for det grafiske grensesnittet
- En server: ansvarlig for logikken for å kjøre applikasjoner og administrere vinprefikser
- En agent: som opererer i Wine for å samhandle direkte med Windows API.
Selv om det i utgangspunktet ble vurdert å implementere klienten med webteknologier som Electron og VueJS, og utvikle serveren i Go, førte reaksjonen fra fellesskapet og resultatene som ble oppnådd med prototypene til at utviklerne forlot denne ideen.
Derfor ble det til slutt besluttet å bruke Rust for både klienten og serveren, mens det grafiske grensesnittet skulle være basert på libcosmic-rammeverket. Dette rammeverket, som brukes i COSMIC-skrivebordsmiljøet, er en utvidelse av iced- biblioteket , som forenkler opprettelsen av moderne og skalerbare grafiske grensesnitt. Libcosmic bruker en reaktiv programmeringsmodell og følger en arkitektur som ligner på det deklarative Elm-språket, noe som gjør det enklere for utviklere som er kjent med denne tilnærmingen å forstå.

Selv om utviklerne helst ville ha jobbet med Go-språket, valgte de til slutt Rust på grunn av den begrensede tilgjengeligheten av verktøy av høy kvalitet for utvikling av grafiske grensesnitt i Go. Til tross for denne overgangen inkluderer den nye arkitekturen også planer om å beholde den klassiske versjonen av grensesnittet som et alternativ, og tilby brukerne en kjent opplevelse samtidig som de tilpasser seg nye standarder og teknologier.
Når det gjelder rendering, vil Bottles Next støtte motorer som Vulkan, Metal, DX12, OpenGL 2.1+ og OpenGL ES 2.0+, noe som sikrer bred tilpasningsevne til ulike systemer og maskinvare. Denne redesignen lover å levere forbedret ytelse, utvide kompatibilitet på tvers av plattformer og gi et mer robust grunnlag for fremtidig Bottles-utvikling.
Denne oppdateringen påvirker både Bottles Legacy (den nåværende versjonen av Bottles) og Bottles Next. I løpet av de kommende ukene vil den første versjonen av cpak være ferdig. Det er et bærbart, deduplisert programvaredistribusjonsformat basert utelukkende på OCI-bilder.
Det nevnes også at Bottles Next-agenten, som opererer i Windows-miljøet generert av Wine, vil bli skrevet i C# ved hjelp av .NET. Dette valget imøtekommer de spesifikke behovene til WineBridge-tjenesten, som krever effektiv integrasjon med Windows API i et emulert miljø.
Når det gjelder utvikling, forventes det at en container for testing av den første prototypen til Bottles Next, skrevet utelukkende i Rust, slippes om noen uker . Foreløpig er bare en grunnleggende demoversjon tilgjengelig, slik at brukerne kan få en foreløpig idé om prosjektets muligheter og retning. Denne overgangen til Bottles Next lover betydelige forbedringer i funksjonalitet, kompatibilitet og ytelse.
Til slutt, hvis du er interessert i å lære mer om dette , kan du finne detaljene på følgende lenke.