Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[Discussion] Desktop Application 🖥 #32

Open
zicklag opened this issue Jun 8, 2021 · 2 comments
Open

[Discussion] Desktop Application 🖥 #32

zicklag opened this issue Jun 8, 2021 · 2 comments
Labels
enhancement New feature or request

Comments

@zicklag
Copy link
Contributor

zicklag commented Jun 8, 2021

I've been looking into different technologies for making Rust desktop applications because that's personally something I want to get into. I think that Flutter is one of the most promising GUI frameworks around right now, and I just yesterday discovered nativeshell which is a way to build desktop applications with Rust and Flutter. I was thinking about what might be a good demo application for me to build using nativeview and then I thought of Matchering.

If I get the time, I might try to make a native desktop application for Matching, but I've still got to figure out the best way to embed Matching in a desktop application without requring Python to be installed. I heard that you had experimented with a Rust version of matchering, which would be the easiest way to get matchering embedded, but if that isn't ready yet then that won't be an option.

The other option is to embed the Python interpreter in Rust. This should work, and I've done it before in smaller use-cases, I just have to look into it more.

I wanted to open this issue to start the discussion and ask whether or not the Rust version of matchering is anywhere close to usable or if I should just try to embed the Python interpreter.

@sergree
Copy link
Owner

sergree commented Jun 9, 2021

Hello, @zicklag!
Good to see you again. 🤗 Thank you for your interest in Matchering!

I have to upset you: so far, there is nothing close to usable on Rust.
I don't even have a working prototype yet, because I haven't found all the necessary alternative numpy / scipy / statsmodels functions on Rust. Perhaps Rust is not as a Batteries Included language as Python at the moment. 🤷‍♂️
And also, maybe I don't have enough free time and motivation yet to bring this to mind. 😴

I've heard about Flutter, I even took one course on it on Udemy, cool stuff! At the moment, most likely, everything will rest on how to combine it all. Although Python is very cross-platform, but such libraries as numpy, scipy, statsmodels, soundfile are associated with native C libraries, which is why they will not be able to run everywhere (so we, for example, should forget about iOS, Android, not x86 CPUs). This, by the way, is one of the reasons why I chose Docker.

But, in any case, the current Python Matchering architecture is modular, not monolithic. So you can try connecting the Matchering core to anything you want. Whether it's a native pythonic GUI solution, or something more like Flutter.
https://github.com/sergree/matchering#python-library---for-developers

❣️ It is very interesting to see what you will get in the end ❣️

@sergree sergree pinned this issue Jun 9, 2021
@zicklag
Copy link
Contributor Author

zicklag commented Jun 9, 2021

I have to upset you: so far, there is nothing close to usable on Rust.

No problem, I figured if it wasn't public that it wasn't usable yet. :)

Perhaps Rust is not as a Batteries Included language as Python at the moment. 🤷‍♂️

I'm not one who has done a lot of deep math with Rust or Python. I think that Rust probably does have alternatives to those, but there often aren't necessarily obvious choices and they're not always the easiest to find. And the quality might not be what you get from the standardized Python libraries yet so it might be more work or something.

Again, I haven't done much math heavy stuff in Rust yet, but that's the impression I get from the ecosystem. If I were to suggest libraries to check out that I've seen it would be:

And also, maybe I don't have enough free time and motivation yet to bring this to mind. sleeping

I Totally understand 😉

such libraries as numpy, scipy, statsmodels, soundfile are associated with native C libraries, which is why they will not be able to run everywhere

Yep, the builds will be platform specific anyway so having to include the native binaries shouldn't be too much of an issue if we get lucky and there's nothing horrible that I haven't thought of.

I'm going to try to bundle libpython3.[so|dll|dylib] with the application and have a directory that I drop all of the python depencencies into, then I'll use pyO3 to execute the Matchering Python code from Rust+Flutter application.

This, by the way, is one of the reasons why I chose Docker.

Yeah, it was a great choice. I have extensive experience with Docker and it's great. I was able to use Matching super easy with the container, but I know that there are people who will be less container savvy and would probably appreciate a desktop app.


Anyway, it's mostly for my own learning experience and we'll see if I even get the time for it. :)

@sergree sergree added the enhancement New feature or request label Aug 14, 2022
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request
Projects
None yet
Development

No branches or pull requests

2 participants