Hello World!

We’ve recently added PieFed.World to the Fedihosting Foundation portfolio.

PieFed.World is still in its early stages, and we still need to port some of our automations we already have in place on Lemmy.World. This includes functionality to inform people about moderation actions taken against them, as well as some other moderation tooling. Administration is currently done by the same team responsible for Lemmy.World, and the same rules that apply to Lemmy.World also apply to PieFed.World.

What is PieFed?

PieFed is a Fediverse/Threadiverse platform similar to Lemmy or Mbin/kbin. You can find a description and feature comparison with Lemmy on their website.

While PieFed has a range of features currently not present in Lemmy, it also is a a lot younger and isn’t quite as robust as Lemmy currently is. There are still many bugs and missing features that you will likely run across compared to Lemmy, which will take time to be addressed. PieFed has fairly active development and is seeing a lot of issues addressed fairly quickly, which is especially important recently, as the number of active PieFed instances and PieFed users increased significantly with a range of Lemmy instances opening up PieFed instances as well. PieFed currently does not have proper “stable” releases and no test suite, so it’s not unlikely for things to break from time to time. Although 1.0.0 has already been released a while back, there are still too many issues addressed in more recent commits to stay on that version.

As PieFed is part of the same federated network as Lemmy and Mbin, all PieFed communities can be accessed from Lemmy and Mbin, as well as other Fediverse platforms. Likewise, PieFed can access communities from Lemmy, Mbin and other Fediverse platforms. Whether you use a PieFed instance, a Lemmy instance, or an Mbin instance, it does not matter what type of instance the community is on. The software affects your own user experience, but the content is available regardless.

Creation of communities

Creation of communities will be limited to admins for the first week of the public launch. We will reserve this time to allow community moderators of established communities to claim the name on PieFed.World before we open community creation to the public. We will limit this to communities with the same name and at least 2k monthly active users. In case of multiple qualifying communities with the same name on different instances expressing interest, Lemmy.World communities will be given preference, afterwards the number of monthly active users. Please reach out if you’d like to discuss an exception. Requests can be posted in [email protected]. After the first week, community creation will be available to anyone.

Migration of communities

PieFed has a feature to migrate communities to a local instance. We will not be offering PieFed’s community migration feature initially.
We still need to research the details of how this works and the impacts this has on federation before we will make a decision on whether will support this in the future. If requested, we may reserve some names for potential future community migrations until we have made a decision to allow community migrations.

This does not prevent you from moving communities in the classic way, by opening up a new community and posting in the old community that people should move over.

Private voting

We had previously disabled private voting for PieFed.World before opening the instance to the public, as the original implementation has a range of drawbacks when it comes to federation, and our team overwhelmingly believed that the individual benefits of private voting did not outweigh the impact this has on the Fediverse beyond the user’s instance. Additionally, due to the implementation of that feature, it was also trivial to identify the original voter, which significantly limited the promises of this bringing actual voting privacy.

Since then, the implementation of private voting has been changed to provide the option of federating or not federating votes. While this is more likely to result in vote differences across instances, it does not feed bad information to other instances, which could make it a lot harder for other instances to identify manipulation.

Non-federated voting is available for all PieFed.World users.

Topics

Topics are a kind of “starter packs” or collections grouping multiple communities that people can follow, curated by the admin team. We don’t have a clear vision for the structure of these yet.

You can see an example structure on piefed.social.

Feel free to let us know your thoughts on this.

Feeds

PieFed supports feeds, which are user-created groups of communities, similar to topics. These are currently in a global namespace and all users can create public feeds in the same shared namespace.

Reputation and vote weight

PieFed has options for admins to treat certain types of content differently for “reputation” calculation, as well as options for weighing votes of specific instances differently compared to others. We currently have all options for treating certain content, communities or instances differently disabled.

How does PieFed compare to Lemmy?

PieFed has various features not present in Lemmy, check out their website!

There is also various functionality that Lemmy has, which you may be missing currently with PieFed for now:

Limited API support

