bottlesdevs / Bottles

Run Windows software and games on Linux
https://usebottles.com
GNU General Public License v3.0
6.2k stars 258 forks source link

Trento (v4) - The future of Bottles #133

Closed mirkobrombin closed 2 years ago

mirkobrombin commented 3 years ago

It is ironic to talk about v4 not even 1 year after the release of v2 and just after the release of v3 ( with the brand new UI thanks to @jannuary and @alvarlagerlof). But "unfortunately" it is important for me to put order in the project and especially in the code.

Bottles was born as a very simple tool for managing wineprefixes, over time I thought of a very simple tool that sees the use of environments at its core and centralized management of dependencies. Over time (and the desire to add more and more features as well as a beautiful new UI), the code has undergone extreme changes to fit everything we wanted.

To date, Bottles v3 lives with a fairly stable code, a solid foundation of functionality and a beautiful new UI (did I mention that already?) And this might be enough (?)

Sure this can be enough but experience teaches me that over time projects evolve and functionality is increased. Aware of this, I am sure that I cannot add many other features without weakening the code or having to rewrite it to a large extent. Therefore I decided to release v3 (in a few days) and update it only with bugfixes, translations and small improvements in order to focus all my energy on this project, in the future version v4.

What about v4?

The codename of the fourth major release of Bottles is Trento .

With the aim of offering an easily customizable and extendable base, Bottles will be splitted into 4 main components:

libwine is a library that acts as an API for Wine, this will include all the methods needed to work with a wineprefix, e.g.:

libbottles is the library containing the Bottles core, this contains all the methods to manage the bottles, e.g.:

it also depends on the previous one, libwine.

Bottles (bottles-gtk) is the final (Gtk) version of Bottles, with the same UI already seen in v3. This UI will then use libbottles to communicate with our bottles.

It's not hard to imagine what's the purpose of bottles-cli at this point.

This will also bring the following advantages:

WAIT, this does NOT mean Bottles will be deprecated. As mentioned, Bottles v1 and v3 will remain actively developed, with bugfixes, translations and minor improvements. It is also not said that these do not see other features.

Thanks for the attention!

mirkobrombin commented 3 years ago

GTK 4?

Yes

AdrianVovk commented 3 years ago

I love this project! I'm working on an OS and I planned on having "compatibility runtimes" for Windows apps. Bottles feels like an awesome foundation for this!

nguyenhai97 commented 3 years ago

I like the idea of bottles-cli, love to see V4 soon ❤️

mirkobrombin commented 3 years ago

Post updated with project structure.

TiZ-HugLife commented 3 years ago

It's probably important to point out that "libwine" is a thing that already exists; you should choose another name to avoid colliding with it. Since it's related to prefixes, I suggest "libwineprefix".

mirkobrombin commented 3 years ago

It's probably important to point out that "libwine" is a thing that already exists; you should choose another name to avoid colliding with it. Since it's related to prefixes, I suggest "libwineprefix".

I didn't notice as I only looked on pypi, I will evaluate a new name as soon as possible.

heylix commented 3 years ago

Nice, I especially like that you want to support Qt :)

francescomasala commented 3 years ago

Adding Codename "Trento"

ovari commented 3 years ago

Will the translations from the previous version be copied across to Trento (v4)? Thank you

mirkobrombin commented 3 years ago

Will the translations from the previous version be copied across to Trento (v4)? Thank you

I think so. Trento is developed from scratch but we will find a way to adapt the Treviso translations.

BigmenPixel0 commented 2 years ago

What about libadwaita?

mirkobrombin commented 2 years ago

What about libadwaita?

https://github.com/bottlesdevs/Bottles/issues/610

mirkobrombin commented 2 years ago

Tracking final steps on respective issues.