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
Sublinks
A decentralized, censorship-resistant, and privacy-preserving social network.
- Join Sublinks
- Demo Sublinks
- Documentation
- Matrix Chat
- Report Bug
- Request Feature
- Releases
- Code of Conduct
- Contributing
- Style Guide
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
, andCommunity
.
- 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.
I see that comment but somehow cant fetch it from lemmy.ml. Would you mind asking what exactly they mean by “toxic development community”? Its honestly the first time I heard something like this about Lemmy.
I’m not sure exactly what they mean by it either, but I do think Lemmy could do more to be welcoming to more outside contributors. It would probably also be a better use of your time - to scale Lemmy development, it would be better to spend time recruiting and training contributors rather than just spend all your own time coding. You (the main two devs) know the code better than anyone else. It would be great use of your time to spread that knowledge to more contributors.
Sublinks for instance also uses the GitHub projects as a kind of publicly viewable backlog of issues and a roadmap. I think especially a roadmap is something a lot of users would like for Lemmy as well. It would be good use of your time to produce a roadmap of some kind. Doesn’t have to be on GitHub obviously, but just any kind of roadmap.
Sure being more welcoming to outside contributors sounds good. Do you have any concrete suggestions how to recruit and train them? We do have some community contributors, but they seem very limited by the amount of time they have for Lemmy after their fulltime job.
Once the new round of NLnet funding is finalized we will publish those milestones. However Im not sure if a backlog like the one you linked is really helpful, it would take a significant amount of time to manage for little benefit. After all every open issue on the Lemmy Github is up for grabs for anyone to implement it.
Here are some suggestions for how to encourage more outside contributions:
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.
Update from Lemmy after the Reddit blackout
spoiler
Of course you have more experience working on a big project so take this with a grain of salt.
Thanks for the suggestions!
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?
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.
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?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.
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?
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.
That seems to get more into entertainment, not what we want to do.
We do have biweekly dev updates which are somewhat related. But discussing individual issues here would likely duplicate discussions from Github issues.
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.
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)
That sounds great :)
I think the GitHub issue tracker that you’re already using is plenty as a backlog. The more important part was the road map.
It’s a good question. I would recommend taking a look at the Bevy game engine project. They’ve had a success story with lots of contributors and they also use Rust. Obviously they have it easy because game development is something a lot of people are passionate about while online forums aren’t as hot… But still, I think they’ve done some really good stuff and it seems like a really well-managed open source project.
One of the bevy project managers did a talk at RustConf 2022 that I’d recommend watching: https://youtu.be/u3PJaiSpbmc?si=AtdmdalfFidWOJYq
Yes Bevy has a big advantage because its a library, so everyone who uses it is a developer and is able to fix minor issues. In case of Lemmy only a small fraction of users are developers, and even less know Rust. I watched the video, but its not easy to take concrete suggestions and apply them to Lemmy. Maybe the community reviews for PRs would be a good idea to get people familiar with the codebase. It also mentions using a project board so we should consider that. Though Im not sure how to select issues for each milestone because again, everything is up for grabs.
Hmm. If only there were a way the developers who already know another popular language could contribute to help the community. I suppose someone could make a Lemmy -compatible server in another, more popular language. Nah, that’s crazy talk.
Or these people could learn Rust and contribute to the existing project. That would save years of duplicated effort. I personally knew zero Rust before starting to contribute to Lemmy, its really not that hard to learn.
Here is an alternative Piped link(s):
https://piped.video/u3PJaiSpbmc?si=AtdmdalfFidWOJYq
Piped is a privacy-respecting open-source alternative frontend to YouTube.
I’m open-source; check me out at GitHub.
You don’t see it on lemmy.ml because dubvee.org has defederated from lemmy.ml.
Hmm not sure whats the context of that quote.
Okay so I wasn’t sure before but I think this issue might be a good example: https://github.com/LemmyNet/lemmy/issues/4433
Yours and dessalines comments all come across as defensive or dismissive. The comments make it sound like you are more interested in dismissing the bug than actually acknowledging it.
This is definitely not a way to approach a bug report. You need to be much more understanding of bug reports (especially ones as serious as this one) and display a willingness to fix things, and follow through with it.
I don’t think Lemmy will work out in the long term if this kind of attitude continues.