Skip Navigation

Features & Changes For The New Pawb.Social Lemmy Fork

Now that Pawb.Social has forked Lemmy, I thought it would be appropriate to go ahead and compile a list of changes or additions that have been suggested, or that have been spotted by others or myself. This is hardly a comprehensive list, and down below will be two comments by me, one for changes to back-end changes or additions and one for the front-end suggestions as well.


A quick note before I start

One important thing I do want to stress is that any changes or additions made should not render our fork incompatible with other Lemmy instances, the apps that allows for easy usage of Lemmy (Jerboa, Thunder, etc), nor cause issues for interacting with, or interactions from, the rest of the Fediverse. To take a quote from Linux Kernel development: Don't Break Userspace!

Now, let me specify for any who aren't in the know about the differences between back-end and -front-end are:

  • Front-end: focuses on the user interface, designing the visual elements, and ultimately the UI elements that a user will interact with on the web page.

  • Back-end: deals with the server-side functionality, handling data processing, storage, and communication with databases and external systems (The rest of the Fediverse) using server-side programming languages and frameworks. For Lemmy, this is done with the Rust language.


Now, with that summary done, here is a (still WiP) list of changes:

Back-end

  • Addition: Individual community blocking (as opposed to the current instance and user-only blocking).
  • Addition: Ability to follow entire instance (or at least follow all communities on an instance).
  • Addition: Allow for individuals to block instances and communities, instead of requiring instance-wide action to block them.
  • Addition: Give instance admins better moderation tools (hashed IP address, etc. Needs to be GDPR compliant)
  • Change: Better support for automatically linking other communities (and instances) back to your primary instance for easier following and interaction.
  • Change: Better cross-compatibility between Lemmy and the Mastodon/Pleroma side of the Fediverse.
  • Change: Better cross-compatibility with KBin.
  • More to come

Back-end & Front-end

(For things that will require changes on both ends to function properly)

  • Addition: Post flaring - To allow for better post management, sorting, viewing, and moderation.
  • Addition: Ability to sort communities into groups (similar to multireddit).
  • Addition: 2FA during login/sensitive actions like password changes.
  • Addition: Mark servers and people as “friends” so they display a marker by their name elsewhere.
  • Addition: Better nsfw post handling, more specific viewing settings, etc.
  • Addition: Adding notes to users (for moderation purposes)

