vibrantLinux
vibrantLinux copied to clipboard
Opinions on a rewrite
I'm making this issue a central discussion place for a potential rewrite of this program, and libvibrant, preferably in rust, but not necessarily. My reasoning behind this is simple: old me's code is god awful, because I never expected this software to be actually used by this many people, nor did I write it with that in mind.
Of course this would entail some downsides, this would very much break current configs, and involve a significant amount of work.
However there are also plenty of advantages. A rewrite would be mean easier future upgrade paths especially for things like config file changes, a cleaner code base, and, with the use of rust, increased memory safety. Not to mention that with a language like rust it would be significantly easier to ship this software. One of the biggest issues we've had is multiple people having issues actually making the program if it's not packaged for their distro (currently only arch), however this would greatly simplify from packager, and user view points.
My opinion is not dead set yet which is why I've create this issue, please comment what you think, if you have any criticisms, or if you are in support of this plan. The more view points the better.
Tagging @Scrumplex because they are the maintainer and creator of libvibrant and one of the biggest contributors to this project, so their input is greatly valued. I'm already working on a rewrite and it doesn't seem like the translation is going to require too much work.
I think a rewrite in Rust makes much sense. Sadly the name "vibrant" is already taken on crates.io, but we could probably name it vibrant-rs or something :D
There is nothing on the AMD side which would prevent porting over to Rust.
I also thought that a daemon could make sense: We run a daemon that handles all of the stuff the current application handles (window/app detection, setting vibrancy, ...). Then we also have a GUI that communicates with the daemon and just serves as a frontend to configure it, so that we can just exit the GUI when we are done configuring.
I really like that idea actually! I'll keep porting over libvibrant and then we can build the daemon no top of that and so on.
The library rewrite is approaching completion, and while the daemon still needs to be written I am wondering about what GUI library should be used. In my mind, it should probably be the GTK bindings but I am open to suggestions.
The initial library rewrite is done. Once we review it and finish writing tests for it to ensure that it works we'll get started on writing the daemon, and then the new VibrantLinux client.
To view the current rewrite you can look here However, do note that is not going to necessarily be where it will reside forever, I was unsure of where to upload it and since Scrumplex is offline I've simply put it in that git repo for now.
I feel like this is out of scope for now