Hacker News new | past | comments | ask | show | jobs | submit login
LemmyBB, a federated bulletin board (join-lemmy.org)
292 points by ZacnyLos on Nov 2, 2022 | hide | past | favorite | 186 comments



This is beautiful. For me, the old-school forums are a pinnacle of UX that Discourse fails to match. That UI + the real-time facilities of Lemmy is a match made in heaven.

Now, if only someone implemented the old IPB theme! Pic: https://images.sftcdn.net/images/t_app-cover-m,f_auto/p/3753...


Some of my best memories of the old internet. We were getting so much right in this era of web software interfaces.


Yes, because nobody was trying to manipulate us through them. It was just a communication service enabling diverse people to talk to each other.

It was also, well, optional. None of that algoboosted dopamine-head datamining freakshow that's leaking into the world in a way that the AI alarmists seem to be ignoring entirely.


Very true but ironically that's what hooks so many people.


Nothing ironic - it's all working as intended.

What got the initial critical mass of people hooked, is that they were already familiar with the idea of an online conversation space, and liked expressing themselves through that medium. So the idea of a unified global forum was alluring, and the ego-boost of personal bubbles, as well as the fact that the admins were staying out of sight, no doubt sealed the deal.

And then, well, you know what they say about boiling a frog. By the point the experience degraded beyond pointless, there was already enough of a data corpus to build the dopamine loops, and a critical mass of users - so that everybody would be "there" because everybody else would be "there".

