Os desenvolvedores do Bottles revelaram recentemente , por meio de uma postagem no blog , detalhes sobre o trabalho que realizarĂ£o no Bottles Next, uma iniciativa que visa redesenhar completamente a arquitetura e a base de cĂ³digo do projeto.
A declaraĂ§Ă£o menciona que a versĂ£o atual do Bottles, escrita em Python com uma interface baseada em GTK, enfrenta limitações significativas que dificultam a incorporaĂ§Ă£o de novos recursos, como o suporte ao macOS, e apresenta problemas que sĂ³ podem ser resolvidos por meio de uma mudança estrutural profunda.
HĂ¡ mais de um ano, anunciamos o Bottles Next, uma reescrita completa do projeto Bottles. Inicialmente, a ideia era aproveitar as tecnologias web para alcançar a experiĂªncia que idealizamos para nossos usuĂ¡rios. No entanto, como Ă© frequentemente o caso, houve extensas pesquisas, debates, experiĂªncias e reavaliações contĂnuas.
Por que passar por todo esse problema? Bem, para ter certeza de que tomamos as decisões corretas.
ApĂ³s o anĂºncio, começamos a experimentar diversas tecnologias, mas acima de tudo, ouvimos o feedback da comunidade, principalmente daquelas relacionadas ao Electron. Isto levou-nos a explorar outros caminhos, o que nos levou a criar protĂ³tipos de framework adaptados Ă s necessidades especĂficas da Bottles Next.
E aqui estamos hoje.
Por isso, a nova abordagem divide a aplicaĂ§Ă£o em trĂªs componentes principais:
- Um cliente: responsĂ¡vel pela interface grĂ¡fica
- Um servidor: responsĂ¡vel pela lĂ³gica para executar aplicações e gerenciar prefixos Wine
- Um agente: que opera dentro do Wine para interagir diretamente com a API do Windows.
Embora inicialmente se tenha considerado implementar o cliente com tecnologias web como Electron e VueJS, e desenvolver o servidor em Go, a reaĂ§Ă£o da comunidade e os resultados obtidos com os protĂ³tipos levaram os desenvolvedores a abandonar essa ideia.
Portanto, decidiu-se finalmente usar Rust tanto para o cliente quanto para o servidor, enquanto a interface grĂ¡fica seria baseada no framework libcosmic. Este framework, usado no ambiente de desktop COSMIC, Ă© uma extensĂ£o da biblioteca iced , que facilita a criaĂ§Ă£o de interfaces grĂ¡ficas modernas e escalĂ¡veis. O libcosmic adota um modelo de programaĂ§Ă£o reativa e segue uma arquitetura similar Ă da linguagem declarativa Elm, tornando-o mais fĂ¡cil de entender para desenvolvedores familiarizados com essa abordagem.

Embora os desenvolvedores preferissem trabalhar com a linguagem Go, optaram por Rust devido Ă disponibilidade limitada de ferramentas de alta qualidade para o desenvolvimento de interfaces grĂ¡ficas em Go. Apesar dessa transiĂ§Ă£o, a nova arquitetura tambĂ©m inclui planos para manter a versĂ£o clĂ¡ssica da interface como uma opĂ§Ă£o, oferecendo aos usuĂ¡rios uma experiĂªncia familiar enquanto se adapta aos novos padrões e tecnologias.
Em termos de renderizaĂ§Ă£o, o Bottles Next oferecerĂ¡ suporte a engines como Vulkan, Metal, DX12, OpenGL 2.1+ e OpenGL ES 2.0+, garantindo ampla adaptabilidade a diferentes sistemas e hardwares. Essa reformulaĂ§Ă£o promete oferecer desempenho aprimorado, ampliar a compatibilidade entre plataformas e fornecer uma base mais robusta para o desenvolvimento futuro do Bottles.
Esta atualizaĂ§Ă£o afeta o Bottles Legacy (a versĂ£o atual do Bottles) e o Bottles Next. Nas prĂ³ximas semanas a primeira versĂ£o do cpak serĂ¡ concluĂda. É um formato de distribuiĂ§Ă£o de software portĂ¡til e desduplicado, baseado inteiramente em imagens OCI.
TambĂ©m foi mencionado que o agente Bottles Next, que opera no ambiente Windows gerado pelo Wine, serĂ¡ escrito em C# usando .NET. Essa escolha atende Ă s necessidades especĂficas do serviço WineBridge, que requer integraĂ§Ă£o eficiente com a API do Windows em um ambiente emulado.
Em relaĂ§Ă£o ao desenvolvimento, um contĂªiner para testar o protĂ³tipo inicial do Bottles Next, escrito inteiramente em Rust, deverĂ¡ ser lançado em algumas semanas . Por enquanto, apenas uma versĂ£o de demonstraĂ§Ă£o bĂ¡sica estĂ¡ disponĂvel, permitindo que os usuĂ¡rios tenham uma ideia preliminar das capacidades e da direĂ§Ă£o do projeto. Essa transiĂ§Ă£o para o Bottles Next promete melhorias significativas em funcionalidade, compatibilidade e desempenho.
Por fim, se tiver interesse em saber mais sobre isso , vocĂª pode encontrar os detalhes no seguinte link.