Not really a substantial opinion, but I have little hope that replacing a fairly well established Rust codebase with a brand new Java one will do much in terms of increasing contribution.
I wouldn’t shortchange how much making the barrier to entry lower can help. You have to fight Rust a lot to build anything complex, and that can have a chilling effect on contributions. This is not a dig at Rust; it has to force you to build things in a particular way because it has to guarantee memory safety at compile time. That isn’t to say that Rust’s approach is the only way to be sure your code is safe, mind you, just that Rust’s insistence on memory safety at compile time is constraining.
To be frank, this isn’t necessary most of the time, and Rust will force you to spend ages worrying about problems that may not apply to your project. Java gets a bad rap but it’s second only to Python in ease-of-use. When you’re working on an API-driven webapp, you really don’t need Rust’s efficiency as much as you need a well-defined architecture that people can easily contribute to.
I doubt it’ll magically fix everything on its own, but a combo of good contribution policies and a more approachable codebase might.
You have to fight Rust a lot to build anything complex
nutomic, one of the main Lemmy devs, didn’t know Rust before he started working on Lemmy. He just started working on Lemmy and learned Rust in the process. The difficulty of Rust is exaggerated.
Hyperfixating on producing performant code by using Rust (when you code in a very particular way) makes applications worse. Good API and system design are a lot easier when you aren’t constantly having to think about memory allocations and reference counting. Rust puts that dead-center of the developer experience with pointers/ownership/Arcs/Mutexes/etc and for most webapps it just doesn’t matter how memory is allocated. It’s cognitive load for no reason.
The actual code running for the majority of webapps (including Lemmy) is not that complicated, you’re just applying some business logic and doing CRUD operations with datastores. It’s a lot more important to consider how your app interacts with your dependencies than how to get your business logic to be hyper-efficient. Your code is going to be waiting on network I/O and DB operations most of the time anyway.
Hindsight is 20/20 and I’m not faulting anyone for not thinking through a personal project, but I don’t think Rust did Lemmy any favors. At the end of the day, it doesn’t matter how performant your code is if you make bad design and dependency choices. Rust makes it harder to see these bad choices because you have to spend so much time in the weeds.
To be clear, I’m not shitting on Rust. I’ve used it for a few projects and great for apps where processing performance is important. It’s just not a good choice for most webapps, you’d be far better off in a higher-level language.
I really disagree, I think Rust’s excellent error handling and reliability is paramount to any software project and it’s very useful for web apps as well. Besides, for a web app you rarely need to go for any of those things you mentioned (i.e. Arcs and mutexes and such).
Theres been a bunch of activity and people joining in in the dev matrix already
Backend pretty much already has parity and the frontend is currently the main thing that an updated demo is waiting on but should be ready really soon
I’ve been designing an updated home page recently for it that I’ll be pushing out this week that looks miles better than lemmy-ui since I could do everything from scratch and thus quickly
Not really a substantial opinion, but I have little hope that replacing a fairly well established Rust codebase with a brand new Java one will do much in terms of increasing contribution.
Who knows. Java is a much bigger programming language than Rust. Might be easier to find developers. But obviously it depends on interest. Who knows.
I wouldn’t shortchange how much making the barrier to entry lower can help. You have to fight Rust a lot to build anything complex, and that can have a chilling effect on contributions. This is not a dig at Rust; it has to force you to build things in a particular way because it has to guarantee memory safety at compile time. That isn’t to say that Rust’s approach is the only way to be sure your code is safe, mind you, just that Rust’s insistence on memory safety at compile time is constraining.
To be frank, this isn’t necessary most of the time, and Rust will force you to spend ages worrying about problems that may not apply to your project. Java gets a bad rap but it’s second only to Python in ease-of-use. When you’re working on an API-driven webapp, you really don’t need Rust’s efficiency as much as you need a well-defined architecture that people can easily contribute to.
I doubt it’ll magically fix everything on its own, but a combo of good contribution policies and a more approachable codebase might.
nutomic, one of the main Lemmy devs, didn’t know Rust before he started working on Lemmy. He just started working on Lemmy and learned Rust in the process. The difficulty of Rust is exaggerated.
Hyperfixating on producing performant code by using Rust (when you code in a very particular way) makes applications worse. Good API and system design are a lot easier when you aren’t constantly having to think about memory allocations and reference counting. Rust puts that dead-center of the developer experience with pointers/ownership/Arcs/Mutexes/etc and for most webapps it just doesn’t matter how memory is allocated. It’s cognitive load for no reason.
The actual code running for the majority of webapps (including Lemmy) is not that complicated, you’re just applying some business logic and doing CRUD operations with datastores. It’s a lot more important to consider how your app interacts with your dependencies than how to get your business logic to be hyper-efficient. Your code is going to be waiting on network I/O and DB operations most of the time anyway.
Hindsight is 20/20 and I’m not faulting anyone for not thinking through a personal project, but I don’t think Rust did Lemmy any favors. At the end of the day, it doesn’t matter how performant your code is if you make bad design and dependency choices. Rust makes it harder to see these bad choices because you have to spend so much time in the weeds.
To be clear, I’m not shitting on Rust. I’ve used it for a few projects and great for apps where processing performance is important. It’s just not a good choice for most webapps, you’d be far better off in a higher-level language.
I really disagree, I think Rust’s excellent error handling and reliability is paramount to any software project and it’s very useful for web apps as well. Besides, for a web app you rarely need to go for any of those things you mentioned (i.e. Arcs and mutexes and such).
Theres been a bunch of activity and people joining in in the dev matrix already
Backend pretty much already has parity and the frontend is currently the main thing that an updated demo is waiting on but should be ready really soon
I’ve been designing an updated home page recently for it that I’ll be pushing out this week that looks miles better than lemmy-ui since I could do everything from scratch and thus quickly