Then, it started "replacing reality" by privatizing the means of social consensus. Any manipulative person will tell you (or won't) that normal human emotions are, in the end, quite predictable. If there's truth to "AI risk", who's to say it won't get to us through our emotions, like drugs do? Perfect crime against humanity, in plain sight. Not exaggerating in the slightest.

Thankfully there's enough "weirdos" to remember what the old Internet was all about, so an alternative is at least technically possible.


Whole way I got started in webdev was skinning IPB for various gaming forums because it had such good UIUX vs vBulletin and SMC/phpBB etc. It was awesome. Blew my mind when someone tried to pay me. Thank you IPB.


PunBB (now: FluxBB) for me. Seems like Connor broke DNS for the site. 15 year old me was probably a nightmare for them to deal with, but it was my first involvement in OSS, and I'm still proud to have hosted two of the largest install bases.


That's a name I haven't heard in a long time! PunBB was the cleanest looking forum software I remember hacking at. I integrated into a bittorrent tracker I ran long ago.


There are still many active forums on the web with that UI (not sure if IPB). Alot of hobbies (cars, firearms, hunting, ham radio, hiking, geocaching, etc) still have communities using these forums!


Can you link me to some? I only seem to be able to find the newer versions.


For me it was adding extensions (like arcades, shops, etc) to phpBB boards. I used to follow tutorials saying replace this line with this line and add these lines here. Shoutout to whoever made those extensions and tutorials!


Haha same here, started skinning on 1.3. The good old Invisionize days!


Man, so much time spent in that UI reading and talking with people. Good memories.


Yes! Those forums really felt like places. Social media nowadays just feels like, well, TV.


I post regularly on a vbulletin forum and have for the last 15 years. Every so often someone who used to be active will drop by and it drags other old lurkers out. One of the better analogies is that it feels like neighborhood bar, there are regulars, new loud people, new people who get a feel for the space, people who come in every now and again. And then occasionally it feels like thanksgiving where a bunch of people are back in town and show up all together.


This makes me want to get back into scifi-meshes.org. Man, I used to be on there daily for years. Blender was an absolute God-send in my childhood, and having a place to talk with others that were doing the same thing made it so much more... I don't know. Impactful.


Still some holdouts - mainly in niche automotive forums. If you work on old cars or are an enthusiast, these are still very active places.


IPB, for me, was peak BB software. Back in the WinBeta days


I know they had to earn money, but it's a shame how they screwed licence holders over and over trying to encourage people to move over to monthly payments.


Yeah.. I'm one of those who bought the expensive perpetual license with the promise of access to new versions just to discover a few years later that it wasn't "perpetual".


I really missed newground's style of BB.


Is there any names for that sort of ui? I'm trying to characterize it myself and cant come up with more than "smaller text" and something akin to graphics that remind me of panneling/trim found in cars. Maybe less whitespace with text closer together too.


Just the fact that it has borders and minimal whitespace is enough to distinguish it from the hyper-optimized UX dumpster fire we have most everywhere else on the net.


Information-dense. Old-school Web 2.0. Human sensory bandwidth-respecting.


Basically a new front-end to Lemmy, a federated Reddit clone started last year. More interesting than being a fork or entirely new project because, as article explains towards the end, it showcases how Lemmy can be used as platform to develop federated apps.


I just wanted to correct you, development didn't start last year, it has been ongoing for several years.

Source: I was marginally involved in the project early on, before political ideology got in the way.


> before political ideology got in the way

you mean the guy who uses che guevara as profile picture on github has some strong political views?


Not only one but two. The first dude has Che Guevara and the other one Fidel Castro.

I bet they'd be all riled up if someone used Mussolini or Franco as their profile picture.


They are open about not being interested in working with or federating with far-right groups, you don't have to make a bet.


It was a comment on the irony of their profile pictures.

It shouldn't be acceptable to glorify neither of: Hitler, Franco, Mussolini, Mao, Stalin, Fidel, Guevara, Hussein, Pinochet, Ceaucescu, Gaddafi, etc.

My point is that authoritarian murderers are authoritarian murderers no matter their political affiliation and should not be glorified. You can be against one extreme without supporting the other.


> It shouldn't be acceptable to glorify

Profile pictures are not necessary used for glorification. It often used for trolling also, especially on classic forums.


you forgot to include Bush.


Too many people to list.

Although I'd say the tag kind of fits, but Bush is in another category. All the people I mentioned had in common the persecution, imprisonment and execution of their own people at a massive level and maintained power by force. Bush went after other countries and was voted out in the end.


What a ridiculous false equivalence to make.


They were almost the same in their practices, just happened to have different political ideas and better propaganda.


Fidel Castro, but yeah. And that's him watering it down for the public.


what political ideology got in the way


Not necessarily political in ideology, but the tool included a fairly cruddy hardcoded slur regex that instance admins couldn't configure. It was prone to picking up false flags (someone tried for example to make a Stardew Valley community on it but it got censored out by the slur filter).

The stated reason for not removing it or making it configurable was "to make it as difficult as possible for far right instances to use Lemmy", but all it really seems to have resulted in is a dozen or so forks dedicated to removing the slur filter and at least one missed customer who doesn't like dealing with "computer says no" nonsense (by which I mean me, I always like trying out fedi tools).

It eventually did get configurable if memory serves me right, but that took several years. I'm sure there's more, these sorts of ideology driven projects always end up with similarly crappy anti-features.


I found it very amusing when I learned that Mastodon, a decentralized Twitter alternative, was created because its creators thought there wasn't enough censorship on Twitter.

This seems to be along similar lines (though considering how other Reddit alternatives ended up, I guess that's fair enough!)


The developers are avowed hard line Marxists, and they did not want contributors who did not toe the line on that.


It should be noted that this isn't an exaggeration. For a long time they actually had in the sidebar on lemmy.ml that it was the main Marxist instance. I'd link an archive but the site's design makes every one I can find pull the new info.


I mean is this really a reason to not use something? Just because you don't agree with the views of the people running it?


Not at all but is a very strong reason not to collaborate.

Can't work with someone who is radicalized, they tend to take criticism as attacks and will attack back, sometimes preemptively if they get paranoid and start seeing ghosts.

In those cases only use it if you can maintain it and fork it. Because you can't trust that someone with so extreme political views will not remove the software because they don't agree with whatever downstream group using it.


> they tend to take criticism as attacks

Makes sense, but it might as well not be the case.


True, but from experience with family and former friends it's a prevalent trend with radicals (left, right, religious). It's not something I'd look forward to.

I guess it depends in exactly what they believe and how they think it should be achieved, since I've met people who were extreme in their positions, but capable of accepting others and staunch critics of their side.

Thinking about it, I guess the main difference with these two guys was that they didn't preach and were old as hell. Probably age earned wisdom, who knows.


Yes, because you're giving them more power to disseminate their views and later suppress yours if they so choose. In this case it's a bit different, since it's a federated model, so you can just run your own node, but I'd rather not support the work of people with extremist views.


If they're unwilling to work with people who disagree with them politically?

With federated services, then at very least the people making the technical decisions around the protocols should try to be politically neutral.

The cost of the actual implementation being under the control of political idealogues is less, since forking doesn't impact the API - but it's still not desireable.


Well it depends, right. If their views are just their views then no, not really. But if they outright tell people they want nothing to do with them unless they think exactly alike, yeah, why would you want to contribute to that? When I say they're Marxists, I mean they're not shy in saying what they think of you if you're not one. These are not weekend "what Mao did was wrong" socialists man, they don't want to hang around you either.


I never said you shouldn't? I was only backing up the other commentor's claim since many people might think he's being hyperbolic rather than them overtly spelling it out on their site.


Would you want to be associated with people who openly and unironically praised Hitler?


Pretend for a moment it's a Nazi-espousing group. That's how some are seeing this group even though they swing the opposite direction into Marxism.


Read the About page.


True. First commit was Feb 10, 2019.


This is beautiful. When I last used Lemmy, the number of instances were few and not diverse, but now I see a bunch on https://join-lemmy.org/instances. I also notice that it has been packaged for easy install on yunohost. I might just install it on my server.


Why so man lefty channels? Is Lemmy hostile towards people that aren't lefty? I get that it's federated, but instances get on that page and in that order somehow.


Yes, it was especially bad when Russia invaded Ukraine which basically killed the surrounding community in many people's eyes.


Righty channels would probably be filled with racist, incel, misogynistic, conspiracy-nut jerks, just look at 8chan.


>Is Lemmy hostile towards people that aren't lefty?

Hopefully, as all should be.


Diggin all these lefty channels! Where's the closet alt-right anti-vax anti-government-except-its-world-conquest-military-and-heavy-policing-and-penal-colony-loving channels?

Does "federated" mean decentralized?


The Lemmy authors are pretty lefty, and the primary instance that they run is also very lefty.

Their list of instances is likely curated to ignore instances that don't match their beliefs.


You can start your own if you want. Federated means that the many instances can talk to each other. The emphasis is on the word 'can'. They can choose not to federate with yours based on your rules and content.


Don't know about the first two, check out wolfballs.com and exploding-heads.com, not quite as extreme as you're hoping for, as far as your third example you went there already.


mander.xyz seems quite pleasant.


A bit off-topic but why would someone write a forum (or any web app) in such a low-level language? Isn't it more trouble than it's worth, considering it's not a performance sensitive, critical or constrained environment?

I could understand going as far as Go, but further than that it just feels not the right trade-off for the productivity lost.


Rust is higher-level than Go, in practice.

Rust says "a String is a valid Unicode sequence, an OsString is a valid filename according to your OS, and a &[u8] is a sequence of bytes; I'll enforce the validity of these types for you". Go says "a string is a sequence of bytes, make sure you use them correctly."

Rust says "here's an Iterator interface, with hundreds of methods for your convenience". Go says "we didn't have polymorphism when the standard library was developed, so there aren't any fancy iterators; how about you use a for loop?"

Rust says "error handling is important, so there's syntax built into the language for it (the '?' operator)." Go says "just write `res, err = func(); if (err) { handleErr }` over and over again."

Rust says "please think carefully about the difference between shared references, mutable references, and ownership; I'll be checking your work." Go says "you don't need to think about that, I'll keep track of it with GC for you (unless your sharing data between threads in which case you do and you're on your own)".

In the last instance, Rust is lower level than Go. But in the rest, it's higher level.


No, I really wouldn't characterize rust as more trouble than it's worth.

Rust exposes low level primitives and is efficient, that's nice and all, but you mostly don't actually think about them when programming non-low-level applications.

What it does force you to think about a lot is it's correctness guarantees. Things like only letting you modify data that no one else currently has a reference to, and things like forcing you to check error conditions by wrapping them behind an "enum" (algebraic data type). Rust is making a tradeoff here between friction in writing code, and the the amount of time it takes to understand code as well as the number of bugs you write.

All in all, for most large programming projects there is no language I think I'd be more productive in than rust. For small scripts, the tradeoff can be less worth it (in which case I tend to use python, or for even smaller ones bash), but those scale poorly to giant projects where you want to be able to do things like refactor without introducing bugs in a file you forgot about.

It happens to be the case that rust maps many of it's primitive types directly to low level types that you can reason about in a low level fashion (e.g. ADTs are tagged unions, references are actually just pointers - maybe with a second vtable pointer depending on the type) - but you don't need to do that unless you're worrying about optimizing the constants for performance or doing terrible hacks with unsafe.


OCaml, haskell, Idris, F#...


Once you get over the initial learning curve, Rust is a very capable and productive application language, and I'd argue that the whole "low-level"/"high-level" divide is just a historical artifact.

Sure, there used to be a tradeoff between performance and expressivity in a language, such that a "low-level" language would just become crufty and kludgy up to the point that someone would decide "screw it, we'll implement a safer but less performant language in this less safe but more performant one".

Today, the hardware is much more powerful, and the theory and practice of software development is more advanced. Thanks to open source, devs have been exposed to good ideas from all corners of the ecosystem, so all that would remain is coming up with sane syntax and semantics - and Rust positively excels in that regard.

I'm fluent in Python and JS, but I put off learning "low-level" languages because of the innumerable footguns. Go looks like it has plenty of those, too, and TypeScript is... just a mess. Rust is next-gen stuff in my opinion, and categorizing it as just a "systems-level" language makes no sense. It's "systems" all the way down, and the more kinds of systems a language can efficiently cover, the more good things can come out of it.


I think the simple answer is that the hype is with Rust so it will be used for just about anything, even if it is not well suited for it. This happens to every language that is sufficiently popular (and probably even some that aren't).

I myself am guilty of this, I wrote a web app recently using Rust, mainly because I wanted to learn Rust. I probably wouldn't reach for Rust next time as implementing my project in it has felt like overkill throughout.


For pretty much everything required to build a forum, Rust can easily hide away 99% of the low-level things you don't need to deal with.

You're moving around strings and talking to a database, and possibly doing some templating. It's not rocket science, and provides the same story as Go with regards to build + deploy.


I am in the middle of learning Rust and have found its difficulty highly exaggerated. If you already had experience working with C pointers (and making up / following little informal rules to prevent a leak or double free) then Rust's memory stuff won't seem weird or hard, you'll just be like "ohhhh they're having the type system do the thing I used to do by hand, right on" for the most part.

Yet it has a lot of nice abstractions you usually see in much higher level languages like Scala or Lisp.

So if you already learned C, you can learn Rust and see it as higher level than the usual Java/Go.

If you skipped C and this is your first time learning heap memory management and pointers, then yeah, Rust will feel lower level

This situation is why there is such a big disconnect on people's opinions on rust I think. That and that it's oddly popular among total programming noobs. Not anything wrong with that but I don't recommend it as a first language anymore than C, for the same reasons. Might as well walk before running


The type system is awesome to work with. It is low level, but it does a good job at feeling like a high level language. The biggest thing to get used to is the borrow checker, but it also helps with data races. While it works as a low level language, I think it _feels_ like a higher level one to work with.


I would claim that most web services are performance sensitive, since every single millisecond matters for UX experience. Having big JS at client side circumvents this of course, but it might be thought that that is just a hack to circumvent slow server-side processing.


I've seen a surprising number of Rust web frameworks cropping up which may be encouraging use of the language at higher levels in the application stack. I could absolutely see somebody familiar with Rust reaching for it to do something like this.


+1 - genuinely curious if a high-level slang/DSL is possible in Rust or it's just a matter of having tools for the existing Rust developers that prefer to code in Rust


> why would someone write a forum (or any web app) in such a low-level language? [...] I could understand going as far as Go

Oh so many reasons:

Lemmy is a socialist project. Rust is a project that has it roots in FLOSS movement and Mozilla foundation. Go, otoh, is Google's thingy; a tech/advertising multi-national.

Technically Go is in some ways less low level than Rust. See the null guards everywhere in Go, and the idiomatic abstractions that Rust provides for this in the stdlib. Rust has sum types that allow for really high-level abstractions, was designed with generics in mind.

I personally find it more intellectually rewarding to program in Rust, over Go or say Python. The stack overflow favorite list shows more people like Rust as a language.

You call it "more trouble than it's worth", but that's up to the Lemmy devs to decide. As a FLOSS project, expecting they put in the effort of love there...

Sure Go was a viable alternative; but would the devs enjoy writing it in Go? Also then they would be skilled in Go, maybe that's not what they want.


> Lemmy is a socialist project.

As in the project itself is socialist? What does this mean?


If you go and look at the boards you'll find a lot of posters lean hard left.


The creators and maintainers are quite extreme too.


By low level, do you mean strongly typed? Rust can be used for "low level" programming (systems programming) but I don't know if I'd call the whole language inherently "low level". It's strongly typed but has a good trait system and generics, very good for domain modeling at different "levels", so it seems suited just fine to "high level" programming to me, provided you are looking for a compiled, typed language rather than a dynamic one like e.g. Python.


It’s unclear to be from a quick glance - can I host this with SQLite instead of Postgres? Forums are by definition read heavy workflows, and I imagine you would have to get insane traffic before SQLite became limiting.


the content itself is heavily relying on reads but every view event and many other things like logins, clicks and link follows need writes


It’s not Facebook. No need to track every pixel that a mouse covered.


People think that federation like this is great but what ends up happening is that either the instance you create your account on goes down and you lose your account, or the instances that you communicate with go down and you lose the context. Federated should mean that instances federate enough data to be usable on any instance, whether the others go down or not.


phpBB seems to be the last man standing in the forum wars. It's interesting reflecting on the multiple forms that online communication has taken over the last 40 years.

They all suck in their own special way.



Isn't Flarum an option? https://flarum.org/


If you can get over the PHP and the "reinvented" UI... maybe?


What is the problem with PHP?


Well, historical baggage, mostly. Everybody keeps saying it's pretty decent these days, and the Flarum codebase looks clean enough.


Simple Machines is still getting updates


Discourse is fairly popular.


I'm not sure why, I think every instance of Discourse seems exactly the same, and in a way this uniformity is getting overbearing. In the ages past different forums, even running on essentially the same software stack like phpBB, had different look and feel that you can see at the first glance. Even though Discourse is not centralized like Reddit, it gives off a similar feeling of sterile-ness.


FlaskBB is pretty good, although it needs a little bit of work to make it easily packageable.

https://flaskbb.org/


A very nice. It would be even nicer if it had a nntp gateway or interface, not sure if that's even feasible with activitypub.


nntp gateway sounds like a good way to avoid eternal September


Needs a SSH TUI interface with time-metered connection credits, for that true BBS feel.


Wild. This is everything I want. Same data, different consumption. I'd LOVE to flip a switch to phpBB mode for so, so many threaded conversations!


Slightly off-topic, but does anyone know a "forum" software that is based on a graph instead of list of lists?

Something that has some intelligence on top and shows only the most relevant path through a thread (based on replies and mentions) and somehow puts less emphasis on all of the off topic discussion that tend to happen in forums.


Well Stack Overflow partly matches your description. I've never looked at self-hosted software that resemnles SO, but a quick search turns up this list:

https://meta.stackexchange.com/questions/2267/are-there-any-...


How does this handle converting the reddit/HN like tree of replies into a forum thread?

If you federate one of these with a reply tree based lemmy instance, do all the comments from one instance have absolutely horrid organization on the other instance? I guess you could just always just not do that (federate cross reply style) though.


Flatten the hierarchy and sort by date? Here is an example of my own HN client (that I use) that displays comments in a flat manner instead of a tree: https://ditzes.com/item/33438493 (linking to this very submission)


I never fully made the comparison with a flattened vs. hierarchical comment section before. Why do you like it flattened? I remember forums like this but losing a dimension really makes it harder to follow conversations.


Guess I'm mostly just used to a flat view of it, and I also don't entirely trust the karma system of HN to highlight what's interesting for me. There is plenty of interesting discussions happening but they are either not upvoted as much as other comments or outright downvoted to be hidden. This way I get to be less influenced by the karma of comments.

Personally I don't find it so hard to follow conversations, but my UI also helps with following the discussion you find interesting, as the comment a comment is replying to is visible as a "quote" in the reply, and there is a link to go back to it as well, that also has a "quote" of the previous comment, and so on.

It's also nice to be able to hit refresh in the browser and see exactly what comments are new, if it's a submission I'm very interested in seeing all comments in.

Finally, doing research in some topics I sometimes search on HN for information, opening up all the discussions in Ditzes for a flat view helps making that research more efficient.


I understand your view but I feel it's a question of volume: when the discussion is fairly slow it is possible to read all messages, but at some point it takes just too much time and you need to skim some of them (or you resort to the old heuristic of "longer=better")


Yeah, for sure it's also about volume. I'm not gonna read through 500+ comments unless it's a topic I'm really engaged in or if I'm not actively researching that topic. But I tend to skip reading any comments from things I'm not engaged in regardless, so not a huge issue for me personally.


Every reply should have an inReplyTo property you can use to build any tree you like.


I love that the CSS is basically identical. I'm very curious to see if this takes off. It feels like this has been missing for a while.

I really wanted to see something like this for Matrix but despite seeing some functional prototypes, it doesn't seem like anyone stuck with it...


github link: https://github.com/LemmyNet/lemmyBB

Looks great.


That's pretty cool actually. I've been tossing around the idea of a federating forum style UX that uses ActivityPub, and I figured it would be easy using something like this https://github.com/go-ap/fedbox

I don't know how many generic AP backend servers are out there, but it looks like Lemmy is becoming one. I hope they keep with the AP spec and allow any functionality in addition to it to be modular.


Why does it say phpBB on the upper left?

Looks like a cool concept. The last topic on the federated link on the Flagship instance for lemmyBB,

https://fedibb.ml/viewforum?f=3#:~:text=LemmyBB%20on%20Lemmy...

...is just a dead link. I'd like to see how the federated aspect works as a user.


I'm able to open it and I believe I found an answer to your question:

> This instance runs Lemmy as backend, so it can federate with Lemmy, and all other compatible software. But for now, nothing is actually federating. You can enter a community or post url in the search field to fetch some remote objects and interact with them.


Link works fine for me


Sorry, wording unclear. The last link on the page seems to be an example of "federation". But the link breaks

In context:

https://fedibb.ml/viewforum?f=3#:~:text=LemmyBB%20on%20Lemmy...

Link that breaks:

https://fedibb.ml/viewtopic?t=6


The thing is, if I host an instance, pay for the server, maintain it, I don't want my content to be found on some aggregated home page of all instances.

Same with Mastodon.

Then my options are docker or ansible? Why yunohost if I want to build from source? What is that even?

Is there a demo? I can't find one.


Great work! I've been thinking that the fediverse could give us this different frontends. I hope for a future frontend that can make both forum and link aggregator possible and interchangeable with the switch of a user setting. I'd love to host something like that for my friends.


Looks like a cool project but why would I use this over phpBB? And why does it have the phpBB logo on it?


Really needed!

Just FYI: Hmm, send user a private message https://fedibb.ml/ucp.php?i=pm&mode=compose&u=356301 return a 404.


Would LemmyBB need its own mobile app to stay consistent with its phpBB-like UI? The demo apps shown looks more like reddit.

https://join-lemmy.org/apps


Lemmy is a pre-existing federated link aggregator, LemmyBB is a new phpBB-like front end for it.


Sounds a bit like NetNews/NNTP/Usenet? I've been wanting to try to get a Usenet server set up but it's difficult to find solutions. Are there ANY modern implementations?


The dlang forum which has a web interface is also an nntp server. You can download every single thread and post. Its on github too.


> Resource usage is very low as everything is written in Rust

Woohoo! Glad to see this being implemented in practice. I'm excited.


Funny, I’m basically building the same thing at the moment.


Do you have any more details about your project?


It’s very much work in progress but hope to have an alpha out sometime next week. You can sign up for updates here: https://ciety.com


Do people actually arrive on a random site and then put their address in? Or do you send this mostly to people whom you’ve already explained what you are building?


A bit of both really!


phpbb... that's some nostalgia


I know they've removed it since the time of the comments I will refer, but I still feel like I would not choose Lemmy to host a forum due to the conduct of the maintainers on the threads regarding the hard-coded slur_filter. See https://github.com/LemmyNet/lemmy/issues/622. When the conversation with the project maintainers goes like:

> Hey I don't think a hardcoded slur filter is a good idea due to good reasons a, b, and c that don't relate to actually being a troll or calling people slurs in a hostile way

> Screw you racist, we're never going to remove it

I feel like their priority is no longer to provide a flexible tool other people can use as a communication platform in the way that best suits their community, but instead to impose a narrow-minded agenda on everybody. After that, even if they change their mind later, who's to say they won't change it again at some point?


I've seen a few recent projects hard coding things like this. I am not a fan. Not because I want to use the words but rather I want to be in control of the instance I am running. UnrealIRCD for example has an optional module for word filtering that is quite powerful and can be left entirely blank, or use regex to replace words, block words or kick someone off. I just prefer having flexibility and multiple options. One of the goals of open source was to give people freedom of choice.

It's too bad as I really like the idea. I suspect and hope more things like this will pop up with recent events. Ultimately it is their project and their choice. I think I will stick with phpBB [1] as a forum, UnrealIRCD for the deep dark places [2], uMurmur for real time text and voice and the Mumla app to access uMurmur from my phone but that is just my personal preference.

[1] - https://www.phpbb.com/

[2] - https://www.unrealircd.org/

[3] - https://github.com/umurmur/umurmur


I should add to this for completeness sake that if one finds UnrealIRCD to be too complicated, the simpler alternative is NGIRCD [1]. It takes all of maybe 4 or 5 minutes to get it set up and running with TLS from LetsEncrypt. It's dirt simple but sometimes quick and simple is useful in a pinch.

[1] - https://ngircd.barton.de/


I just read the link. I don't think your characterization of the conversation is fair. Either way, it seems like the people behind the project have a CoC about what language is allowed. Further, the first response seems pretty reasonable to me from both a technical and ethical standpoint.

I would add, lemmy doesn't seem to be about pure free speech, or free speech above all else. They've made it clear that slurs are not acceptable, and anyone who doesn't agree is free to go somewhere else.


Their principles are fine. It's just that hard-coding a list of English-language bad words, then matching on them in an extremely naive way, is not an excellent way of manifesting those principles in code.

The Scunthorpe Problem[1] has been known for over 25 years. Plenty of people have names that incorporate a word that, on its own, would be a slur. Many English-language slurs are also words with entirely different meanings in other languages. Naively regex-matching all incoming text to see if it contains any of a hard-coded list of words means that you're going to get a lot of false positives, which the instance administrators can do nothing to prevent. Meanwhile, you are requiring only the level of creativity of an unremarkable eight-year-old on behalf of those who wish to evade the filter by creatively mis-spelling something. This is all very very obvious to anyone who has ever worked on content filtering, and not much less obvious to someone who hasn't and just sits thinking for five minutes or so.

[1] https://en.wikipedia.org/wiki/Scunthorpe_problem


Also there are genuine reasons to want to be able to type out slurs that aren't racist.

I have an interest in linguistics (complete with degree - so I'm not just saying that to be racist), and discussing something like 'how the use of ethnic slurs has changed over time in English speaking countries' or how the euphemism treadmill functions with regard to insults would be impossible with this filter in place. Similar as to how a hard coded 'no swears' would make it hard to discuss English infixes since the most obvious infix is 'fuck'.

Which is the exact kind of niche, pedantic, really nerdy small group discussion that is a good match for this.


>Many English-language slurs are also words with entirely different meanings in other languages.

Possibly. But looking at lemmy, it seems like most interaction is in English. As such, it seems reasonable to expect people to make a good faith effort to learn what isn't acceptable on a mostly english language website.

>It's just that hard-coding a list of English-language bad words, then matching on them in an extremely naive way, is not an excellent way of manifesting those principles in code.

I imagine there are better ways to do it, but this goes back to who owns the instance, and what type of community do they want to foster.

More to the point, the github issue originally linked was resolved (to the extent it can be) by having user created filters.

https://join-lemmy.org/docs/en/administration/configuration....

https://github.com/LemmyNet/lemmy/issues/1481


> I don't think your characterization of the conversation is fair.

You're free to think so. I for one don't care to censor those who disagree with me. Note that there's a number of deleted comments, and neither of us know what those say.

> anyone who doesn't agree is free to go somewhere else

Fair enough, and I just said above that that's exactly what I intend to do.

I think it needs to be remembered here that their project is attempting to build a forum hosting tool, not a particular forum. If a particular forum intends to censor any slur list they choose, I have no issue with that, that's entirely their right, and I'll post on it or not. But I feel it's highly inappropriate for a team building a hosting tool to impose a particular chosen slur list on anyone using their tool to host a forum, with no regard to what the purpose or character of that forum is intended to be. I shall indeed choose not to use such a tool.


>Note that there's a number of deleted comments, and neither of us know what those say

Does that mean you get to just create a narrative? Dessalines is the closest in that thread with telling people they can use voat or gab if they want to use slurs, which at least implies some racism but that other dev Nutomic has a pretty inoffensive stance when he says

>If you dont like it, fork it. Stop bothering us about it, we will never fully remove the slur filter.


>Does that mean you get to just create a narrative?

Eh? GP was pretty clear in showing that the developers of the project are pro-censorship, not only in hard-coding in naive badword filters, but also in how they handle responses to requests on their own project

>Dessalines is the closest in that thread with telling people they can use voat or gab if they want to use slurs, which at least implies some racism

There is no "some" in their statement. They are saying that if you have a problem with blanket-filtering language, then that means that you want to use words that are designated as bad, and that only bad people use those words. It's purely black-and-white. Nobody could ever want to use those words in any other context, according to them

>that other dev Nutomic has a pretty inoffensive stance when he says "If you dont like it, fork it. Stop bothering us about it, we will never fully remove the slur filter."

On the contrary, saying that anyone who disagrees with you is a "bother" is offensive, especially if you flip-flop on your position and plug the change in anyways, which is what they did


The user I was replying to dropped this as a quote when describing what the devs were saying.

> Screw you racist, we're never going to remove it

That's creating a narrative, it was never said.

>On the contrary, saying that anyone who disagrees with you is a "bother" is offensive, especially if you flip-flop on your position and plug the change in anyways, which is what they did

Literally anytime you talk to someone and they don't want you to, that's bothering them. There's a discussion to be had if its reasonable to be bothered by the behavior, but whether or not its is bothering someone is literally defined by that person's belief.

On that note, if you find what Nutomic said offensive, I think thats a little too trigger happy on being offended.


>Nobody could ever want to use those words in any other context, according to them

In what context would you want to write out a slur against someone as part of some online discussion? Even if you were quoting some external source, you could just censor the slur/hate speech, and still carry on with the discussion.


> In what context would you want to write out a slur against someone

There are other contexts than using a slur against someone. For example, describing an instance where a slur was used against you personally, explaining historical contexts of the slur, and so on. The existence of a slur does not mean that it's only ever going to be used in cases where it's being thrown at someone else


Right but in the example you use you could write sl*r or sl-r instead of slur and anyone reading would understand you and you would get past the filter.


No, you couldn't. For example, if you were teaching someone who's learning English about which words to avoid, they wouldn't know which words you're talking about since you're not actually using them


>I just read the link. I don't think your characterization of the conversation is fair.

"If you dont like it, fork it. Stop bothering us about it, we will never fully remove the slur filter."

"stop bothering us about it" is , in my experience, a huge red-flag to run into while perusing issues and commits.

a 'code of conduct' that dictates all use cases for software for the forever-future is a cute concept -- but 1) it has never worked, and 2) it's basically untenable in the open-source environment.

If the software IS workable, it WILL be forked, and your power-from-on-high to force behaviour on people crumbles. If the goal really is to force your political/ethical position on people who use your software it's probably better to do so more transparently so as to not scare the herd into another avenue of control from another actor.

As with any software tool in my preferred catalog of tools I prefer one that doesn't foist it's own methods and standards onto me; furthermore I prefer my tools don't foist their politics and societal standards onto me. I don't think that's the purpose of a tool.

>I would add, lemmy doesn't seem to be about pure free speech, or free speech above all else.

that moral absolutism doesn't need to exist within software. We know that hard-coded lists of restrictions hidden deep within software are a Bad Thing for a long variety of actual technical reasons -- there is nothing stopping the developers of Lemmy from shipping a filter-list that reflects their values right along side their software; the choice towards inflexibility and zero-tolerance just makes the software less reliable, less maintainable, more opinionated, and less popular.


well if people maintain/own a project, and say no to a request multiple times, eventually they will just say, please stop bothering us.

In regards to the technical side, the original linked github issue was resolved. See:

https://github.com/LemmyNet/lemmy/issues/622 https://join-lemmy.org/docs/en/administration/configuration....


Nah, they definitely overreacted to a reasonable request. Different languages, different cultures and different groups will have different words they consider as slurs or not acceptable.

Then there are edge cases like history forums where they have a valid use case for posting transcriptions with words that are currently deemed not appropriate.

Their response can drive possible adopters away because they could only think in US centric politics.


What is US centric about not wanting to allow words that are commonly understood in English to be slurs, on a site that is predominately English speaking?

Also, why is it wrong to expect non native speakers to eventually work out what is and isn't acceptable in day to day conversations with native speakers?


Isn't the idea of Lemmy to run your own instance that could be used to host communities that don't speak English? In their instances list they have servers that speak German, Spanish, Portuguese, Finnish, Euskera, French...

Why would some non English speaking person be forced to change their language because someone in the USA decided that an innocuous word in their language is now a slur?

Also USA is not the only country speaking English and some words considered slurs or offensive in the US are not in other countries that also speak English.

They did in the end made it configurable and that's good, but their initial response is a major turnoff for anyone thinking on seriously running the software without planning to maintain a fork in the future.


Ah yes, I should have thought of all the words in Euskera that overlap with racial/homophobic/transphobic slurs in English


I read the whole thread, and the developers don't come off as principled, it feels more like they're just wedded to a particular implementation and are grasping at all straws to defend it. A singular regular expression as a slur filter is pretty terrible by any modern coding standard. I'd avoid the project on the grounds that the rest of their code is probably just as amateurish.


Also note that slur filter is now configurable [1] and seems to be completely optional [2].

[1]: https://github.com/LemmyNet/lemmy/issues/622#issuecomment-89...

[2]: https://github.com/LemmyNet/lemmy/blob/235cc8b22897bfb3e71ba...


cocs are supposed to police the contributors, no?

who will you complain to when a user violates Corey Ehmke's Ten Commandments? the cyber police?


> cocs are supposed to police the contributors, no?

its a generic phrase. I definetly would have thought that if I was reading a github page; but not necessarily when I have to read a COC for joining a Discord.

Apparently it's getting tough to operate outside of everyone's random (usually poorly written) CoC on the net.


Discord and the other services have ToS/EULA. a legal agreement that has actual power, unlike github cocs


I agree with you, the dev team for Lemmy are hard line ideologues and it has hurt their original stated mission to take online communities out of the hands of corporations. As you noted, all that slur filter stuff was removed from the codebase some time ago, they've walked it back a bit, though they're still the same people of course. The software works.

If you're interested in a different federating link aggregator there's also lotide https://sr.ht/~vpzom/lotide/ which looks promising as well, and littr.me/littr.go/brutalinks https://sr.ht/~mariusor/brutalinks/ which is single community oriented like HN.


Yeah, their responses to legitimate discourse make this project a non-starter for anyone serious about relying on open source software.


It looks like this has been merged 6 days ago.

https://github.com/LemmyNet/lemmy/pull/2492


In case anyone was wondering, this was (is) the slur filter in question: https://github.com/LemmyNet/lemmy/blob/b18ea3e0cc620c3f97f98...


Wow, many of those words have legitimate non-slur uses. I can't imagine an automotive forum where users cannot discuss how to retard the timing on a distributor.


> For example, there was someone who tried to talk about Stardew Valley and only managed to talk about Sremovedew Valley.

Even beyond whole legitimate words, it filtered inside legitimate words-- you'd think people would consider the Sremovedhorpe problem by now.


> this was (is) the slur filter

Was (not is) is correct: https://github.com/LemmyNet/lemmy/blob/71aed94a000c951ddfdb4...


So it only took them two years to decide that it should be a configurable option and not hardcoded? Doesn't really solve the terrible implementation, but it's a step.


Just hopping in to say : it's laughable to claim that open source projects have "hard-coded" anything. It's literally impossible to hard code things when anyone can download the source, edit it, compile it and run it on any machine they own


https://en.wikipedia.org/wiki/Hard_coding

> Hard coding (also hard-coding or hardcoding) is the software development practice of embedding data directly into the source code of a program or other executable object, as opposed to obtaining the data from external sources or generating it at runtime.


The real Lemmy wouldn't allow a slur filter. He'd tell you to use all the slurs you want and accept the consequences, and if that's a punch on the nose then it ought to be a lesson to you.

Be more Lemmy.

https://en.wikipedia.org/wiki/Lemmy


The slur filter is optional. You don't have to use it.


It is now.

But I see no point in using software that has such disdain for downstream users. I'd rather use software that treats me like an adult.


Adults are largely why software needs slur filters, so that's not really the high bar you'd expect it to be.


They’ve already said you are free to fork it.

Why do you feel they are obligated to cater to your needs?


>but instead to impose a narrow-minded agenda on everybody

Having a slur filter is not "narrow-minded agenda", it's mainstream. And, well, it's open source, so anyone can maintain a fork that removes it with not much work.


If you read the GitHub issue, the debate was not over its existence, just that instance operators should be able to configure it, which it sounds like they now can anyway (last comment on issue, he said it was added).

There was no need, and is quite malicious, to imply and talk down to their own users/supporters of their software as anything"-ist" in their motivations, which in many cases is considered a more corrosive/ruinous label (court of public opinion) than "convicted criminal" (court of law) in the West.


Having a slur filter on a particular forum instance designed and chosen by the admins of that site is a perfectly good idea. They know the character of their forum, they can choose what is and is not appropriate to say.

I think it does display a narrow-minded agenda for the authors of hosting software intended to potentially host a wide variety of forums to declare unilaterally that all sites hosted using their software must use a particular slur filter declared by them, or else create and maintain a fork.


I'm LGBT and slurs are used socially within the in-group.

Nevermind the fact that art such as film frequently relies on the use of slurs when dealing with this subject matter.

We aren't protected in real life from being called words. I've certainly had my fair share hurled at me. By having to deal with it both at a young age and in adulthood, I've grown a thick skin and strong defense system.

I worry that this attitude is more dangerous that what is trying to be accomplished.


I'm a black American and I'm honestly sick of white people telling me when I can use the "n-word." I guess if they can't have it, no one can.


> I guess if they can't have it, no one can.

I'm a white american and I think I agree with this. Making sure that only one race of people can say bad words on the internet doesn't seem practical to me. If we don't want some races saying a word, I don't see a way of preventing that which doesn't sacrifice either anonymity or black people being able to say that.

There's only one implementation that I can imagine, and it's pretty impractical and ethically dubious. The idea is to have some kind of verification process to prove that you're a certain race, and somehow publicly store the public keys of people in each category. Then, when someone want to post a word that only some races can say, they submit a zero-knowledge proof that the message was written by someone who controls the private key of one of the public keys in the appropriate category. But I'm pretty sure that a registry of people organized by race is neither practical or desirable.


The only thing this does is make people invent new slurs.


Says the thromrod!


Good points from you and echelon. This (by which I mean hardcoded slur filtering in Lemmy/LemmyBB) is not a good thing. On the other hand, it's obviously within their rights to code such a thing into their own thing.


>>* uses about 70 MB of RAM *

Hilarious that like every fucking google chrome tab uses like 1 gig of ram PER TAB!


Heh, that's far from my experience.

I've got 80 tabs open, many terminals, thunderbird (with several large inboxes) and my system has 32GB ram, only 9.4G is used.

Maybe you mean 1GB of virtual memory (mostly shared libraries) and which are shared across all tab.


I wonder if most of that is due to the zillion plugins people install for their browser.


[flagged]


> Edit: This comment was written at a time when Lemmy the software was practically identical with the lemmy.ml instance. At that time we barely had any moderation tools, so it was an easy way to keep some groups of users off the instance. Now its different, there are good mod tools, and many different instances. So we removed the slur filter in Lemmy 0.14.0 (instance admins can optionally configure one, which lemmy.ml does).

The comment was edited Nov 2021 to include this new context.


You should read your own link

> we removed the slur filter in Lemmy 0.14.0


Uh, right in the link you gave, they indicate the filter has been removed and is now just set up on their own instance.


Obviously there isn't a filter here...




Consider applying for YC's Spring batch! Applications are open till Feb 11.

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: