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.

  • ChasingEnigma@lemmy.worldOP
    link
    fedilink
    English
    arrow-up
    26
    ·
    edit-2
    8 months ago

    Here are some suggestions for how to encourage more outside contributions:

    • Create an ARCHITECTURE.md document explaining the overall architecture and different components of Lemmy. This would help new contributors quickly familiarize themselves with the codebase.
    • Publish a public roadmap with milestones and release plans. This gets people excited about the project’s direction and motivates them to contribute.
    • Nightly builds enable contributors to test upcoming changes, offer feedback, stay actively involved in the project’s progress, iterate quickly on improvements, and foster a culture of continuous improvement.
    • Implement a bounty system for critical or challenging issues to incentivize contributions. Some people who don’t want to contribute with a monthly subscription may prefer this kind of contribution.
    • Create project swag (stickers, t-shirts, etc.) and distribute it to active contributors as a token of appreciation.
    • Institute a “Lemmy contributor mentorship or apprenticeship” program where experienced developers formally take up 1-2 promising new contributors under their wing. This would be modeled after the Sith/Jedi master-apprentice relationship where knowledge and skills are passed down. Later when the apprentice has managed to develop a few issues by themselves they can take some apprentices.
      The concept of more experienced contributors working with newcomers to develop features in a FOSS (Free and Open Source Software) project is commonly referred to as “mentorship” or “pair programming.” In pair programming, two programmers work together at one workstation, with one writing code while the other reviews each line of code as it is typed in. The roles can switch frequently, and this method is known to enhance knowledge sharing, code quality, and team bonding. Beyond pair programming, establish a structured mentorship program where experienced contributors can mentor newcomers on a one-on-one basis.
    • Live or recorded screencasts solving issues, similar to mentorships but instead of one-on-one it allows more people to feel engaged in the development process, and provide feedback in the case of live streams.
    • Host discussions about issues on Lemmy itself, as suggested in the blog post below. The voting and threads with nested comments make it easier to have productive conversations compared to GitHub. The community is here so you’ll get more contributions right away in the form of ideas and feedback.
      Update from Lemmy after the Reddit blackout
      spoiler

      At the moment we are urgently working to solve major issues, such as optimizing slow database queries, ripping out the inefficient websocket API, and fixing a major security vulnerability (big thanks to deadcade). In addition we suddenly have to manage dozens of pull requests. To give us time to work on these priorities, it would be very beneficial if users could refrain from interacting with issue trackers when possible. Before opening an issue, make sure that it hasn’t been reported before. And when writing comments, make sure that they actually contribute to solving the issue at hand. Generally it is better to move discussions to Lemmy if possible. We are very thankful to everyone who contributes by writing code, hosting instances, moderating communities, and answering questions.

      At the same time, we are seeing lots of requests to implement major new features, such as migration between instances, or combining similar communities. As described above, we are completely overloaded with work, and definitely won’t have time to implement these in the near future. If there is a feature you want to see implemented, you will likely need to work on it yourself, or find someone who can.

    Of course you have more experience working on a big project so take this with a grain of salt.

    • nutomic@lemmy.ml
      link
      fedilink
      English
      arrow-up
      15
      ·
      8 months ago

      Thanks for the suggestions!

      Create an ARCHITECTURE.md document explaining the overall architecture and different components of Lemmy. This would help new contributors quickly familiarize themselves with the codebase.

      The documentation has some info about the architecture as well as how to start contributing. Is there anything particular missing, or do people not find these docs?

      Publish a public roadmap with milestones and release plans. This gets people excited about the project’s direction and motivates them to contribute.

      As mentioned in the other comment, we will have a public roadmap once the NLnet milestones are finalized. Other than that the issues are up for grabs for anyone, so Im not sure what sense it would make to give them priorities.

      Nightly builds enable contributors to test upcoming changes, offer feedback, stay actively involved in the project’s progress, iterate quickly on improvements, and foster a culture of continuous improvement.

      These are available as :dev Docker images, and deployed to test servers at enterprise.lemmy.ml etc. Maybe this should be documented somewhere to let people know?

      Implement a bounty system for critical or challenging issues to incentivize contributions. Some people who don’t want to contribute with a monthly subscription may prefer this kind of contribution.

      Bounty systems dont work well in my experience. Usually the reward is too low to pay an actual dev salary, and then its still a hassle to get the money into your bank account. Plus there is no gurantee to get paid for your work, its always possible that someone else submits a solution just before you finish yours.

      Create project swag (stickers, t-shirts, etc.) and distribute it to active contributors as a token of appreciation.

      Good idea, though we dont really have the funds to pay for that. It was also suggested to sell swag to earn money for Lemmy, but havent gotten around to that yet. Do you by chance any good company to produce and sell this?

      Institute a “Lemmy contributor mentorship or apprenticeship” program where experienced developers formally take up 1-2 promising new contributors under their wing.

      Well if anyone opens a pull request we give feedback as part of the review process. And if anyone has questions we also answer them in the issue tracker or on Matrix. But in practice there seems to be little demand in this regard.

      Live or recorded screencasts solving issues, similar to mentorships but instead of one-on-one it allows more people to feel engaged in the development process, and provide feedback in the case of live streams.

      That seems to get more into entertainment, not what we want to do.

      Host discussions about issues on Lemmy itself, as suggested in the blog post below. The voting and threads with nested comments make it easier to have productive conversations compared to GitHub. The community is here so you’ll get more contributions right away in the form of ideas and feedback.

      We do have biweekly dev updates which are somewhat related. But discussing individual issues here would likely duplicate discussions from Github issues.

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

        The documentation has some info about the architecture as well as how to start contributing. Is there anything particular missing, or do people not find these docs?

        That is a very short description. It doesn’t really go into details of critical modules, how things are built and setup, what important libraries are used etc. I would expect such docs to be longer and more detailed to make it easier to get an introduction to the code. I would expect each repository to have its own detailed ARCHITECTURE.md - the Lemmy backend is much too large to describe in just a few sentences.

        And yea producing and maintaining that kind of documentation isn’t “glorious” work and probably not particularly fun either - but I do think it’s a good way to spend your time, and the people donating do want you to spend your time on the highest impact possible obviously.

        Well if anyone opens a pull request we give feedback as part of the review process. And if anyone has questions we also answer them in the issue tracker or on Matrix. But in practice there seems to be little demand in this regard.

        I don’t think just waiting for contributors to pop up is going to work. You’re right, there is little demand - or more likely, people don’t know where to start or what to do. My suggestion would be to actively advertise a mentorship that people can sign up for and then choose someone from the lot of applicants. Actually dedicate hours to train and mentor the new contributor to be familiar with the code base. Being passive in this case won’t attract anyone - you need to be proactive. (that is my 2 cents at least)