Front-end

  • Addition: Add more themes/theming support to the UI.
  • Addition: Add better support for widescreen displays.
  • Addition: Ability to pick a default sorting method (perhaps per community).
  • Change: Refresh and organize some of the UI elements for Lemmy (somethings are just a bit outdated looking...).
  • Change: Alter donation button at the top to point to the donation portal for the/an instance (this should be the default tbh, the prominent button shouldn't direct to the Lemmy devs to begin with...)
  • Change: Move all information about Lemmy and the Lemmy devs to one, out of the way location, potentially as a citation in the footer.
  • Change: Add link pointing to the GitHub fork for Pawb.Social
  • More to come.

Please see below for the two threads to add your own thoughts or comments on things you want added, changed, or even removed. All comments and thoughts are welcomed!> ability to sort communities into groups (similar to multireddit).

48
48 comments
  • I have an idea, but I'll be honest, I don't know the difficulty of this idea. For back end & front end: The ability to sort communities into groups (similar to multireddit).

    I also wonder how we'll implement all the changes on pawb.social to existing apps such as jerboa. While pawb should still be usable through the apps, features that don't exist upstream probably won't be available on the app either. We could fork these apps, but that would take too much resources.

    • Some way of having multiple separate feeds would be very useful to me. I like having my furry stuff separate from my non-furry stuff, and I really need most of the NSFW stuff to be kept in its own little container. As it is now, this requires having three different accounts. More if I want to sort things further, which I likely will. This would be manageable if we had something like the RES account switcher but I'm not aware of anything like that for Lemmy.

    • Yeah, ultimately what I said above must apply, we can't break the experience for other Lemmy users, or others from the wider Fediverse (aka, we can't break userspace). Whatever changes we make will need to fit within those confines, with the exception being changes that can be pushed upstream, if the Lemmy devs will have any of it.

      As for your suggestion, I absolutely agree. I meant to put that on there actually, as I often relied on that in Apollo. Favorites too, which I made use of in Infinity.

  • So, I don't disagree with the decision to fork (especially because of the hardcoded donation URL). I am concerned about fracturing of the codebase, so I have a few questions:

    • Will this fork always be a sequence of commits based on some Lemmy version, or do you expect history to diverge (git rebase vs merge)?
    • Will there be an effort to upstream useful changes into Lemmy proper (a lot of the changes suggested are things that might be desirable for Lemmy in general).
    • There's a number of other communities with a desire to use a forked Lemmy version, do you intend this fork to be useful for them, or is this purely for pawb.social?

    And perhaps most importantly:

    • Will the name be changed from Lemmy to something else if there are significant changes.
    • When there are changes to the base Lemmy project, those will be implemented in our fork, and when we feel there's a feature to push back upstream, we'll gladly do so.

      We're also not making the fork specific to Pawb.Social, so things like the donation link will be customizable.

  • Comment here for any suggestions for Back-end development!

    • Adding notes to users (for moderation purposes)

      Honestly would be cool if that could be done for anybody, not just admins / mods, like Reddit with RES. It lets you add something sort of like a flair to any user that only you can see. You can pick from a list of font colors and just add a short thing, it's very handy.

      • Yes that can certainly be done! That actually fits with the "Friend Flair" feature that was suggested elsewhere here pretty well.

    • Addition: Allow for individuals to block instances and communities, instead of requiring instance-wide action to block them.

      Don't we already have the ability to block individual communities on an user level? We certainly have a 'Block Community' button available, and it seems functional from what I can tell.


      I'd love the ability to better filter and sort the communities list. In particular, I'd like to be able to filter (or sort) by communities I haven't subscribed to, or by communities by instance. I get that we can go to another instance and see their community list, but it's a bit of a PITA to subscribe or unsubscribe from there; ideally, we'd be able to do this within this community, so the sub/unsub links are present and functional.

    • 2FA during login/sensitive actions like password changes.

      Not sure if this is strickly backend, but some sort of 2FA would be really appreciated, like getting a one time password via email or having to enter a password from a TOTP app.

    • Addition: Ability to follow entire instance (or at least follow all communities on an instance).

      Does there currently exist a way for one instance to poll another instance for their list of communities? I thought that an instance wouldn't even know a community exists unless someone specifically searches for it.

      I know it's listed under backend, but wanted to ask about the front end plan for this feature. Let's say I search for Lemmy.world. Is the plan to output a checkbox list of communities and have us deselect any and confirm?

      • I'm working on an app, and it's pretty straightforward - you just ask them what communities they have. I've got a screen that let's you browse them (I added in mostly because the server page was too empty), but pawbs still doesn't know about them

        Most apps only connect to one instance at a time, because it's way more complicated to manage... I've got big goals though haha.

        It's not exactly easy though - there's well over 1k Lemmy instances now, and Lemmy.world federates with around 2k. Through the interconnects you can get kbin magazines if you know about them, but you'd need to use their API if you want to see all of them

        And I don't think Lemmy uses the normal API to federate, and probably pulls every community it knows about - both are very much solvable problems, but there's more important things to solve first. It'd be nice for users, but ultimately it'd mean more federation, and some servers are having trouble keeping up

        Finally, those 1300 instances? The vast majority of them are reporting 1-5 people, but they've got plenty of communities - many of them reporting no people and 1 or 2 posts.

        If you throw that all at the users, it'll be almost worthless - you have to filter them. But where do you draw the line? Most of the instances are probably private servers and don't want too much attention, and what about ones that are just new?

        They need to extend the protocol to handle communities better in many ways, but you can't do that casually.

        In the meantime, my app is almost ready to launch, but i was going to do it last night for the next wave of refugees, and everyone else apparently had the same idea.

        I tried some out, and they've become a lot more polished, while I was going to leave optimization and fancy features for next week. My app wasn't the fastest or the prettiest anymore... It's not slow or messy, but I'm not sure I'd pick it. But I can make it faster and a little prettier with another day or two (I'm hoping someone here can give me some style advice after seeing the art here), but more importantly I can also add features that set me apart

        So I can do fuzzy searching on your device for communities, so it will search the name, description, and sidebar for words. I can't do the same for servers - it's too much data. I need to write something to filter out smaller servers and ones in different languages, and even then I'll probably be limited to the address and maybe name before it gets slow. I might also have to strip out the servers with closed registration

        So you can find servers by name, maybe look through the top 100 and more data on them. Then, I can grab communities on them one server at a time, or I can let you use their search bar to find them by name

        I could also take the top 5 or 10 servers, and let you search through the top few dozen communities on each

        Hopefully that made sense...

        So walk me through how you envision this feature, tell me various ways you think you'd use this, what frustrates you, and I'll do my best to build it in

        I'm also open to whatever other suggestions to what would make Lemmy better for you, practical or not

    • Change: Better support for automatically linking other communities (and instances) back to your primary instance for easier following and interaction.

      Does this mean that finding and subscribing to communities on other instances will be streamlined? If not, that definitely needs to happen. The current process of going to another instance to search for a community there, copying a link, then going back to your home instance and searching for the community where you already know it doesn't exist is just mindbogglingly unintuitive. Hell, I can't even see NSFW communities on other instances even though my account is set to show them, and it seems like the only current way to fix that is to go to that instance and subscribe to one of its NSFW communities (that I can't see).

    • Community Approval!

      Basically, an instance option that requires a new community to be approved by an admin when created, in the same way that a new user account would.

      As far as I'm aware, currently there is no notification that a new community has been created and unless people are watching the local community list regularly, it's easy for them to slip by unnoticed. This allows scummy people to create a dodgy community, post a bunch of garbage to it and use it to attract more scummy people or start inter-instance drama.

    • User/community migration from one instance to another; I believe there is an open issue for this on the main Lemmy issue tracker. Dunno how far it's gotten, I'm sure it's a non-trivial thing to figure out.

  • Comment here for any suggestions for Front-end development!

    • Not sure where the settings actually live, so I can't say whether this is backend or frontend, but I have been thinking that nsfw post handling could be improved.

      Specifically, I've been thinking about (and actually been considering implementing) some new per-user settings:

      • Don't show nsfw posts from other instances in the "all" feed.
      • Don't show nsfw posts in the "local" or "all" feed at all.
      • Always show nsfw posts from communities the user is subscribed to, regardless of the above two options.

      Should cut down on any drama caused by someone registering on a random instance and subbing to gfur. :P

      EDIT: Looking at the replies, it looks like a simple site wide toggle a-la Furaffinity might be easier to implement and more egonomic.

      • I think we can simplify your idea as a setting or toggle to allow user to enable or disable NSFW on "Local," "Subscribed," and "All" feed separately.

        To add to that, a simple NSFW toggle above the feed (such as near the sort options) should help, so user can enable and disable NSFW with one click on the feeds page, instead of having to go through settings. I don't really like seeing nsfw posts when I'm not in the mood.

    • The ability to hide posts, and/or auto-hide read posts.
      This will be a HUGE improvement.
      Can't avoid those pinned posts when sorting by Hot/Active/Top of day, for example...

      • Came here to suggest an 'Unread' filter option; auto-hide read posts covers it. I think that's the single biggest problem I have right now. There's a lot of content out there but it's very hard to find it if you're just sitting here scrolling for a while, because you continually see the same things getting sorted to the top.

    • I'd love to be able to pick a default sorting method (perhaps per community).

    • Adding notes to users. For example for moderation purposes.

      Also for moderation purposes (will likely require both front and backend):

      -Give site admins the ability to view user last few ip addresses and emails, but display them as a hash so that we in Europe can onboard admins without having to worry about disclosing personal data of our users and its impact in current legislation. This data could be hashed with salt that's specified by the server admin as an environment variable or in the config files.

      123.123.123.123 >> 4fc174d62e... [email protected] >> [email protected] or e375fab75@g***l.com

      • Ability to block sign up of specific email domains

      • Secondary site admin role that has no ability to purge content from the database.

    • This probably requires a bit of backend to store the data too but maybe a way to mark servers and people as "friends" so they display a little marker when you see them in the wild.

      I've been using this userstyle to do it on a server-basis and I love seeing friends in unexpected places. I've seen a few one-off people that posted really great content and thought "wow I wish I could keep track of them". Marking them so I can spot them in the wild, and maybe being able to scroll through my marked people's comments in a feed would be neat.

      • This sounds similar to the user tagging feature in Reddit Enhancement Suite, which I believe is done client-side. I've found it useful for lots of reasons and having it built-in might allow for even more functionality. Another similar feature I've seen elsewhere is the ability to add private (only visible to you) notes to profile pages.

    • Highlighting of new comments that have been posted since you last visited that comment section, similar to what Reddit does if you have their gold subscription. In my opinion this is an essential feature that needs to be available to everyone if you want to encourage actual discussion rather than drive-by opinion dumping.

      The larger a comment section gets, the harder it becomes to find any particular comment chain you were interested in, so most threads devolve into two people having an argument (because direct replies trigger notifications) or everyone just shouting their opinion into the void and then leaving forever. There's no point in ever coming back because you'll never find anything again unless someone responds to you personally.

      [EDIT: There's some kind of auto-refresh that happens occasionally and it looks like it might highlight new comments, but it also unhighlights them on the next refresh so you could end up with new comments marked as old ones if you don't read them in time. It may just be my inexperience with the platform, but this feels confusing and inconsistent.]

      In that vein, anything to better visually organize comment sections or get more of the section onto the screen at once would be very welcome. Maybe all that empty space to the left and right could be put to use somehow?

    • Collapsing comment threads.

      One thing I sorely miss from Reddit is the ability to collapse a comment chain when I'm done reading it. Makes reading long chains much easier. This could be done like on new Reddit by clicking the colored bar on the side of a comment, if it was a bit wider.

      • That functionality already exists, at least on desktop. There's a little box just to the right of your name that appears to collapse the entire thread when you click on it. What would be a helpful addition is some way to collapse a thread from the bottom, so I don't have to scroll back up when I'm done reading that thread. Clicking the color bar sounds like a decent way to accomplish that.

        I also miss having the line separators between threads like you can enable on Old Reddit.

    • I’m curious if y’all have considered merely switching your default frontend.

      Photon recently reached feature parity with lemmy-ui and appears to be improving at a faster pace than the official UI.

      • Heh, it's funny you mention this... Let's just say some things are in the works for that. :)

  • This is quite impressive. There's so many quality of life features you've mentioned. Do you think you'll have problems applying the fork to the upcoming 0.18 version?

  • I think I might try to mess with improving the UI a bit to familiarize myself with the codebase. Is there a separate chatroom for fork development, or is the Lemmy instance itself the official place to discuss development?

48 comments