I've decided to open source Ebou, the cross platform Mastodon Desktop Client.

You can find the repository here:

https://github.com/terhechte/Ebou

It also supports Windows, although this is beta and Windows binaries are not included yet (you'll have to compile it yourself). Attached is a Windows screenshot. Linux should be easy to support, too.

I'm open sourcing it because I think there's great value in a high quality cross platform Mastodon desktop client and I can't pull this off alone.

#rust

GitHub - terhechte/Ebou: A cross platform Mastodon Client written in Rust

A cross platform Mastodon Client written in Rust. Contribute to terhechte/Ebou development by creating an account on GitHub.

GitHub
If you like Rust and would like to help out, check out the repository. I haven't had time to list issues yet, but it is easy to try out the app and see which things don't work yet 😀
@terhechte dude, Linux support when?
@expert Should run on Linux mostly fine. You can just check out the repo and do a `cargo run`

@terhechte
If it is going to target mobile OSes i could see myself contributing in the not-so-near future

#rust

@chfkch I looked into iPad support. It would require adding support for iOS to some third party crates, most notably https://crates.io/crates/rfd which Dioxus uses for file dialogs (image uploads, etc). Adding UIDocumentPicker support to RFD should bring mobile support a long way.
crates.io: Rust Package Registry

@terhechte Oh, I would love to try out that inbox-style feed. Interesting idea!
@terhechte I was looking for an interesting and useful #rust project to contribute to, this checks all the marks!
@lozeno Thank you! looking forward to contributions, if you need a introduction into the codebase, feel free to ping me privately here. It is all pretty undocumented right now due to time constraints.
@terhechte It's going to take me a few days (admittedly my free time is less than it was before since my daughter was born) but I'll definitely send you a DM for an introduction, thanks! 👍
@lozeno I feel you time wise. I also have a hard time finding slots for replying to people. Days fly by like they're hours lol
@terhechte very cool! I will install it on a Mac later today when I get home. I’m retired IT but safely not a Rust programmer so I can’t help in that area; doc’s perhaps? I was complaining the other day about so many Mastodon clients (including paid!) not having any user docs so …
@Jgmeadows Oh yes, absolutely. In the end I just wanted to release it so I didn't document it much. That's something to add to the long todo list :)
@terhechte if it would help, I have a little experience with cross-platform packaging with CMake/CPack (Windows, MacOS, Linux). None of the cargo build process changes; CMake passes all the build tasks to cargo and just manages installer creation. See https://gitlab.com/apthorpe/ostrabak/-/tree/main for a working example with a rust application. It's a little extra overhead but it really simplifies packaging standalone applications for distribution, especially if you have no patience for the Windows ecosystem
Files · main · Bob Apthorpe / ostrabak · GitLab

Savegame backup utility for Ostranauts from Blue Bottle Games

GitLab
@terhechte thanks for this. Have you ever used Electron as a framework for building cross OS apps?

@nrstirzaker There're multiple reasons why I prefer Dioxus to Electron:

- All the code is native Rust (not Rust to WASM). So it is fast and I can leverage the whole package ecosystem
- It uses WebKit and therefore consumes less memory compared to Electron
- The memory management and WebKit/Rust communication are fast which makes the whole experience fast
- You still get all the benefits of highly optimised WebKit with CSS, GPU Acceleration & native Widgets.

@terhechte I’ve never used Rust so very interested in your opinion. Thanks for replying
@terhechte
Do you have any info on people using it through WSL2? Support for graphics was added, and I'm curious about Ebou under those conditions. If you don't have data, I may have to try it myself later.
@evilgardengnome I haven't looked into WSL yet, but the app runs fine on Windows so I'm not sure how running the Linux version on WSL would be a better experience (unless I misunderstood something)
@terhechte
Nope, you understood. I was curious since, if the Windows version were in another state, the Linux version (via WSL) could be a viable option.
@terhechte what's the killer feature? 😊

@n3wjack Probably that there's the option to see your feed chat app style, see here for the original proof of concept video:

https://mastodon.social/@terhechte/109762188190735435

@terhechte love this! Very happy to hear you’ve decided to make it open source. The Dioxus devs seem very excited about the Navicula library as well.

Since Dioxus is cross-platform, do you have any plans to support web browsers? A help-wanted issue for it would probably stand a good chance of being picked up by a fellow Rustacean 😊

@erlend Up until 2 months ago, Ebou had wasm32 support and I used it to quickly debug / test the app without having to rebuild / restart it.
I've removed it because the lack of a proper abstraction for the megalodon entities made it a bit of a pain to work with.

It wouldn't be too much work though to add wasm support back in as it did mostly work until recently. The main work would be finding a solution for megalodon / the mastodon API layer as that uses tokio which doesn't work well with wasm

@terhechte every one of your dependencies is MIT or MIT/Apache licensed (except one which is MPL). Would you consider going MIT/Apache licensed rather than GPL?

@joshka Hey! Usually I try to make libraries MIT and full blown apps GPL so that the library can be re-used by any consumer but the app sees lots of contribution. It is still early enough for me to change the license here, could you explain which issues you see with GPL?

I'm pretty open about this, I didn't think about it much tbh.

@terhechte my issue is mostly that it’s viral, and contributing to both the GPL repo and similar non GPL licensed repos creates legal jeopardy. Specifically, I’d love to both contribute to this app but also apply ideas from it to https://crates.io/crates/mastodon-async and my own cli mastodon app https://crates.io/crates/toot-rs. I trust that your intentions are pure in choosing GPL here, but it’s a minor barrier to that niche use case. It’s the one way code sharing problem that causes me concern.
crates.io: Rust Package Registry

@terhechte great stuff! Would love to contribute a PR or two. I'm on Linux too, so I could write something in the Readme about system dependencies required to build from source.
@krankykong Thanks! Would be great if you could provide this information. Also keep in mind that every distribution is a bit different, so I'll probably need different sections in the readme per distribution (or meta distribution like Arch / Debian)