For any UI devs: I’ve starting working on a lemmy front end called
lemmy-ui-leptos [https://github.com/LemmyNet/lemmy-ui-leptos] using leptos
[https://leptos.dev/], a Rust UI framework with isomorphic support, and tailwind
+ daisyUI [https://daisyui.com/] for the component styling. This could
eventually replace the frankenstein’s monster that lemmy-ui has become. Some
reasons for doing this: - lemmy-ui uses infernojs, which is based on the react
model. IMO is largely superseded by signal-based reactivity in use in android
jetpack-compose, SolidJS, and most new UI frameworks. - I had to hack on
isomorphic support / server-side-rendering to infernoJS, and it’s very messy.
Leptos has isomorphic support out of the box. - All the benefits of Rust over
javascript. - Since leptos is in Rust, we can import the lemmy types directly. -
I’ve been waiting for years for a good rust UI framework, and I think we’re
finally here with leptos or sycamore. - lemmy-ui uses bootstrap, which is
showing its age and limitations. Tailwind (and daisyUI) seem to be much more
future-proof. I plan on leaving the site design and component styling to other,
more skilled UI devs, while I work mostly on the auth, services, params, and
overall back-end structure. - Please use daisyUI classes tho whenever possible
over exhaustive tailwind ones. - I’d also like it if the UI could match that of
jerboa’s (whenever possible), so that a change in one could be represented in
the other, and so that things like badge appearance for admins, could be
recognizeable across lemmy’s front ends. You don’t really need to learn rust to
help out with this, as the components look very similar to JSX. Instructions for
running it are in the CONTRIBUTING.md
[https://github.com/LemmyNet/lemmy-ui-leptos/blob/main/CONTRIBUTING.md] . Feel
free to contribute! Right now only the home page, and post pages are working,
but ready to be styled.
Quoting the author
I’ve starting working on a lemmy front end called lemmy-ui-leptos using leptos, a Rust UI framework with isomorphic support, and tailwind + daisyUI for the component styling. This could eventually replace the frankenstein’s monster that lemmy-ui has become.
Anyway, a web browser is a terrible way to interact with the fediverse since the browser doesn’t know about your accounts, so I’d advocate for getting rid of web apps altogether
I’m confused about this - so you’re saying that people on their desktop/laptop shouldn’t be able to browse Lemmy from their web browser? Having to install an app really only works for the likes of say, Snapchat and Instagram where they’re mobile-first platforms which clearly Lemmy is not. Even Discord, who really wants you to use their desktop app allows you to use it via a browser and most of the features are still available (and the ones that aren’t are due to browser sandbox limitations, such as PTT and “Krisp” support).
I’m even more confused about “since the browser doesn’t know about your accounts”, are you saying that its bad that you have to sign into your instance’s account when you first start using the site? Because I don’t see how that is different from mobile (or even a desktop app) either, I use Liftoff on my phone and its not like it magically signed me into my account even though I had other Lemmy apps already signed in on my phone. I feel like I must be really misinterpreting what you’re saying here.
I know that Android does technically have an Accounts Framework that multiple apps can tie into (so that if you have multiple apps from Microsoft for example, signing into one app signs into the others) but I’m pretty sure that only works if all the apps are signed by the same digital key - which makes sense for your general corporation like Microsoft, Google, Apple, etc but not for apps made my multiple independent developers since that would be a massive security issue.
And even if that none of that were an issue, Liftoff is made with Dart/Flutter, which dessalines (the main dev of lemmy-ui and Jerboa) may not have any experience with which could be another potential issue. I’ve contributed a couple of small fixes for Jerboa, but while I have Kotlin + Android experience, I don’t have that much experience with Jetpack Compose (the UI framework Jerboa uses) which means in order for me to make any major contributions to Jerboa I’d need to get caught up on the whole Compose stack first (which when I originally did try to learn it, was an incredibly rapidly moving target like Swift/SwiftUI was in its early days) and I wouldn’t be surprised if Flutter was somewhat similar to this.
The issue is really with links specifically , and the concept of web addresses for federated content in general. The web model does not map very well onto federated networks. Concrete example: If I search for something on google and then get a lemmy/kbin result, my browser doesn’t know that I want to view this content through my home instance. The question “I have a Mastodon/Lemmy account, so why can’t I fave/reply/whatever this content?” comes up a lot. The issue here is that people view the content through a web browser, and web browsers don’t understand the fediverse.
The best solution there would probably be some brower plugin/extension/whatever that replaces fedivers URLs with the “redirecting” URL of your instance of choice.
Given that it’s a simple text replacement, the most complicated part is probably recognizing fediverse sites (a list of sites with a fallback button would also work).
I’m confused about this - so you’re saying that people on their desktop/laptop shouldn’t be able to browse Lemmy from their web browser? Having to install an app really only works for the likes of say, Snapchat and Instagram where they’re mobile-first platforms which clearly Lemmy is not. Even Discord, who really wants you to use their desktop app allows you to use it via a browser and most of the features are still available (and the ones that aren’t are due to browser sandbox limitations, such as PTT and “Krisp” support).
I’m even more confused about “since the browser doesn’t know about your accounts”, are you saying that its bad that you have to sign into your instance’s account when you first start using the site? Because I don’t see how that is different from mobile (or even a desktop app) either, I use Liftoff on my phone and its not like it magically signed me into my account even though I had other Lemmy apps already signed in on my phone. I feel like I must be really misinterpreting what you’re saying here.
I know that Android does technically have an Accounts Framework that multiple apps can tie into (so that if you have multiple apps from Microsoft for example, signing into one app signs into the others) but I’m pretty sure that only works if all the apps are signed by the same digital key - which makes sense for your general corporation like Microsoft, Google, Apple, etc but not for apps made my multiple independent developers since that would be a massive security issue.
And even if that none of that were an issue, Liftoff is made with Dart/Flutter, which dessalines (the main dev of lemmy-ui and Jerboa) may not have any experience with which could be another potential issue. I’ve contributed a couple of small fixes for Jerboa, but while I have Kotlin + Android experience, I don’t have that much experience with Jetpack Compose (the UI framework Jerboa uses) which means in order for me to make any major contributions to Jerboa I’d need to get caught up on the whole Compose stack first (which when I originally did try to learn it, was an incredibly rapidly moving target like Swift/SwiftUI was in its early days) and I wouldn’t be surprised if Flutter was somewhat similar to this.
The issue is really with links specifically , and the concept of web addresses for federated content in general. The web model does not map very well onto federated networks. Concrete example: If I search for something on google and then get a lemmy/kbin result, my browser doesn’t know that I want to view this content through my home instance. The question “I have a Mastodon/Lemmy account, so why can’t I fave/reply/whatever this content?” comes up a lot. The issue here is that people view the content through a web browser, and web browsers don’t understand the fediverse.
The best solution there would probably be some brower plugin/extension/whatever that replaces fedivers URLs with the “redirecting” URL of your instance of choice.
Given that it’s a simple text replacement, the most complicated part is probably recognizing fediverse sites (a list of sites with a fallback button would also work).