PieFed contributor and part of the piefed.social admin team.

  • 1 Post
  • 31 Comments
Joined 2 years ago
cake
Cake day: November 20th, 2024

help-circle





  • 100% agreed.

    I have contributed quite a bit to the PieFed codebase, but the ActivityPub parts of the code are the main area where I dare not wander unless absolutely needed. Trying to make sense of what AP json should look like for specific actions is basically impossible and each software tends to have slightly different dialects anyway because of the a la carte nature of the FEPs.

    To that end, I just saw that you (mbin) just published all of your AP json schema. It is so incredibly helpful to have complete schema in one place for each type of activity. So, thank you a lot! I am sure I will make use of it.



  • I can confirm that this is something @Skavau@piefed.social has brought up in the past on multiple occasions. It’s an issue that I am sympathetic to, but so far it hasn’t been a high priority for us to take the time to try to address. One of the biggest complaints we see people have about the threadiverse in general is that there isn’t enough content; that their feed gets stale too quickly. So, having more subscriptions hasn’t necessarily been seen as too much of a “problem” from my perspective.

    What I did work on was making it easier to unsubscribe from communities. If you filter the communities page to just communities you are subscribed to, it should be a simple matter of clicking the buttons to unsubscribe to undesired communities. It used to reload the page each time, which made that task immensely tedious.

    Frankly, now that Skavau has a third party backing up their position, they will be insufferable about it until we try to fix it 😜



  • Wow…I just peeked into the previous thread and that got messy…

    Welcome to piefed.social! I hope you enjoy your time here. I might be an admin for piefed.social and contributed code to the project, but I still have a lemmy account that I use regularly. The two projects both swim in the same ocean.

    Feel free to reach out or post in the help or meta communities if you run into issues.


  • More recent versions of piefed should have a much improved compact mode. I basically made the thumbnails for image posts render just like thumbnails for link posts when in compact mode. It was a pet peeve of mine too that compact mode said it was thumbnails, but it still put images on a whole separate line which made them much larger than other thumbnails.

    PBZ is on 1.3.0 now, so it should be available if you want to give it another go. Just make sure that your UI option is set to compact mode. This setting is per-device, so you might need to reset it for different browsers/phone/etc.




  • I run a personal lemmy instance and two personal piefed instances, so I was just doing some comparisons. My instances are mainly used for development and testing, so they are only subscribed to a handful of communities and just have one active user.

    You are correct that when it comes to performance, like snappiness and responsiveness, the database is probably going to be the bottleneck. Unless you are scaling up to a huge degree, I would be surprised to see meaningful differences in the number of requests that could be handled due to language differences between rust and python. Yes, python is an interpreted language, but most of the libraries you are using are basically calling other system libraries written in a language like C, and the program can execute way faster than your database I/O can give it data to process anyway.

    Here is my usage summary. The lemmy instance has been running for about 1.5 years while the piefed instance has been running for just shy of a year now. I have only included the memory usage and disk since I don’t think either is really CPU hungry or bound in my use case.

    Software Memory consumption Disk Usage
    Lemmy ~1.5 GB ~800 MB
    Piefed ~1 GB ~200 MB

  • I’ve never used the baremetal setup, so I can’t speak to that. However, I actually agree with your points on the docker deployment. It’s something I have spoken about to some length with people in our matrix channel as well. There are a couple things that I don’t love about the current docker setup process, but just don’t know docker or linux stuff well enough to fix:

    • Needing to set up external cronjobs like you mentioned
    • Needing to exec into the container for initial setup
    • Not having pre-built containers that we can put in a container registry to make things easier

    Docs are an always evolving thing and we have been fortunate enough to have some other admins go through the setup process and provide feedback, which has helped flesh the docs out some more. However, there is always more that can be done.


  • This is probably true for anonymous (not logged in) users, but might not be if you are logged in. Things like user/community/instance blocks, votes, read/unread status, etc. need to be accounted for when generating the main feed for logged in users, and those are dynamic. It might be cached for some time, but the retention time would likely be short (a couple minutes maybe).

    I haven’t worked too much with the caching that piefed does, but I know it keeps some info in a redis cache to help speed things up (blocks, votes, etc.). That way getting all that info doesn’t need to be a new db query every time except maybe the first time. Some pages also make use of etags so that if the content is unchanged, the request doesn’t need to hit the db at all. I imagine lemmy has some mechanisms to do caching as well, but I am unfamiliar with the code at that level.


  • This is pretty much always going to be the case because the database query is much more complicated to filter by your subscriptions rather than the completely unfiltered views that are just sorted a certain way.

    I don’t have direct experience working in the lemmy codebase, but I do in piefed, and this is just an inherent limitation of how databases work. Basically, there is a big table in the db with all the posts that the instance knows about. As an example, let’s say that you want to look at your Subscribed feed and sort it by New. First, the database sorts all the posts by newest first (this step is very quick). Then it will filter out all the entries that are not in a community that you are subscribed to (this step is a lot slower). So, views where the database doesn’t need to do that filtering step are a lot faster than others. There are other things that slow down queries as well like blocks or keyword filters.

    Smarter admins than I can employ strategies to tune their database for better performance. I don’t have any knowledge in this area though, so others would be able to provide more insightful answers.


  • It’s stuck way down at the bottom, but the ActivityPub Fuzzer project looks really interesting. I have accounts across so many different fediverse platforms just for testing piefed interoperability and it is kind of annoying. Being able to simulate different kinds of activities from a range of platforms without managing so many accounts and doing things in a local environment would be a game changer for interop testing.

    Looking forward to the public release @darius@friend.camp