this post was submitted on 28 Nov 2024
76 points (98.7% liked)

Fediverse

28692 readers
677 users here now

A community to talk about the Fediverse and all it's related services using ActivityPub (Mastodon, Lemmy, KBin, etc).

If you wanted to get help with moderating your own community then head over to !moderators@lemmy.world!

Rules

Learn more at these websites: Join The Fediverse Wiki, Fediverse.info, Wikipedia Page, The Federation Info (Stats), FediDB (Stats), Sub Rehab (Reddit Migration), Search Lemmy

founded 2 years ago
MODERATORS
 

Here are the problems I want to solve:

The same app everywhere

It will run as a website, iOS app (also on macOS), and Android app. It will be responsive, supporting phone, tablet, and computer screen sizes along with everything in between.

And I’m not talking about simply resizing the interface. Navigation (e.g. sidebar or on mobile bottom tab bar) will match what you would expect to see on the device size you’re using. But everything else (e.g. posts) will look the same, which I hope will make it really easy to jump from mobile to desktop.

Onboarding and configuration

The app will allow you to configure it to look like a typical Reddit or Lemmy app. During the onboarding process, I will prompt you, asking which style of interface you prefer. Consider these presets, which change a bunch of more granular configuration options. I will also give you the ability to fully customize each option instead of picking a preset.

Caching and offline support

This is where it starts to get more tricky. Caching is easy. If you launch the app, it will have everything you previously saw still loaded.

I would like to make it so upvoting, for example, can be done offline. The app will optimistically apply the upvote to the post or comment, then when you reconnect to the internet, it will actually apply the upvote. This is a difficult problem to solve, so I can’t promise this will work, and it would likely be the last feature I add.

I need your feedback

This is a big project to undertake. I really want a Lemmy client that checks those boxes for myself, but I’m curious if any of those resonate with you? Is there anything I missed that you would like to see? If I do build this, I will likely have to keep the project very focused as far as features go initially.

Just for context, I’m using Voyager on iOS currently. I really like it, but the “the same app everywhere” concept and making it easier to onboard Reddit users are my main motivations for creating my own app. My app will also be fully open source

you are viewing a single comment's thread
view the rest of the comments
[–] moseschrute@lemmy.world 2 points 2 weeks ago (2 children)

My goal is to store everything offline for a period of time. Likely, it will be more complicated than this, but let’s say for now everything you see will be automatically cached offline for 30 days. Instead of a number of days, I will probably set a max size for the offline cache and drop the oldest data in the cache as new data comes in.

The only issue here is I’m not sure how easy it will be to cache images offline. They will take up more storage, and I’m not as familiar with image caching mechanisms for apps.

Do you know if Lemmy tends to have good alt text for images? That would be easier to cache offline instead of images.

Maybe after the initial version, I can add the ability to pin a post to your cache so it doesn’t get cleaned up automatically.

[–] asudox@discuss.tchncs.de 2 points 2 weeks ago* (last edited 2 weeks ago) (1 children)

You can use the hash for image caching.

[–] moseschrute@lemmy.world 1 points 2 weeks ago (2 children)

Got it. As you can see, I am myself very new to Lemmy and still learning their API. I still need to think through this more since even caching hashes will consume much more data than caching the text content of posts and replies.

Most likely I’ll want to give control to the user of what they want to cache. Either text or text + images.

[–] asudox@discuss.tchncs.de 2 points 2 weeks ago

Looks like lemmy api does not give the hash of the image, that's unfortunate.

You'd need to use the link field instead.

[–] asudox@discuss.tchncs.de 1 points 2 weeks ago (1 children)

Update on this matter:

I made a feature request for including an image hash with the image_details table but it seems like they will be adding a blurhash field instead, which is unique enough for a temporary cache that will at most probably cache ~100 images at best.

Oh and yeah, you probably should get ready to support blurhash in your client. It both acts as a small hash and a way to show blurry "previews" of the image.

Links: https://github.com/LemmyNet/lemmy/issues/5238

https://github.com/LemmyNet/lemmy/issues/5142

[–] moseschrute@lemmy.world 2 points 2 weeks ago* (last edited 2 weeks ago) (1 children)

I was just looking at image_details but for the height and width of the image. I see this exists in the TypeScript client schema, but I’m not seeing it populated for any posts. Any idea when this is actually populated?

Knowing the height and width of images before loading them would reduce layout shift.

[–] asudox@discuss.tchncs.de 1 points 2 weeks ago (1 children)

Seems like the image_details table was added in Lemmy v0.19.6. if you are testing it with your current instance (LW), it's still using Lemmy v0.19.3. That's why.

Link: https://github.com/LemmyNet/lemmy/compare/0.19.5...0.19.6

[–] moseschrute@lemmy.world 2 points 2 weeks ago (1 children)

Ohhh that makes sense! Thank you!

[–] Rooki@lemmy.world 1 points 2 weeks ago (1 children)

There is no implementation for alt text yet on lemmy, how would it handle post purges? / removals?

[–] moseschrute@lemmy.world 1 points 2 weeks ago (1 children)

I assume you mean when my app caches a post, but that post is deleted from Lemmy. That’s a good question. Off the top of my head, I would say as soon as I know a post is deleted, I would likely want to purge it from the cache.

I guess it’s a question of whether I should respect the API saying the post is deleted or act like a temporary archive. I’m open to either. From a technical perspective, it would be simpler to act as an archive.

As far as the type of cache I use, I may use a LRU cache, which will effectively prevent something from being deleted every time you view it. So even if something was cached a long time ago, if you pull up that post again, it will reset the timer.

[–] Rooki@lemmy.world 2 points 2 weeks ago (1 children)

I would prefer if its deleted by creator or mod/admin it should be deleted as soon as possible. To reduce bad/harmful usage of that feature. But i cant stop you do otherwise ;D

[–] moseschrute@lemmy.world 1 points 2 weeks ago

I agree with that. It’s similar to if someone loads the post in their browser. If the site isn’t actively polling the API to check if the content is deleted, they will continue to see it until they reload the page. The difference is the cache lives longer. I can probably have it poll the API when they reopen a cached article, and if it’s been deleted, purge it from the cache. The result is they may see it flicker as it’s purged quickly, and if they’re offline I wouldn’t be able to poll the API.