In Lemmy, the default web interface relies entirely on the Lemmy API. This has the major benefit of all functionality available in the default web interface also being available to all third party clients. PieFed currently uses separate code paths and implementations for the default web interface and its API. To make it possible to access functionality in third party apps, dedicated API endpoints have to be created, even if this functionality is already available in the default web interface. This also includes alternative web-based UIs.

Multiple developers of alternative UIs and mobile clients are already working on PieFed support, some already released experimental versions.

Limited availability of Markdown previews

Markdown previews are currently only available in posts. There are many other places that accept markdown, but you can’t preview the rendered comment before submitting it. This is tracked in #532.

Image uploads only on post creation

Images can’t be uploaded to comments currently. You’ll have to host them externally for now. This is tracked in #768.

Autocompletion of users/communities

Usernames and communities can’t be autocompleted when typing their names currently. This is tracked in #799.

Limited availability of modlog

Modlog is currently very limited. While there is an instance modlog, there are currently no filters available, so it’s not possible for users to see actions taken against a specific user or within a specific community. Community modlog exists, but it is currently only available to community moderators and admins. Filtering modlog is tracked in #846.

Moderator hierarchy

Lemmy has a moderator hierarchy based on the time a moderator was appointed, relative to other moderators in the community. This allows moderators to add other moderators, but they can only remove moderators that were added later than they were. There are a few other actions that check moderator hierarchy as well, including deletion only being possible by the top mod. In PieFed, communities have one or more owners, who can add and remove moderators, while all other moderators are currently on equal level. Community owners currently cannot be changed without editing this directly in the database, if you’d like to change owners in your community please reach out in [email protected].

Donations

Similar to Lemmy, PieFed development is supported by donations. You can donate to PieFed development through Patreon.

Additionally, we would appreciate donations towards the Fedihosting Foundation, the non-profit organization operating PieFed.World, Lemmy.World, and a range of other Fediverse platforms.

Problems and questions

Please report any issues and questions about PieFed.World in [email protected].

For topics about the software PieFed, please visit [email protected].

Bugs can be reported on Codeberg.

TLDR: New platform with similar functionality available, Lemmy.World will continue to exist.

