Today I learned about Sublinks (here), an open-source project that aims to be a drop-in replacement for the backend of Lemmy, a federated link aggregator and microblogging platform. Sublinks is designed to be initially API-compatible with Lemmy, allowing existing Lemmy clients, such as Lemmy-UI, to integrate seamlessly.

The project is written in Java, which may introduce some overhead but is chosen for its maintainability and familiarity among a wider pool of developers. The Sublinks team prioritizes a more inclusive and less toxic development environment, and the project has already attracted more developers than Lemmy.

While Sublinks is starting with 1:1 compatibility, future plans include implementing additional features that the Lemmy developers have not pursued. This could lead to a divergence in functionality between the two platforms as Sublinks evolves beyond its initial compatibility phase.


README

GitHub stars GitHub tag (latest SemVer) gradle workflow GitHub issues License

Sublinks

A decentralized, censorship-resistant, and privacy-preserving social network.

About

Sublinks, crafted using Java Spring Boot, stands as a state-of-the-art link aggregation and microblogging platform, reminiscent yet advanced compared to Lemmy & Kbin. It features a Lemmy compatible API, allowing for seamless integration and migration for existing Lemmy users. Unique to Sublinks are its enhanced moderation tools, tailored to provide a safe and manageable online community space. Embracing the fediverse, it supports the ActivityPub protocol, enabling interoperability with a wide range of social platforms. Sublinks is not just a platform; it’s a community-centric ecosystem, prioritizing user experience, content authenticity, and networked social interaction.

Features

  • Open source, MIT License.
  • Self hostable, easy to deploy.
  • Clean, mobile-friendly interface.
    • Only a minimum of a username and password is required to sign up!
    • User avatar support.
    • Live-updating Comment threads.
    • Full vote scores (+/-) like old Reddit.
    • Themes, including light, dark, and solarized.
    • Emojis with autocomplete support. Start typing :
    • User tagging using @, Community tagging using !.
    • Integrated image uploading in both posts and comments.
    • A post can consist of a title and any combination of self text, a URL, or nothing else.
    • Notifications, on comment replies and when you’re tagged.
      • Notifications can be sent via email.
      • Private messaging support.
    • i18n / internationalization support.
    • RSS / Atom feeds for All, Subscribed, Inbox, User, and Community.
  • Cross-posting support.
    • A similar post search when creating new posts. Great for question / answer communities.
  • Moderation abilities.
    • Public Moderation Logs.
    • Can sticky posts to the top of communities.
    • Both site admins, and community moderators, who can appoint other moderators.
    • Can lock, remove, and restore posts and comments.
    • Can ban and unban users from communities and the site.
    • Can transfer site and communities to others.
  • Can fully erase your data, replacing all posts and comments.
  • NSFW post / community support.
  • High performance.

Contact

Contributing

Support / Donate

