Kamakailan ay isiniwalat ng mga developer ng Bottles, sa pamamagitan ng isang blog post , ang mga detalye tungkol sa gawaing kanilang gagawin sa Bottles Next, isang inisyatibo na naglalayong ganap na muling idisenyo ang arkitektura at codebase ng proyekto.
Binanggit sa pahayag na ang kasalukuyang bersyon ng Bottles, na nakasulat sa Python na may GTK-based interface, ay nahaharap sa mga makabuluhang limitasyon na humahadlang sa pagsasama ng mga bagong tampok, tulad ng suporta sa macOS, at nagdudulot ng mga problemang malulutas lamang sa pamamagitan ng isang malalim na pagbabago sa istruktura.
Mahigit isang taon na ang nakalipas, inanunsyo namin ang Bottles Next, isang kumpletong muling pagsulat ng proyektong Bottles. Sa una, ang ideya ay gamitin ang mga teknolohiya sa web upang makamit ang karanasang naisip namin para sa aming mga user. Gayunpaman, tulad ng kadalasang nangyayari, nagkaroon ng malawak na pananaliksik, debate, eksperimento at patuloy na muling pagsusuri.
Bakit dumaan sa lahat ng problemang ito? Well, para masigurado na tama ang mga desisyon natin.
Pagkatapos ng anunsyo, nagsimula kaming mag-eksperimento sa maraming teknolohiya, ngunit higit sa lahat, nakinig kami sa feedback mula sa komunidad, partikular sa mga nauugnay sa Electron. Nag-udyok ito sa amin na galugarin ang iba pang mga landas, na humantong sa amin na lumikha ng mga prototype ng framework na inangkop sa mga partikular na pangangailangan ng Bottles Next.
At narito tayo ngayon.
Kaya naman hinahati ng bagong pamamaraan ang aplikasyon sa tatlong pangunahing bahagi:
- Isang kliyente: responsable para sa graphical na interface
- Isang server: namamahala sa lohika upang magpatakbo ng mga application at pamahalaan ang mga prefix ng Wine
- Isang ahente: na gumagana sa loob ng Wine upang direktang makipag-ugnayan sa Windows API.
Bagama't noong una ay naisipang ipatupad ang client gamit ang mga teknolohiyang web tulad ng Electron at VueJS, at bumuo ng server sa Go, ang reaksyon ng komunidad at ang mga resultang nakuha gamit ang mga prototype ang nagtulak sa mga developer na talikuran ang ideyang ito.
Samakatuwid, sa huli ay napagpasyahan na gamitin ang Rust para sa parehong client at server, habang ang graphical interface ay ibabatay sa libcosmic framework. Ang framework na ito, na ginagamit sa COSMIC desktop environment, ay isang extension ng iced library , na nagpapadali sa paglikha ng moderno at scalable graphical interfaces. Gumagamit ang Libcosmic ng reactive programming model at sumusunod sa arkitektura na katulad ng sa declarative Elm language, na ginagawang mas madali para sa mga developer na pamilyar sa pamamaraang ito na maunawaan.

Bagama't mas gusto sana ng mga developer na gumamit ng wikang Go, sa huli ay pinili nila ang Rust dahil sa limitadong pagkakaroon ng mga de-kalidad na tool para sa pagbuo ng mga graphical interface sa Go. Sa kabila ng transisyong ito, kasama rin sa bagong arkitektura ang mga plano na panatilihin ang klasikong bersyon ng interface bilang isang opsyon, na nag-aalok sa mga user ng pamilyar na karanasan habang umaangkop sa mga bagong pamantayan at teknolohiya.
Sa usapin ng rendering, susuportahan ng Bottles Next ang mga engine tulad ng Vulkan, Metal, DX12, OpenGL 2.1+, at OpenGL ES 2.0+, na tinitiyak ang malawak na kakayahang umangkop sa iba't ibang sistema at hardware. Nangangako ang muling pagdisenyo na ito na maghahatid ng pinahusay na pagganap, magpapalawak ng cross-platform compatibility, at magbibigay ng mas matibay na pundasyon para sa pag-develop ng Bottles sa hinaharap.
Naaapektuhan ng update na ito ang Bottles Legacy (ang kasalukuyang bersyon ng Bottles) at Bottles Next. Sa mga darating na linggo ang unang bersyon ng cpak ay makukumpleto. Ito ay isang portable, deduplicated na format ng pamamahagi ng software na ganap na nakabatay sa mga imahe ng OCI.
Nabanggit din na ang Bottles Next agent, na gumagana sa loob ng Windows environment na binuo ng Wine, ay isusulat sa C# gamit ang .NET. Tinutugunan ng pagpipiliang ito ang mga partikular na pangangailangan ng serbisyo ng WineBridge, na nangangailangan ng mahusay na integrasyon sa Windows API sa isang emulated environment.
Tungkol sa pag-develop, inaasahang ilalabas ang isang container para sa pagsubok ng unang prototype ng Bottles Next, na buong nakasulat sa Rust, sa loob ng ilang linggo . Sa ngayon, isang basic demo version lamang ang magagamit, na nagbibigay-daan sa mga user na makakuha ng paunang ideya tungkol sa mga kakayahan at direksyon ng proyekto. Ang paglipat na ito sa Bottles Next ay nangangako ng mga makabuluhang pagpapabuti sa functionality, compatibility, at performance.
Panghuli, kung interesado kang matuto nang higit pa tungkol dito , makikita mo ang mga detalye sa sumusunod na link.