Right now, I’m feeling concerned and wondering what is going on in regards to Sublinks here, since I have created a community for discussion on koalas about a week ago on here and have started and been doing work on it recently. But now I’m hearing about Sublinks and feeling concerned if I created it on the wrong instance or the wrong platform since I’m now just recently hearing about it. I’m just feeling worried and wondering whether or not if I should do anything or not.
Can someone explain to me why sublinks was started as a project? If the main difference is improvements to the moderation tools, it feels like it could have just been a PR to lemmy.
I’m trying my hardest to not assume it’s the classic “Java engineers are scared of other languages” meme
I like lemmy but also I’ve been following the drama from the sidelines, so I think the focus on Rust vs Java has nothing to do with the choice to create a lemmy alternative.
The reason sublinks exists is that the lemmy devs have made some large technical and PR mistakes that have led to multiple larger instance admins losing faith in them.
There was the Beehaw debacle where nutomic told the Beehaw admins that they should go to a different platform and take their “entitled” “demands” with them. It’s not surprising to see various alternatives to lemmy springing up as a result of the devs telling people to do so.
There was the illegal content spam incident which required instance admins to interact directly with the image database in complex ways for each image to remove the content from their servers, and I believe lemmy.world disabled submitting images if you are using a VPN or the tor network as a result. The lemmy devs have made some bafflingly derisive comments about that incident.
And then there’s the recent update that has broken federation of bigger instances, which is an ongoing issue. Communities are having to move instances to help with this bug which should have been caught in testing the update.
So sublinks seems to be some folks deciding that they can do it better.
Choosing Java is one way that they think they can do better. The argument goes, significantly more people know Java than Rust. Lemmy has had some problem getting extra help as a result of this limit, so hopefully sublinks will have a much larger pool of talented devs who will step up and submit code.
Sublinks isn’t the only one, too. Piefed is the python Lemmy alternative that’s cropped up recently and I believe there are some others in other languages.
Whether any of them can do it better remains to be seen, but it does seem like the Rust fans are struggling to understand that language choice isn’t always the most important part of a project.
Thank you for your valuable comment.
There is Mbin in PHP!
Great summary!
They were kinda acting entitled to not just free labor, but to have their issues prioritized over others.
I mean, Lemmy was explicitly written in Rust because the creators of Lemmy wanted to do a project in Rust. The complaints that I’ve seen about the language choice are just bizzare with that context. I’m quite happy with others hoping in and making their own compatible things in different languages because that makes the world more interesting and gives more people something that they might want to contribute to.
Beehaw was acting like a customer, which they kind of were and sort of weren’t at the same time. Customers act entitled, but they didn’t seem to be any worse than most. Lemmy’s devs are right in that they don’t owe them anything, really, but the way they voiced that was bad PR, IMO.
It sucks having to care about message when all you want to do is make something you like, so I get it, buy I don’t think it looked great from the outside.
I don’t think choosing Rust was inherently a bad move. I think it makes sense that if you are going to try to make a competing platform to NOT choose Rust, and instead pick something that a lot of people can contribute to.
But yeah, complaining about their initial choice doesn’t make sense, and neither does the “why don’t they just learn Rust” sentiment given the context of all this other stuff.
I’m not aware of them having a support contract. This is exactly what I mean when I state that they were, in fact, acting entitled. To my knowledge, the Lemmy project has 0 customers. It is a FLOSS project so, everyone needs to check their entitlement at the door. None of us are entitled to anything from the devs. They are volunteers donating their software to us.
With FLOSS projects, one can file issues but the software is “as is” as specified in the license. If one wants changes that are not prioritized by the devs, the choices are: wait, contribute, or fork. That’s it. None of us are customers but recipients of gifted software.
Hard disagree. Some people clearly need some tough love and etiquette lesson. If someone gives you a gift and your response is to complain the it isn’t quite what you wanted, this is generally considered rude and ungrateful behavior. Want to be a customer? Buy commercial software.
Context is very important here and in other places. The devs’ goal was primarily to make a project in Rust, not to compete with anything. With that being their goal, “learn Rust or start your own project” is really the only reasonable response.
To reiterate though, I am very happy that Sublinks, k/mbin, et al have been established. Some people like developing in Java or PHP and it brings a smile to my face for the options to be available to them. Add to this the compatibility with Lemmy and I think that this is a beautiful recipe for open-source innovation. I think that we can all benefit from the “cross-pollination” between projects and ideas that can better manifest in some languages can be ported to others.
Having a support contract has nothing to do with being a customer. If the devs didn’t want customers, they shouldn’t have released their product to the public. It really just seems like they can’t handle the stress of writing code AND managing their customers’ needs.
Tough love is never the correct way to deal with people, and never the way to manage a product.
In some of the threads I’ve seen the devs have said that they could be making more money if they went to a big tech corp while also exhibiting behaviors that would NEVER fly at any of the big tech companies.
Learning projects are great! Releasing them isn’t necessarily the best way to go about things, though.
Don’t get me wrong, I don’t envy the lemmy devs for the position they’ve put themselves in. It is incredibly stressful to juggle what they’re trying to juggle, and PR is not usually the strongest skill an engineer has.
I hear you on the context of choosing Rust. It’s not really that relevant to what I’m saying, but I have seen people complain about Rust as the language preventing them from contributing. Having more contributor’s wasn’t their goal, it was to build something in Rust to begin with.
My point was that Sublinks’ goal IS to invite contributors, so Java is a smart choice.
I’m working on the frontend for it rather than the backend so I’ll comment more about that
But a new project allows for way easier change of the base aspects. For example im currently working on a theme system thats allows for dynamic themes created at runtime as opposed to it needing to be built in. Also a components library. If this was added onto lemmy ui it would involve massacring the current structure of the UI to essentially make it a new project anyways
Originally was working on the stuff in a new UI on my own but I’ve merged that into what’s happening with sublinks since they’re making a new UI anyways as well and would let more of my UI changes to get connected up to the backend easily and shared across multiple frontends
In terms of technologies it also allows the federation code to be completely separated out from the api. Federation is currently its own project so it can be scaled separately and its made in go
Also allows for more organizational changes since we have more control over how the project is structured and the structure of how we talk to each other and decide on changes is different than how its done with lemmy (having a matrix space we talk to each other and there being weekly meetings as well)
Moderation tools is the first milestone after parity but theres also other milestones as well in terms of changes made that differentiates it from lemmy visible on our task board thats public on the github repo
Normal thats theres going to be multiple of the same type of software as people have different goals of what it should be and how it should be organized. Bevy and godot both exist in the open source gamedev space. Theres 7 misskey forks that all mostly aim to do different things but share the misskey api (and a lot of them also use the mastodon api). One of which (iceshrimp) is currently having a rewrite to change the tech stack and make it easier for them to add features
Well, one thing that has me kind of worried about my community here if lemmy.world were to switch from Lemmy to Sublinks and end up becoming sublinks.world instead.
Nothing would change about the community itself if it goes from lemmy to sublinks. Still accessible on the federation as normal and on version 0.1 the core features should have parity
Reposting my comment I did before:
For world Ruud commented about that before and nothings been decided currently on theyre going to handle it (I assume youll see some sort of post in their meta community way before anything happens)
Also the moderation tools could’ve been Java and connect to the Lemmy database/API (maybe with some pull requests to add to Lemmy’s API), which to me sounds a lot better than saying fuck it and rewriting everything, it could’ve lived in its own repo anyways
I tried that the but API lacked a lot of features that they were too busy to add, like proper pagination to find the latest changes, etc. I started a project like that first called socialcare.cloud but have since shut it down in favor of Sublinks.
I still feel like adding those API routes and making PRs is easier than a full rewrite, with less fragmentation too
Easier but not what I thought was needed. We need more choice!
It literally is. The main maintainer didn’t want to learn Rust.
That’s not true, I wrote a blog post about it: https://jasongr.im/blog/why-i-started-sublinks/
Even if that were true - does it matter?
Java is a perfectly valid choice for something like this.
Yes, Rust is “faster”, uses less memory, etc…
Java is fast enough, though. It offers a fantastic ecosystem and, seeing as these projects are ran by volunteers who do this in their free time, there’s a lot more people willing to chip in some work.
Yes because it fragments development of an already not well supported platform
How? The sublinks devs started the project just because they didn’t want to work on Lemmy for whatever reason. If they did, they would have worked on Lemmy. It’s either Lemmy AND Sublinks, or Just Lemmy with the same developers.
Having multiple implementations is a good thing, regardless of what language they use. They all implement the same protocol, should be (mostly) compatible, and can learn from (and compete with) each other.
Look at other OSS. There’s so many Linux distributions, Why doesn’t everyone just work on a single one?
Because everyone has a slightly different view on things. This makes the OSS community stronger.
Rust’s speed is a cherry on top. The main reason to use it is its language design / correctness guarantees.
I’ve been programming for several decades and understand nuance and subjectivity vs objectivity when it comes to this, and strongly believe Rust is just objectively much better than Java as a language.
One example is that Rust doesn’t have null while Java does. The creator of null gave an excellent talk called The Billion Dollar Mistake about why null was such a bad idea, and said languages shouldn’t not have used it. Instead, the alternative he gives is what Rust does.
Things like this are actually hugely important.
Also, Rust was “most loved” language in the StackOverflow developer survey for eight years in a row for a reason.
https://survey.stackoverflow.co/2023/#section-admired-and-desired-programming-scripting-and-markup-languages
Other than Sublinks, I have never seen anyone post about how they really want to work with Java.
I have seen people wanting to do Java, and while I personally prefer rust, I do see why.
Outside of the entire Sublinks discussion, it’s important to note that Java is not just Java anymore either. Kotlin offers many of the same advantages syntax-wise that Rust does (including the lack of null), and has access to Java’s excellent ecosystem.
Ultimately, it is up to people to decide what they want to use. Regarding of your opinions on Java or Rust, it is a valid choice either way for this type of software. It’s a personal choice.
So rather than the relatively simple task of learning rust (honestly not that tough for any half decent engineer, a couple of weekend toy projects had me more or less up to speed with it) they’re going to rebuild and track lemmy API changes—a technically endless task?
And I’ve just seen it’s Spring Boot too, which I’m fairly sure most of the industry is trying to move away from.
Shame the engineers want to spend all that effort that would be better spent improving lemmy rather than fracturing development resources between the two projects.
I’ve now gone from ambivalent towards this to actively hoping it fails.Edit: see the above comment’s blog post for more context that changed my mind
Java isn’t my preferred language. I did learn Rust to try to contribute but found the code base in less than ideal state and the process of contributing to risky. They don’t always accept all PRs. I also have low faith in the success of Lemmy due to it’s poor QA process and it’s major lack of features.
I believe Java is the best option for this type of application, I almost did it in PHP. My goal was to attract as many people as possible to want to contribute. It’s worked, I have a ton of people contributing in some way, Sublinks roadmap is clear and organized, and we have a super-motivated and driven team.
We won’t fail.
You know what, I’ve read your blog post linked to another reply and understand your reasoning more and it now seems like a much less hostile project than it was initially coming across, which at the end of my previous comment had started to look a bit like EEE to me. I’m a lot less negative towards the project now I know you guys have attempted to contribute to lemmy unsuccessfully in a few ways.
I’m still a little sad that a cooperative solution couldn’t be worked out with the Lemmy guys, as more people pulling the same way is always better than two groups pulling in different directions IMO (even if they’re currently aligned today), especially for relatively small projects like these. But if that wasn’t ever gonna happen for whatever reason, I get the reason for a split.
FWIW, the language doesn’t really matter if it does the job effectively, it wouldn’t have been my choice, but obviously I’m not the one building it so that doesn’t really matter. I’ve been “lucky” enough to have seen multiple horror shows in perl which are still in production today and serve miraculous amounts of traffic—again it absolutely wouldn’t be my choice, but it does the job.
So good luck then, it will be interesting to see how things develop with this project. I’ll edit out the last line of my previous comment.
Nice comment, have a good one
Why?
It’s a reputable web development language and Spring Framework is very robust. I knew it would make development very quick and easy. Also, everyone learns Java just a little so I feel like it’s easy for the average person to contribute. Rust is certainly fun but Java is tried and true. The organization of the Lemmy project’s code vs Sublinks is night and day. It’s so easy to extend and grow Sublinks.