Sublinks is free, open-source software, meaning no advertising, monetizing, or venture capital, ever. Your donations directly support full-time development of the project.

  • imaqtpie@sh.itjust.works
    link
    fedilink
    English
    arrow-up
    15
    ·
    8 months ago

    Since people in this thread seem to be more knowledgeable about programming languages than me, I’m curious how you all feel about PieFed.

    It’s a similar project, describes itself as

    a Lemmy/kbin clone written in Python with Flask

    Promising? Potential concerns?

    • SorteKanin@feddit.dk
      link
      fedilink
      English
      arrow-up
      18
      arrow-down
      3
      ·
      8 months ago

      Python started as a scripting language and I wish people would’ve let it be like that. Using Python for large systems is a nightmare. Especially if you want to juggle random contributions from indviduals that you have to vet carefully because god knows what some small change might break - Python for sure won’t tell you.

      • spaduf@slrpnk.net
        link
        fedilink
        English
        arrow-up
        3
        ·
        8 months ago

        I think this is an incredibly outdated take. Python is just about the best general-purpose interpreted language out there right now.

        • SorteKanin@feddit.dk
          link
          fedilink
          English
          arrow-up
          1
          ·
          8 months ago

          Python is just about the best general-purpose interpreted language out there right now.

          I agree with you actually - I think Python is better than Ruby and much better than JavaScript.

          But dynamically typed interpreted languages is just not what you want when building large systems. As the code base grows, static analysis becomes exponentially more important and Python provides roughly 0 static analysis. A thousand lines of Python is easy to manage. Ten thousand lines of Python is… questionable, but perhaps barely managable, if you’re careful. 100 thousand or even more? It’s impossible to keep track of.

          Just as a basic example, if you have a million lines of Python and you make some change somewhere in your code, Python won’t help you in any way to find out where you need to update things to handle that change.

          Meanwhile, if you do the same in with a million lines of Rust, the Rust compiler will point to every single place where you need to update your code to make it work again.

          I don’t know if you’ve worked with large Python code bases, but I have and it’s not fun.

    • db0@lemmy.dbzer0.com
      link
      fedilink
      English
      arrow-up
      6
      ·
      edit-2
      8 months ago

      I love the idea of piefed. Don’t listen to the python haters below. Most of them don’t know what they’re talking about. Almost all machine learning is done on python for a reason. I’ve designed and run a python service serving thousands per day, from scratch, without issues. Python is perfectly capable of making a service like lemmy and a great choice due to how easy it is to use for development.

      I wish I had more free time and I would contribute to it

      • imaqtpie@sh.itjust.works
        link
        fedilink
        English
        arrow-up
        3
        ·
        8 months ago

        Okay, thanks for the alternate perspective. I’m rooting for PieFed for sure, made an account over there the first time I saw it linked and personally felt that everything worked surprisingly well.

    • ericjmorey@lemmy.world
      link
      fedilink
      English
      arrow-up
      6
      ·
      8 months ago

      The biggest thing that PieFed has done is get up and running on public data with new accounts open to the public. This trial by fire will make it fail fast or become much improved. It seems that the main developer is quite experienced and has thought about architecture and improvements that have already been implemented. I think it’s promising for all of these reasons.

      My biggest potential concern is that moderation tools have not been implimented yet (unless the were very recently).

      As far as Python being difficult in larger systems, this can be mitigated by experience and good practice. But I tend to agree that Python is typically not the ideal choice for a large project.

    • magic_lobster_party@kbin.social
      link
      fedilink
      arrow-up
      1
      ·
      8 months ago

      The good thing about Python is that it’s widely used. Easier to find people who can contribute in Python than Rust, which Lemmy is using.

      Downside is that Python isn’t ideal for large scale systems. Other languages like Java is better at protecting the programmer against common pitfalls that come when building larger applications. Python is more ideal for smaller scripts.

      • db0@lemmy.dbzer0.com
        link
        fedilink
        English
        arrow-up
        3
        ·
        8 months ago

        Not at all. if you want protection and strict typing, you can have it just as well with python.

    • stevecrox@kbin.run
      link
      fedilink
      arrow-up
      2
      arrow-down
      4
      ·
      8 months ago

      I wouldn’t get massively excited.

      Python is a scripting language, its shines when you want to write a stand alone file which takes an input and performs a task. Scripting languages are great to learn as a first language and so python is wonderful for non developers.

      The issue you hit is the build management solutions for Python are kind of broken and these help support and encourage good development practice so a lot of Python projects end up a collection of scripts rather than a mature project. You can have good projects but…

      In raw benchmarks Java has 90% of the performance of C/C++, but in reality Java is more performant because developers get bogged down in memory management on C/C++ and they get more time to optomise in Java as a result. I’m not sure where Rust will come out to be honest.

      Python benchmarks at 50% the performance of Java, in reality I’ve found code ends up slightly worse because Python is procedural, library support and streaming is poorly supported.

      Take library support, Spring really rose to prominese because of ‘hibernate’ which was a way to abstract talking to different databases through objects, you could switch from PostgreSQL to Oracle through config. Spring data has dumbed this down so I define a plain old Java object and Spring will generate everything I need.

      Python expects you to hand craft SQL statements and every database extends SQL slightly differently, so i need to write SQL for every operation and manage/own it. So the win in being able to quickly read/write to a database (since you don’t have to learn anything about Spring) is quickly ruined because of the all the boilerplate and error handling you now have to write.

      • db0@lemmy.dbzer0.com
        link
        fedilink
        English
        arrow-up
        5
        ·
        8 months ago

        Python expects you to hand craft SQL statements

        That is completely untrue and you thinking that completely undermines your authority on speaking for python. One word: sqlalchemy

      • dwalin@lemmy.world
        link
        fedilink
        English
        arrow-up
        1
        ·
        8 months ago

        And dont forget about graalvm if you really want small binaries and lots of performance