Currently researching static linking and compiling on windows, macos and ubuntu.
Cross compilation
When using linux as our host OS. It would require mingw to crosscompile to windows. macOS cross-compilation, while not entirely impossible is extremely difficult according to online sources. Cross-compiling is possible for windows => linux and linux => windows, but macOS is nearly if not entirely impossible for modern versions.
Possible solutions
Compiling on each host individual and having 3 seperate build-servers. Linux and windows could be merged since cross-compilation would work on these. The main reason we would separate these is because macOS cross-compilation is a pain.
Linux
Windows
macOS
Other technologies
Python
Java
Rust
Javascript/typescript with an electron wrapper.
This seems like the most viable and maintainable solution, since there are a ton of existing applications which use this technology stack and are maintained well.
Rust
Started looking into rust.
State of rust cross-platform desktop UI libraries. (Windows, macOS and linux)
https://github.com/rust-native-ui/libui-rs
Problem: Hasnt had an official release in over 2 years and the latest release doesnt run on macOS. The latest master build does seem to run. (Windows and linux untested)
Neither libraries support the systray functionality we would need to easily connect / disconnect from a peer in yggdrasil. This could be combined another library:
The main issue with flutter is that the UI and the system tray icon are in separated libraries. And the entire environement to compile and run is extremely fragile and in early development.
Another problem is the one that I mentioned before: The UI and the systray are 2 different libraries which are independant of eachother, closing the UI causing the entire application to close and there is no way in flutter to catch this behaviour.
Research
Currently researching static linking and compiling on windows, macos and ubuntu.
Cross compilation
When using linux as our host OS. It would require mingw to crosscompile to windows. macOS cross-compilation, while not entirely impossible is extremely difficult according to online sources. Cross-compiling is possible for windows => linux and linux => windows, but macOS is nearly if not entirely impossible for modern versions.
Possible solutions
Compiling on each host individual and having 3 seperate build-servers. Linux and windows could be merged since cross-compilation would work on these. The main reason we would separate these is because macOS cross-compilation is a pain.
Other technologies
Rust
State of rust cross-platform desktop UI libraries. (Windows, macOS and linux)
https://github.com/maps4print/azul Problem: Not production ready and has no official release yet.
https://github.com/rust-native-ui/libui-rs Problem: Hasnt had an official release in over 2 years and the latest release doesnt run on macOS. The latest master build does seem to run. (Windows and linux untested)
Neither libraries support the systray functionality we would need to easily connect / disconnect from a peer in yggdrasil. This could be combined another library:
Rust is a nice language and usefull in many areas but it is simply not suitable for a cross-platform desktop application development. https://www.reddit.com/r/rust/comments/bjgfcp/what_is_rust_used_for/em8alr4?utm_source=share&utm_medium=web2x&context=3
Flutter desktop / cross-platform
The main issue with flutter is that the UI and the system tray icon are in separated libraries. And the entire environement to compile and run is extremely fragile and in early development.
Requirements to run this:
Another problem is the one that I mentioned before: The UI and the systray are 2 different libraries which are independant of eachother, closing the UI causing the entire application to close and there is no way in flutter to catch this behaviour.
Android and IOS research
Yggdrasil
Integration
Flutter could be used, but this would require us to port over the existing IOS and Android libraries to dart.