edit: reordered sections and minor wording changes
edit 2: updated community owner information

  • IndustryStandard@lemmy.world
    link
    fedilink
    arrow-up
    5
    ·
    edit-2
    3 days ago

    The way they implement Feeds and Topics is very interesting. They manage to get rid of all the different fediverse servers having their own community and mash them all in one combined feed or topic. I would love to see this “feed” option or similar being implemented on Lemmy to abstract away all the defederation layers.

    Looking at the rest of the featureset of Piefed it looks very much inferior to Lemmy. While their choice of Python instead of Rust would theoretically provide them faster time to market, Lemmy which is on Rust already exists and is functional. Piefed is half functional and has worse scaling potential.

    Most other differences appear to be more how certain features are implemented such as

    Lemmy has a moderator hierarchy based on the time a moderator was appointed, relative to other moderators in the community. This allows moderators to add other moderators, but they can only remove moderators that were added later than they were

    and

    Improved hotness ranking algorithm (subjective)

    Which really begs the question why a whole new platform is needed instead of simply implementing these features on Lemmy.

    • Aa!@lemmy.world
      link
      fedilink
      arrow-up
      4
      ·
      3 days ago

      Which really begs the question why a whole new platform is needed instead of simply implementing these features on Lemmy.

      Technical reasons aside, there’s value in having a variety of platforms, so not all features are gated behind the decisions of the Lemmy maintainers.

    • Blaze (he/him) @lemmy.dbzer0.com
      link
      fedilink
      arrow-up
      2
      ·
      3 days ago
      • Consolidated comments views for all crossposts
      • Actual instance blocking
      • Keyword filters
      • Built-in post schedulers
      • Community flairs

      All of those features exist on PieFed and not Lemmy, so I wouldn’t say that Piefed is that behind features wise.

      There are still improvements for sure, but there are also areas where Piefed is quite ahead

  • brucethemoose@lemmy.world
    link
    fedilink
    arrow-up
    10
    arrow-down
    1
    ·
    edit-2
    4 days ago

    Written in a common programming language that many developers understand and which has a bright future ahead of it. Python, of course! This will enable more contributions from a wider range of people than if it was made with Erlang, Ruby, Rust or PHP, for example.

    Consume few resources, to make it cheap to run. Many examples of federated software are bloated Rube Goldberg machines that require hefty servers and serious server administration skills, making money a constant problem. PieFed instances will be small and nimble.

    Seems orthogonal?

    I am 100% for the accessibility of Python, but won’t scaling up to large instances/userbases be an issue? Unless some underlying library does the heavy lifting I guess, or they eventually use some optimized subset. Or maybe the bulk of the costs is disk/bandwidth anyway, not CPU, IDK.

    These features though:

    Communities are organized into topics. See https://piefed.social/topics.

    Image-heavy communities can have a tiled/masonry view, like https://piefed.social/c/[email protected]

    People who get downvoted a lot end up with a ‘low reputation’ indicator next to their name. You’ll know it when you see it.

    Hide all posts based on keyword filters.

    Upvotes in meme communities do not add to reputation.

    Improved hotness ranking algorithm (subjective)

    Voting is private.

    All these are fire! I have no idea why Lemmy devs wouldn’t implement them (and am open to explanations/arguments).

    And this is good too, though it makes me worry about power-trippin’ admins: https://join.piefed.social/2024/06/22/piefed-features-for-growing-healthy-communities/

    • IndustryStandard@lemmy.world
      link
      fedilink
      arrow-up
      4
      ·
      edit-2
      3 days ago

      Python, of course! This will enable more contributions from a wider range of people than if it was made with Erlang, Ruby, Rust or PHP, for example.

      Rust is probably the most high performance future-proof choice language of choice. While still not extremely popular, it is steadily growing. Of course the way code is written is more important than the language. But the fact that Lemmy is already on Rust and Piefed on Python, puts Piefed a foot behind unless their code uses far more efficient algorithms.

      Voting is private.

      This is an awful idea because bots become invincible. Also how would this even be possible in the fediverse? Publishing votes is required for federation. Even if it is hidden publicly, someone could make an instance which federates with all other instances and simply see the votes in their back-end.

      People who get downvoted a lot end up with a ‘low reputation’ indicator next to their name. You’ll know it when you see it.

      This promotes hiveminding.

      Improved hotness ranking algorithm (subjective)

      Probably good

      The best thing in their list seems to be community migration of accounts but they have not implemented that yet.

      Python, of course! This will enable more contributions from a wider range of people than if it was made with Erlang, Ruby, Rust or PHP, for example.

    • MrKaplan@lemmy.world
      link
      fedilink
      English
      arrow-up
      5
      ·
      4 days ago

      when we started setting up piefed.world we subscribed to all active communities known to LW, which allowed us to already run with production level load on the inbound federation side. we also already discovered various performance bottlenecks that have since been improved, but i expect there to be plenty more to get addressed.

      in its current state, i don’t think piefed actually performs better than lemmy when exposed to the same traffic, but i don’t have any numbers to confirm this. a large part of performance optimization can be done even without switching languages though, simply by structuring your code correctly.

      when really optimizing both languages for performance, rust would easily outperform python, but it depends a lot on the workload whether this is relevant. ensuring that the database structure and queries are optimized is just as important as the application itself.

      • brucethemoose@lemmy.world
        link
        fedilink
        arrow-up
        2
        ·
        edit-2
        4 days ago

        in its current state, i don’t think piefed actually performs better than lemmy when exposed to the same traffic, but i don’t have any numbers to confirm this.

        we also already discovered various performance bottlenecks that have since been improved, but i expect there to be plenty more to get addressed.

        It’s interesting that it’s even in the ballpark at this early stage! And it’s great that they get a ‘real world’ stress test to see what paths chug.

        but it depends a lot on the workload whether this is relevant.

        Yeah, this is what I was thinking!

        If piefed ends up having a few CPU hot spots, they could theoretically ‘break out’ of Python just for them and/or get replaced with select precompiled libraries. Python is great orchestration language, hence that’s precisely what many projects do.

        There’s also the occasional effort at a sped-up python runtime, like Pyston, Mojo, GraalVM and such. It’s possible that could be an option for piefed some day.

        And like you said, database structure is more important, and runtime overhead may not be too relevant.

    • Die4Ever@retrolemmy.com
      link
      fedilink
      English
      arrow-up
      4
      ·
      4 days ago

      choice of programming language for web apps often has minor effects on scalability if any, it’s all about the design and database

      and yea these instances need a lot of disk space, but programming language doesn’t affect that either

    • Blaze (he/him) @lemmy.dbzer0.com
      link
      fedilink
      arrow-up
      2
      ·
      3 days ago

      private voting

      After having discussed with a few people, Rimu agreed to drop the private voting. The system will switch to two votes button

      This provides better transparency than Lemmy, as users are now complaining about tool like lemvotes: https://lemmy.dbzer0.com/post/48233901/19876557

    • wjs018@piefed.social
      link
      fedilink
      English
      arrow-up
      1
      ·
      edit-2
      4 days ago

      From my experience contributing to Piefed, the bottleneck is almost always the database. So, doing optimization on that front has yielded improvements. I suspect that the db is likely the main bottleneck of lemmy as well (though I know network speed/latency has been an issue in the past).

      • MrKaplan@lemmy.world
        link
        fedilink
        English
        arrow-up
        0
        ·
        4 days ago
        NAME               CPU %      MEM USAGE / LIMIT    MEM %     NET I/O           BLOCK I/O      
        lemmy-postgres-1   1717.01%   48.6GiB / 78.12GiB   62.21%    1.84TB / 26.9TB   59.2TB / 67.7TB
        

        the container has been up for 3 weeks

        • wjs018@piefed.social
          link
          fedilink
          English
          arrow-up
          0
          ·
          4 days ago

          I was referring more to responsiveness and page loading time than overall resource usage. I don’t know enough on the sysadmin or database side of things to really speak authoritatively about things at scale. I just mean that it’s usually postgres instead of the language of python that limits what I have worked on.

          • MrKaplan@lemmy.world
            link
            fedilink
            English
            arrow-up
            1
            ·
            4 days ago

            i guess to put it in perspective i should have included other containers as well.

            this is on a 32 physical core box with 96gb of memory:

            NAME                    CPU %      MEM USAGE / LIMIT     MEM %     NET I/O           BLOCK I/O
            lemmy-lemmy_ui_1-1      13.59%     1.864GiB / 94.15GiB   1.98%     198GB / 1.34TB    5.5GB / 4.45GB
            lemmy-lemmy_ui_3-1      20.12%     2.764GiB / 94.15GiB   2.94%     312GB / 2.22TB    6.36GB / 4.24GB
            lemmy-lemmy_ui_2-1      54.07%     2.042GiB / 94.15GiB   2.17%     222GB / 1.52TB    5.61GB / 4.61GB
            lemmy-lemmy_api_3-1     10.16%     3.629GiB / 94.15GiB   3.85%     5.6TB / 1.71TB    290GB / 411GB
            lemmy-lemmy_sched_1-1   0.01%      42.79MiB / 94.15GiB   0.04%     9.72GB / 1.23GB   1.38GB / 2.56GB
            lemmy-lemmy_api_2-1     30.97%     4.049GiB / 94.15GiB   4.30%     5.07TB / 1.57TB   281GB / 401GB
            lemmy-lemmy_api_1-1     27.39%     3.913GiB / 94.15GiB   4.16%     4.95TB / 1.54TB   286GB / 404GB
            lemmy-postgres-1        1500.05%   49.99GiB / 78.12GiB   63.98%    1.84TB / 27TB     59.2TB / 67.7TB
            lemmy-lemmy_fed_1-1     405.39%    802.1MiB / 94.15GiB   0.83%     3.67TB / 5.67TB   12.9GB / 19.4GB
            lemmy-pictrs-1          514.29%    1.495GiB / 94.15GiB   1.59%     8.79TB / 5.36TB   511GB / 114TB
            lemmy-pictrs_db-1       2.76%      2.956GiB / 68.36GiB   4.32%     531GB / 325GB     13.1TB / 9.25TB
            

            with lemmy it’s a lot easier to separate frontend performance from backend performance, with piefed that’s harder to tell when not just using the APIs and requires more analysis. proper indexes and well crafted queries have a lot of impact though. most logic that you can move to the db side is probably better done there, but it can make queries a lot more complex.

            • brucethemoose@lemmy.world
              link
              fedilink
              arrow-up
              0
              ·
              edit-2
              4 days ago

              Oh that’s fascinating. I wonder what the hot code for the postgres instance would be like in a profiler, or if it would ‘like’ a SMT-heavy server like a IBM Power10 one since most of the load is db calls.

              …Also, what is lemmy-pictrs doing? Is it just serving, or does it transcode/optimize too?

              • MrKaplan@lemmy.world
                link
                fedilink
                English
                arrow-up
                0
                ·
                4 days ago

                pict-rs also does transcoding and resizing of thumbnails, yeah. it caches the results in s3, but it there is lots of new content all the time obviously. i did pick one of the more active load snapshots, it’s not always at 500%.

                • brucethemoose@lemmy.world
                  link
                  fedilink
                  arrow-up
                  0
                  ·
                  edit-2
                  4 days ago

                  Random thing, but if you are looking for lossless png/jpeg optimizers, I did a big shootout a while back and found this little nugget:

                  https://github.com/fhanau/Efficient-Compression-Tool

                  It often beats the filesizes of big (zopfli) PNG compressors with a fraction of the CPU time. It can also losslessly convert jpegs to a progressive format, so they load better on the user’s end (and also shave off like 1% of the filesize).

                  Or maybe you already handle this! IDK, I am not an admin :)

    • zewm@lemmy.world
      link
      fedilink
      English
      arrow-up
      1
      ·
      2 days ago

      Yes it’s horrendous. Taking me 20-30 seconds to load a page whereas on Lemmy it’s instant.

    • MrKaplan@lemmy.world
      link
      fedilink
      English
      arrow-up
      2
      ·
      3 days ago

      we haven’t really rolled out topics yet, .social already has many communities sorted into topics.

      the biggest difference, also longer term, is probably the way reputation is calculated. for example, piefed.social has all these checkboxes checked as far as i know:

      we’re also working on getting our lemmy automod compatible with piefed to ensure that e.g. spam is removed on both instances when seen.

      i don’t know enough about piefed.social instance level moderation, but there are likely some differences there as well.

  • ✺roguetrick✺@lemmy.world
    link
    fedilink
    arrow-up
    2
    ·
    4 days ago

    We will reserve this time to allow community moderators of established communities to claim the name on PieFed.World before we open community creation to the public. We will limit this to communities with the same name and at least 2k monthly active users. In case of multiple qualifying communities with the same name on different instances expressing interest, Lemmy.World communities will be given preference, afterwards the number of monthly active users.

    I don’t quite understand the point of this. Are you trying to encourage migration? Running two of the same community with the same mods? Doesn’t make sense to do to me in a different domain. Not like users want to subscribe to two of the exact same community down to the mods.

    • MrKaplan@lemmy.world
      link
      fedilink
      English
      arrow-up
      7
      ·
      4 days ago

      we want to provide the option of migration for communities interested in that without having someone just create a ton of communities with popular names just to grab the names.

  • go $fsck yourself@lemmy.world
    link
    fedilink
    English
    arrow-up
    1
    ·
    edit-2
    3 days ago

    I think that votes should always be public, but if you want privacy, then they should be anonymized. This is how PieFed works, but with votes being hidden as well. If they are anonymized already, then what’s the benefit to keeping them private? It’s far too common for admins and mods to just not take notice of vote manipulation, and that’s very understandable. However, this can be helped by letting anyone who has a suspicion take a brief look and verify. Reporting based on a suspicion is just not a good solution, because it will create too many false reports and prevent people from even bothering to report just a suspicion.

    It’s just sad how common it is, and it can have some rather frustrating consequences.