14 ms·
Lemmy: Federated Alternative to Reddit in Rust
- olah_1 8y agosharing some others in case it helps - https://github.com/mariusor/littr.go https://github.com/mariusor/littr.go - https://gitlab.com/tuxether/anancus https://gitlab.com/tuxether/anancus
- mpnordland 8y agoAnother, decentralized, project https://getaether.net/ https://getaether.net/
- rolleiflex 8y agoYup, creator of Aether here. Small difference, this is federated, Aether is decentralised. Far as I understand this is more like Mastodon where some people host servers that talk to each other. Aether is more like a decentralised Usenet, every user is a server.
- muvek 8y agoCan you explain the 6 month thing to me? If I understand correctly, posts/comments older than 6 months get deleted, unless you decide to save it locally? Even if someone saves a post older than 6 months locally, others cannot see it, right? That does not seem like a feature to me, and completely breaks geteather imo, sadly. Most of the good content on reddit is older than 6 months. Imagine if reddit decided to delete posts older than 6 months, jesus, every 6 months there would be a flood of the very same questions/posts/comments...
- bovermyer 8y agoIt's in keeping with the project's philosophy of being ephemeral. There are other tools for recording information for posterity.
- SmellyGeekBoy 8y agoExcellent answer.
- deleted 8y ago[deleted]
- stevenicr 8y agoLove the processes in this aether project with the voting for mods and such. Wish there was an easy way to clone it and create a subspace aether system that was not attached to the others. I have some user groups that would use this kind of thing - but they would quickly try to game the mod voting thing in many ways, wreck all kinds of havoc trying to get things blocked / banned and ruined - and so we'd need a function for a high level set of super mods and a way to prevent the coming toxic soup from running over into the main project. Took a look at the open source page on there and there is a bunch of stuff, it's impressive, but too complex for me to try to piece together. Perhaps something like riot matrix is more like we need, and to find some way to incorporate the mod voting kind of system as some kind of addin to a self hosted instance of matrix kind of thing.
- rolleiflex 8y agoThis is actually something that I'm working on, if not the thing I'm working on. :)
- muvek 8y agoWhere the hell is the source-code? Can't find it anywhere linked on the website..
- bovermyer 8y agoIt's here: https://github.com/nehbit/aether https://github.com/nehbit/aether
- deleted 8y ago[deleted]
- deleted 8y ago[deleted]
- microcolonel 8y agoThe quality of this seems high, from the frontend on the dev instance. All actions are effectively instantaneous. Good work!
- rum3 8y agoIt works really well and looks great. Very nice work!
- cabalamat 8y agoNice project! (I'm also doing a Fediverse project -- MeowCat https://github.com/cabalamat/meowcat2 https://github.com/cabalamat/meowcat2)
- zmlzm 8y agoCool, written in actix!
- twic 8y agoCool, or not cool, depending on whether you ever got over the unsafety scandal around Actix.
- deleted 8y ago[deleted]
- nine_k 8y agoNice! What I haven't found in the docs is how federation would work.
- smacktoward 8y agoVia ActivityPub — see https://github.com/dessalines/lemmy/blob/master/docs/API.md https://github.com/dessalines/lemmy/blob/master/docs/API.md. For more general info on ActivityPub itself, see https://activitypub.rocks https://activitypub.rocks.
- deleted 8y ago[deleted]
- s_y_n_t_a_x 8y agoThe code quality is amazing. Good job.
- saberience 8y agoOn the contrary, I thought the code was terrible quality. If someone wrote this code at my company they would be fired, or more likely not hired in the first place.
- nvssj 8y agoWhat makes you say so? Can you give examples?
- saberience 8y agoWell, for a start... having a single file called "server.rs" which is 2256 lines long is already disqualifying. This file, code structure would be incredibly poor for developer efficiency. It just grows and grows and does all the things while having a vague sounding name like "server.rs" Why is server.rs doing "EditSite." What does the name EditSite mean anyway? Poor code reuse, same bits of code copy and pasted all over instead of being refactored out into their own methods. Methods which are doing too much different crap. The single responsibility principle is broken everywhere. Imagine trying to write unit tests for "Perform for EditPost", this method is doing far too much and would be a pain in the ass to fully test. If you're making a method called "EditPost" it should only be doing the actual post editing, not making connections, or user validation or checking for a ban. These should happen in a method which only handles connections, or a method which is called "ValidateUser" which is properly re-used. Generally speaking, the structure as a whole isn't very readable, poor names, methods and files which are doing too much. The project wouldn't scale well with a bigger team or if it grew in terms of codebase size.
- 1ba9115454 8y agoThere are a few opportunities for code generation here. The server.rs looks like an implementation of RPC over websockets. So a refactoring might be to model the interface using something like https://grpc.io/ https://grpc.io/ or any other IDL then code generate Rust server stubs and Typescript client stubs. Cargo has a mechanism for this. https://doc.rust-lang.org/cargo/reference/build-scripts.html https://doc.rust-lang.org/cargo/reference/build-scripts.html The other area where there is some boiler plate is the Diesel ORM. Diesel does generate some code ie. schema.rs but you are left to write the structs that implement these as well as Form structs for passing data to Diesel.
- ummonk 8y agoLooks like it uses ActivityPub - https://github.com/dessalines/lemmy/blob/master/docs/API.md https://github.com/dessalines/lemmy/blob/master/docs/API.md Nice.
- onlyrealcuzzo 8y agoSerious question: from a user perspective, isn't spam going to be insanely bad in the Fediverse? How do you stop spam without a central authority?
- kitotik 8y agoSimilar to an email service. You rely on the node operators to manage it.
- theamk 8y agoSo delegate this all to a few large blacklists (spamhaus)? And block all residential users by default?
- StudentStuff 8y agoGenerally not, proactive blocking or silencing is reserved for instances that host illicit content like child porn or hate speech. Inter-moderator communication happens between your instance admin/democracy (or whatever structure your instance uses) and other instances. Traditional tools like muting a user, silencing an instance (if they're spamming up the Federated Timeline on other instances, like Humblr.social does) and blocking (if the mods are total shit) can still be used. Small instances are the bulk of the content, so you aren't about to block them. Large instances like Mastodon.social are generally blocked tho (if your admin/democracy cares about a vibrant Fediverse).
- IshKebab 8y agoThat sounds like it only works because spammers aren't really trying yet.
- StudentStuff 8y agoMalicious actors definitely try to spam and data mine the fediverse, but their accounts get disabled by the local instance admin, and when they try evading that by spinning up a few instances on their own domains to hide their spam or follow bots behind, those instances generally get blocked by instances that see said spam toots or spam followers.
- Deimorz 8y agoIt doesn't look like there's any federation right now, the test site (https://dev.lemmy.ml/ https://dev.lemmy.ml/) says "Federation into the ActivityPub network is on the roadmap."
- matousd 8y agoI have also reddit/HN clone running on https://esourcenews.com https://esourcenews.com with code on github (written in python - Flask https://github.com/matoous/newz https://github.com/matoous/newz). Although this one is not federated I added tools such as automatic RSS feed import.
- thejohnconway 8y agoOh. Activity pub is complex and difficult to implement. The test suite is down. Leaving it to last makes me worry that it won’t happen.
- muvek 8y agoCheck out https://gitlab.com/mbajur/prismo/ https://gitlab.com/mbajur/prismo/.
- vpzom 8y agoalso doesn't really federate
- 0lpbm 8y agoFollows work at least. Commenting directly on stories works, as far as I remember, but I think the main issue is that it doesn't properly create a list of inboxes that a comment is addressed to to push the messages to them.
- 0lpbm 8y agoOr https://github.com/mariusor/littr.go https://github.com/mariusor/littr.go - which is my project. Not federated yet either unfortunately. But I think one of the few fediverse projects that dogfoods ActivityPub by using the client to server protocol to communicate between frontend and api.
- muststopmyths 8y agooff topic but ~20 years ago Lemmy was a beautiful,native vi clone for Windows. I wish the author had kept it going or made it open source. Vim has such an ugly GUI.
- aerique 8y agoSo... Usenet?
- deleted 8y ago[deleted]
- fsiefken 8y agoVery nice! I am curious how this would compare to Discourse feature and usability wise. It would also nice to have a NNTP gateway to these webforums. VBulletin had one.
- pojntfx 8y agoWow, this is awesome.
- sureaboutthis 8y agoI don't understand what this is. At first, I thought it was a scraper for links which is the only reason I go to reddit at all. Such a thing would help stop me from getting sucked into the 80% of reddit which is nothing but a smelly pile of poo. So what does this do?
- nicoburns 8y agoThis is a reimplementation of a reddit-like site. But open source, and with ambitions to work in a federated (as opposed to centralised) way. You could use this code to host your own Reddit (or you will be able to once they project is more developed).
- 5trokerac3 8y agoOne suggestion: if you want the federated crowd to jump on board, then choose another font provider than Google, which uses their font links for tracking.
- goodells 8y agoThanks for pointing this out. I guess this is something I had assumed Google does by serving the fonts for free, but I never really bothered to look into it. Going to remove all Google Fonts references from my projects now.
- drivebycomment 8y agoGoogle claims they don't track with fonts: https://developers.google.com/fonts/faq#what_does_using_the_google_fonts_api_mean_for_the_privacy_of_my_users https://developers.google.com/fonts/faq#what_does_using_the_... Whether you believe them or not is up to you of course.
- sanbor 8y agoWhere does it claims that it does not track? From your link: Google Fonts logs records of the CSS and the font file requests, and access to this data is kept secure. Aggregate usage numbers track how popular font families are, and are published on our analytics page. We use data from Google’s web crawler to detect which websites use Google fonts. This data is published and accessible in the Google Fonts BigQuery database. To learn more about the information Google collects and how it is used and secured, see Google's Privacy Policy.
- drivebycomment 8y agoJust before the part you quoted has this: "Use of Google Fonts is unauthenticated. No cookies are sent by website visitors to the Google Fonts API. Requests to the Google Fonts API are made to resource-specific domains, such as fonts.googleapis.com or fonts.gstatic.com, so that your requests for fonts are separate from and do not contain any credentials you send to google.com while using other Google services that are authenticated, such as Gmail." That's basically saying Font download is not being associated with any individual. And the part you quoted says they keep the aggregate stats, which is reasonable, especially given that the aggregated stats are available publicly.
- mattchew 8y agoNice! I hope this gets traction.
- Communitivity 8y agoMastodon has been responsible for helping drive a lot of growth in the federated app space. PeerTube for videos, and perhaps a dozen other services (see https://blog.joinmastodon.org/2018/06/why-activitypub-is-the-future/ https://blog.joinmastodon.org/2018/06/why-activitypub-is-the... for some of them). I also recently found the early but promising Plume project for operating a federated blog ( https://joinplu.me/ https://joinplu.me/ ). Icing on the cake? Quite a few of the federated projects are written in Rust.
- 0xb100db1ade 8y agoFederated blog? Is that any different from a regular website?
- bisby 8y agoI would assume it is just a regular website with some backend for federated discovery. I don't read many blogs but I would assume having tags or a "more like this" that search across the fediverse could be useful? Are those things that people have in blogs?
- rakoo 8y agoAlso the whole commenting/liking thing
- FraaJad 8y agoIs there a rust implementation of mastodon? The dependencies for the current implementations are too brittle IMHO.
- swills 8y agoPerhaps rustodon: https://github.com/rustodon/rustodon https://github.com/rustodon/rustodon
- rthomas6 8y agoThere's a fairly popular project written in Elixir called Pleroma. It's not Rust, but it's a lot faster and lighter than Ruby.
- ptman 8y agoThere's honk https://flak.tedunangst.com/post/honk-preview https://flak.tedunangst.com/post/honk-preview (not rust, but go)
- bartimus 8y agoI think a project like Diaspora failed because they chose to write it in Ruby on Rails. Ruby is nice from a purist point of view. But you'd want to build something like this on top of a language which is popular, accessible, has a low learning curve and can be easily deployed anywhere.
- forgotmypw3 8y agoYour site is blank without JS...