De ontwikkelaars van Bottles hebben onlangs via een blogpost details onthuld over het werk dat ze gaan doen aan Bottles Next, een initiatief dat gericht is op het volledig herontwerpen van de architectuur en de codebasis van het project.
In de verklaring wordt vermeld dat de huidige versie van Bottles, geschreven in Python met een GTK-gebaseerde interface, aanzienlijke beperkingen kent die de integratie van nieuwe functies, zoals macOS-ondersteuning, belemmeren en problemen oplevert die alleen kunnen worden opgelost door een ingrijpende structurele verandering.
Ruim een ​​jaar geleden hebben we Bottles Next aangekondigd, een volledige herschrijving van het Bottles-project. Aanvankelijk was het idee om webtechnologieën te gebruiken om de ervaring te bereiken die we voor onze gebruikers voor ogen hadden. Maar zoals vaak het geval is, vond er uitgebreid onderzoek, debat, experimenten en voortdurende herevaluatie plaats.
Waarom al deze moeite doen? Om er zeker van te zijn dat we de juiste beslissingen nemen.
Na de aankondiging begonnen we met veel technologieën te experimenteren, maar bovenal luisterden we naar feedback van de gemeenschap, vooral die met betrekking tot Electron. Dit zette ons ertoe aan om andere wegen te verkennen, wat ons ertoe bracht raamprototypes te creëren die waren aangepast aan de specifieke behoeften van Bottles Next.
En hier zijn we vandaag.
Daarom verdeelt de nieuwe aanpak de applicatie in drie hoofdonderdelen:
- Een klant: verantwoordelijk voor de grafische interface
- Een server: verantwoordelijk voor de logica om applicaties uit te voeren en Wine-voorvoegsels te beheren
- Een agent: die binnen Wine werkt en rechtstreeks met de Windows API communiceert.
Hoewel aanvankelijk werd overwogen om de client te implementeren met webtechnologieën zoals Electron en VueJS, en de server te ontwikkelen in Go, hebben de reacties van de community en de resultaten van de prototypes de ontwikkelaars ertoe bewogen dit idee te laten varen.
Uiteindelijk werd daarom besloten om Rust te gebruiken voor zowel de client als de server, terwijl de grafische interface gebaseerd zou zijn op het libcosmic-framework. Dit framework, dat gebruikt wordt in de COSMIC-desktopomgeving, is een uitbreiding van de iced- bibliotheek , die het mogelijk maakt om moderne en schaalbare grafische interfaces te creëren. Libcosmic hanteert een reactief programmeermodel en volgt een architectuur die vergelijkbaar is met die van de declaratieve Elm-taal, waardoor het gemakkelijker te begrijpen is voor ontwikkelaars die bekend zijn met deze aanpak.

Hoewel de ontwikkelaars liever met de Go-taal hadden gewerkt, kozen ze uiteindelijk voor Rust vanwege de beperkte beschikbaarheid van hoogwaardige tools voor het ontwikkelen van grafische interfaces in Go. Ondanks deze overstap is het in de nieuwe architectuur ook de bedoeling om de klassieke versie van de interface als optie te behouden, zodat gebruikers een vertrouwde ervaring hebben terwijl er tegelijkertijd wordt ingespeeld op nieuwe standaarden en technologieën.
Wat rendering betreft, zal Bottles Next engines zoals Vulkan, Metal, DX12, OpenGL 2.1+ en OpenGL ES 2.0+ ondersteunen, waardoor een brede aanpasbaarheid aan verschillende systemen en hardware wordt gegarandeerd. Deze herontwerp belooft betere prestaties, uitgebreidere platformonafhankelijke compatibiliteit en een robuustere basis voor toekomstige Bottles-ontwikkeling.
Deze update is van invloed op zowel Bottles Legacy (de huidige versie van Bottles) als Bottles Next. De komende weken zal de eerste versie van cpak voltooid worden. Het is een draagbaar, gededupliceerd softwaredistributieformaat dat volledig is gebaseerd op OCI-afbeeldingen.
Er wordt ook vermeld dat de Bottles Next-agent, die opereert binnen de door Wine gegenereerde Windows-omgeving, in C# met behulp van .NET zal worden geschreven. Deze keuze komt tegemoet aan de specifieke behoeften van de WineBridge-service, die een efficiënte integratie met de Windows API in een geëmuleerde omgeving vereist.
Wat de ontwikkeling betreft, wordt verwacht dat er over een paar weken een container beschikbaar komt voor het testen van het eerste prototype van Bottles Next, dat volledig in Rust is geschreven . Voorlopig is er alleen een eenvoudige demoversie beschikbaar, waarmee gebruikers een eerste indruk kunnen krijgen van de mogelijkheden en de richting van het project. Deze overstap naar Bottles Next belooft aanzienlijke verbeteringen in functionaliteit, compatibiliteit en prestaties.
Als u hier meer over wilt weten , kunt u de details vinden via de volgende link.