TLDR: The main reason was Lemmy hogging server resources.

Last year, during the Reddit 2023 API controversy I finally deleted my account and moved on to Lemmy. Here’s a look at my experiences and why I eventually decided to switch to PieFed.

  • @mryessir
    link
    94 months ago

    There is Sublink but it’s written in Java, I don’t think I want to deal with Java’s runtime environment.

    Don’t hate Java just for the sake of it. According to the repository they ship a Dockerfile and use gradle to build it. Everything should be abstracted for you.

    When comparing environments for a program between Java and Python you should probably prefer Java’s. Years of experience and build from the ground up for enterprise deployment. Python module system is hacked together. It ain’t even be fair for python to compare itself in this regard.

    Also this project is spot-on within Java’s main territory. It makes absolutely sense to me to use Java for such a program.

    Plus monitoring/maintaining a Java application is way better then any python program.

    • PenguinCoder
      link
      fedilink
      English
      44 months ago

      Java and gradle build is way easier (IMO) than trying to wrangle the dep and build steps of everything react/node/rust based.

    • @cerement@slrpnk.net
      link
      fedilink
      34 months ago

      along those lines, how well would the link-aggregator concept match up with one of the BEAM languages (Erlang, Elixir, Gleam)?

      • @mryessir
        link
        2
        edit-2
        4 months ago

        That’s beyond my experience but I would say functional languages can perform similiarly.

        I suppose - and honestly do not know if - aggregation is done via synchronization into some persistance unit.

        Therefore I would eypect that a functional language like Elixir, Lisp etc. would outperform a language with manual memory management in terms of maintainability.

        Depending on the capabilties of packing structs into close memory or traceability and elaboration of compiler it may outperform single or multi-threaded.

        Though outperforming recent JREs may be hard, since they may trace hot paths. Default configuration Java vs. a proficient developer of a functional language I assume that latter at least go even.

        But I can’t judge. Even on the repository of said program I did not even bother to look at the contents of the gradle.build or Dockerfile to be honest.

        I do think that maintainability of functional languages, when only the common denominator between any functional language is used, is better to spaghetti Java source code. But that’s another issue, right?

        // edit: Spaghetti Source Code is a good thing in my opinion. And sincr I did not adsress your question directly: A proficent developer is more likely to write faster Java then functional code, since Java is just a layer above C with one of the best compilers there is. Functional languages require carrying some non-neglectable knowledge of the compiler to make use of the fastest paths through the code. On the other hand Java is just ALGOL-Syntax and therefore imperative; Which translates more easier into *.asm.

        // edit2: Synchronization into some db isn’t depending on the nature of the language but there may be overhead where some concepts of languages simply perform better. So I would expect that transitions from some interpreted language is slower then compiled languages. Note that even though Java belongs to the former it is conceptually compatible with the latter. I’m out. You called me out. I’m a still a newbie. Had to append so much.

      • kopper [they/them]
        link
        fedilink
        English
        1
        edit-2
        4 months ago

        The Pleroma family of ActivityPub servers are on Elixir and their bottleneck seems to be their awful database schema where everything is JSONB, and even then they’re known to be quite lightweight, so I assume with a proper DB schema it’d work quite well…