terhechte / Ebou

A cross platform Mastodon Client written in Rust
https://terhech.de/ebou/
GNU General Public License v3.0
540 stars 32 forks source link

Ebou as a juicy client #3

Open erlend-sh opened 1 year ago

erlend-sh commented 1 year ago

Do you think Ebou might be flexible enough to fit the vision of a multi-modal client?

https://blog.erlend.sh/juicy-clients

Basically I’m wondering if you’d accept contributions towards this, starting with an additional view to support a Reddit-style interface. There’s a lot of interest in this within the Rust community so I’m confident we could rally support for this effort: https://www.reddit.com/r/rust/comments/146qxzn/building_a_better_rrust_together/

Although it’s several Dioxus versions ago now, there’s some prior art for a links-aggregator UI by @mrxiaozhuox here: https://github.com/mrxiaozhuox/dioxus-hackernews

terhechte commented 1 year ago

This will probably require a lot of refactoring due to the complexity of this approach:

Ebou already has a pretty good nested / conversation view for toots & replies. This would be a very good starting point for a Ebou-Based client that consumes link aggregator APIs and the discussions related to it.

One possible approach would be to start working on this as a separate app, but everything that can be shared from Ebou could be refactored into a separate crate (e.g. ebou-ui or Ebou-shared) so that this separate app uses as much of Ebou as possible (while also improving the overall Ebou code structure).

Then, at some point, merging these codebases might be much simpler because of all the upfront groundwork (if that, then, is still a reasonable goal).

If this sounds interesting to you, I'd gladly accept PRs that start splitting the Ebou codebase up into multiple crates (e.g. a proper cargo workspace) and making the conversation view or the sidebar or the labels, buttons etc available to more crates. That would then be a good foundation to start forming a new app.

erlend-sh commented 1 year ago

While not a Dioxus app, an official Lemmy app made in Leptos should also be quite instructive:

https://lemmy.world/post/1640453