Don’t lock your FOSS project into proprietary communications. If you believe in FOSS for your project, you can believe in FOSS for your communications too… and the wealth of alternative clients and supported platforms (and decentralization!) will lead to greater accessibility.
I am fully on board with decentralization, federation, open platforms and clients. I think they will always win in the end, and they should be given the priority. I use Matrix and pay Element for a server even if though I am capable of hosting it myself. I use Mastodon. I use IRC, but only through the Matrix clients.
I also use Discord. I have spent a lot of time on this platform as well, and I’m sorry to say that it’s one of the best experiences out there. None are perfect, but the Discord client is years ahead of all the Matrix clients combined. Drew mentions accessibility in his post, but that information is a bit dated as Discord has progressed in this area. Enough that a blind student of mine could easily navigate and use the platform a year ago.
FOSS projects should definitely prioritize FOSS modes of communication. But they should also be accepting of proprietary paths, in an effort to grow their communities. Let’s face it, there are large groups of people on this planet that will never sign up for Matrix, but use Discord on a daily basis. If we want to grow our projects, and make things accessible to everyone, we also need to consider where all the users are instead of requiring them to join yet another service. This is surely an area where I disagree with Drew, as he seems to neglect the value of any one else’s preferred modes of communication/work.
Chat isn’t going anywhere, so projects need to accept and embrace it as best as we can. My personal preference is that projects should bridge the chat systems, and Matrix obviously provides that capability. With Matrix bridges one can also chat with Discord and IRC users. Bridges have their problems, but we can meet the users where they are without compromising our beliefs.
It doesn’t hurt a project to give people from proprietary networks the ability to join the conversation, in fact I’d argue it benefits them.
Aren’t people always posting about FOSS maintainer burnout? I’d wager that adding additional users who aren’t willing or able to use simple FOSS tools will be more of the burnout-inducing kind than the helpful community-minded sort. If you present your FOSS project as a product with all the regular support channels that proprietary products use, you’re gonna get people whose relationship to your project is as consumers of a product.
I do wonder how closely I will follow this idea myself, though. I’m developing a project on sourcehut and am considering setting up a copy of it on github so people can find it and file issues and such.
Yes, each maintainer should make their own decisions on how wide of a net they wish to cast. If you’re making a personal project and don’t want a bunch of consumers, then you’re probably not to the level I was thinking of when I wrote that. A single Matrix channel is actually a lot less maintenance than an entire Discord server.
Personally I mirror my repos across providers for a number of reasons. That includes discoverability, but also resilience and availability. I use codeberg for some things, but have scaled back from sourcehut because I personally don’t like the interfaces as much (and I can’t automate pushing from my gitea instance to sourcehut yet).
Bridging from Matrix also has (what some would call) an advantage - Matrix folks get a first-class experience because Matrix was designed for bridging, whereas Discord looks just a little funky because all the bridged users show up as “bots”. This way there’s a natural encouragement to “upgrade” to Matrix to get a more natural experience. And it lets people show up to the Discord and ask why half the people are labeled bots, instead of bailing out on Matrix before anyone gets a chance to engage in a conversation with them. (Disclaimer: I’ve never used this bridge, I’m going off educated guesses and the screenshot I linked above.)
Discord bridges on Librea are comically bad. I’ve been in multiple channels where introducing a Discord bridge caused the channel to just disintegrate.
Matrix bridges are like night and day. There’s a few quirks around messages that get edited, but overall the integration is just leaps and bounds better. Messages show as being sent by the sender instead of the bridge-user.
I accidentally closed this tab and everything after the horizontal break was OCRed from a frame buffer in Android Recents which was still there for some reason. Also I’m sleep deprived
Bridges can have bad, heavy handed translations of certain semantics such as replies and message links. Doesn’t help that those features are my first go-to when referencing past knowledge in conversation.
Especially when they’re implemented as Rich Embeds (Rich Embeds being the part of the message representation OpenGraph and Cards are parsed into. Bots can generate their own freely. Not mere media embeds aka attachments). You don’t mind when it’s a handful of people in a small friendly community, but at some threshold of something you really do start to mind. (Though it might really have everything to do how a bridge decides to render and translate everything and that I’m merely misplacing my frustrations. There are definitely communities I lurk in where don’t even notice the seams)
Ultimate answer is that it doesn’t matter if some minor thing like the Bot tag looks funky or the bot embeds the username in the message content instead of changing the represented username per message, so long as the experience is enjoyable for both natives
(If you post a message via webhook you can add the username and avatar to be used for that message but you can’t use replies. Pick your poison)
FOSS projects should definitely prioritize FOSS modes of communication. But they should also be accepting of proprietary paths
I hope I didn’t imply meaning we should completely shun such platforms, however there are five big issues with the current state of choosing something like Discord or Slack
An increasing number of projects, especially by newer to FOSS maintainers, exclusively support Discord or Slack. This shouldn’t be acceptable.
Matrix/XMPP/IRC are treated as subordinate rather than the home with a bridge or secondary support on proprietary networks. The goal should be to get them to cross over and long-term maintenance as proprietary options need to make no promises to maintaining backwards compatibility to support bridges or even stable ToSs.
With Matrix Spaces/Rooms and XMPP MUCs, users can join in a decentralized manner so they’re not required to create an account with your provider, and it’s should be totally acceptable to host a server behind a proxy for anonymity if those are a user’s desires.
As a workplace cooler or the hallway track of a conference, community building is between humans and private discussions should be encouraged but E2EE should be the default. Just as you wouldn’t want eavesdroppers recording private conversation (and then selling to data brokers or giving to the cops), private coms should remain private and this should be valued by the community.
Public communications should in most cases be search engine indexable and archivable.
The fact that Discord is a closed-source, centralized real-time chat that can arbitrarily ban you from using it and enforces the use of only their own client, which is also closed-source, is already sufficiently damning for anyone who cares about software freedom. I hate Discord and want to see it either become a Matrix-like free software platform or be destroyed.
The fact that some people are apparently using searching for information in chat backlogs rather than writing documentation on a webpage is bad, but isn’t directly related to Discord as a piece of technology - the same dynamic could exist in any real-time chat system, and there are good reasons to not make real-time chat logs accessible to search engine crawlers as a matter of course. Not to mention the fact that even if Discord chat logs were web-searchable, having to find the information you want in the middle of a potentially-unrelated set of conversations is not a great user experience.
That said the Hacker News thread on this article made me become aware of https://github.com/matrix-org/matrix-static , which would among other things let you make a documentation website out of your real-time chat if you were using a free software real-time chat like you ought to be doing anyway.
Re: the sub-discussion about free software projects that use Discord or
Slack, I’ve never heard this point made, so I’ll make it now. Most of
these services would not exist without free or open source software.
There’s a huge digital commons, and VC-funded companies have shown up to
exploit it and enclose it. With the exception of Apple and Microsoft,
the big tech companies are all built on a foundation of free software.
So when free software projects use these lock-in services like Discord,
they’re basically saying “We love being exploited. Do it some more!”
And when people like me, or Drew Devault, or others are attacked as
zealots, our attackers are often just hypnotized by the shiny things
dangled in front of them by the masters of illusion in Silicon Valley.
So when free software projects use these lock-in services like Discord, they’re basically saying “We love being exploited. Do it some more!” And when people like me, or Drew Devault, or others are attacked as zealots
Well, I think I ought to be the one who decides whether I feel “exploited”. If you think you should get to decide that for me, then I will pretty strongly disagree, though I don’t know if that counts in your mind as you being “attacked” as a “zealot”.
But a lot of this seems to be the usual perma-flame-war between people who want everything everywhere to be GPL/copyleft, and people who prefer permissive licenses. I am very much in the latter group. I write permissive-licensed software because it’s more useful to me and to other developers like me. I don’t feel “exploited” when someone uses it and doesn’t contribute code back, or when someone uses it and doesn’t pay me, or when someone uses it and gets a commercial benefit from their use, or when someone uses it and then doesn’t open-source their entire tech stack. I didn’t write it to try to force people to follow an ideology; I wrote it in the simple hope it would useful, and gave it to the world with no expectation of either me, or anyone else, receiving anything in return.
Anyway. Perhaps you would feel “exploited” in such cases, and there are licenses you can choose to use for your software to try to prevent that. But that’s a decision you get to make for you, not a decision you get to make for me. And my objection begins at the moment when it feels like you are trying to make the decision for me.
Agreed, I don’t like the language of exploitation around large companies making use of free software - they are generally using it under the same terms that anyone, myself included, can make use of free software (and when they don’t, organizations like the FSF can and do sue companies for copyright violations). I certainly dislike lock-in proprietary services, but I care a lot more about free software being available for any person or organization to use, even if they want to use it in a way that makes the original author of the software angry.
I don’t mind that the services are proprietary, but I do object to their terms of service and so I end up not being involved with projects that use them. I wish an org like the FSF or Linux Foundation would provide Matrix instances for F/OSS projects with a sane privacy policy and one-click deployment.
LLVM pays for hosted Discourse and their T&Cs and privacy policies are ones I’m actually happy to agree with. This was a key requirement for moving there from the self-hosted mailing lists.
macOS and iOS are both build on a FreeBSD userland and their kernel, XNU, originally derives from a free software Carnegie Mellon research kernel called Mach.
Windows’ networking stack is also based on the BSD TCP/IP stack, and many of its networking utilities come from BSD. Source that I cribbed from Wikipedia.
Windows’ networking stack is also based on the BSD TCP/IP stack, and many of its networking utilities come from BSD. Source that I cribbed from Wikipedia.
This is why I like Lobsters discussions more than Hacker News, Reddit, Twitter. You’re less likely to get attacked when you have a point and objecting to the objectionable is considered good without needing to tiptoe.
He may have been banned but Drew’s words ring true: https://drewdevault.com/2021/12/28/Dont-use-Discord-for-FOSS.html
Don’t lock your FOSS project into proprietary communications. If you believe in FOSS for your project, you can believe in FOSS for your communications too… and the wealth of alternative clients and supported platforms (and decentralization!) will lead to greater accessibility.
I am fully on board with decentralization, federation, open platforms and clients. I think they will always win in the end, and they should be given the priority. I use Matrix and pay Element for a server even if though I am capable of hosting it myself. I use Mastodon. I use IRC, but only through the Matrix clients.
I also use Discord. I have spent a lot of time on this platform as well, and I’m sorry to say that it’s one of the best experiences out there. None are perfect, but the Discord client is years ahead of all the Matrix clients combined. Drew mentions accessibility in his post, but that information is a bit dated as Discord has progressed in this area. Enough that a blind student of mine could easily navigate and use the platform a year ago.
FOSS projects should definitely prioritize FOSS modes of communication. But they should also be accepting of proprietary paths, in an effort to grow their communities. Let’s face it, there are large groups of people on this planet that will never sign up for Matrix, but use Discord on a daily basis. If we want to grow our projects, and make things accessible to everyone, we also need to consider where all the users are instead of requiring them to join yet another service. This is surely an area where I disagree with Drew, as he seems to neglect the value of any one else’s preferred modes of communication/work.
Chat isn’t going anywhere, so projects need to accept and embrace it as best as we can. My personal preference is that projects should bridge the chat systems, and Matrix obviously provides that capability. With Matrix bridges one can also chat with Discord and IRC users. Bridges have their problems, but we can meet the users where they are without compromising our beliefs.
It doesn’t hurt a project to give people from proprietary networks the ability to join the conversation, in fact I’d argue it benefits them.
Aren’t people always posting about FOSS maintainer burnout? I’d wager that adding additional users who aren’t willing or able to use simple FOSS tools will be more of the burnout-inducing kind than the helpful community-minded sort. If you present your FOSS project as a product with all the regular support channels that proprietary products use, you’re gonna get people whose relationship to your project is as consumers of a product.
I do wonder how closely I will follow this idea myself, though. I’m developing a project on sourcehut and am considering setting up a copy of it on github so people can find it and file issues and such.
Yes, each maintainer should make their own decisions on how wide of a net they wish to cast. If you’re making a personal project and don’t want a bunch of consumers, then you’re probably not to the level I was thinking of when I wrote that. A single Matrix channel is actually a lot less maintenance than an entire Discord server.
Personally I mirror my repos across providers for a number of reasons. That includes discoverability, but also resilience and availability. I use codeberg for some things, but have scaled back from sourcehut because I personally don’t like the interfaces as much (and I can’t automate pushing from my gitea instance to sourcehut yet).
Bridging from Matrix also has (what some would call) an advantage - Matrix folks get a first-class experience because Matrix was designed for bridging, whereas Discord looks just a little funky because all the bridged users show up as “bots”. This way there’s a natural encouragement to “upgrade” to Matrix to get a more natural experience. And it lets people show up to the Discord and ask why half the people are labeled bots, instead of bailing out on Matrix before anyone gets a chance to engage in a conversation with them. (Disclaimer: I’ve never used this bridge, I’m going off educated guesses and the screenshot I linked above.)
Discord bridges on Librea are comically bad. I’ve been in multiple channels where introducing a Discord bridge caused the channel to just disintegrate.
Matrix bridges are like night and day. There’s a few quirks around messages that get edited, but overall the integration is just leaps and bounds better. Messages show as being sent by the sender instead of the bridge-user.
Speaking a heavy discord user, bridges spark an immediate self-question asking if whatever I’m about to do is worth it.
Because bridges are irritating or because they remind you that Discord is proprietary? Or something else?
I accidentally closed this tab and everything after the horizontal break was OCRed from a frame buffer in Android Recents which was still there for some reason. Also I’m sleep deprived
Bridges can have bad, heavy handed translations of certain semantics such as replies and message links. Doesn’t help that those features are my first go-to when referencing past knowledge in conversation.
Especially when they’re implemented as Rich Embeds (Rich Embeds being the part of the message representation OpenGraph and Cards are parsed into. Bots can generate their own freely. Not mere media embeds aka attachments). You don’t mind when it’s a handful of people in a small friendly community, but at some threshold of something you really do start to mind. (Though it might really have everything to do how a bridge decides to render and translate everything and that I’m merely misplacing my frustrations. There are definitely communities I lurk in where don’t even notice the seams)
Ultimate answer is that it doesn’t matter if some minor thing like the Bot tag looks funky or the bot embeds the username in the message content instead of changing the represented username per message, so long as the experience is enjoyable for both natives
(If you post a message via webhook you can add the username and avatar to be used for that message but you can’t use replies. Pick your poison)
I hope I didn’t imply meaning we should completely shun such platforms, however there are five big issues with the current state of choosing something like Discord or Slack
An increasing number of projects, especially by newer to FOSS maintainers, exclusively support Discord or Slack. This shouldn’t be acceptable.
Matrix/XMPP/IRC are treated as subordinate rather than the home with a bridge or secondary support on proprietary networks. The goal should be to get them to cross over and long-term maintenance as proprietary options need to make no promises to maintaining backwards compatibility to support bridges or even stable ToSs.
With Matrix Spaces/Rooms and XMPP MUCs, users can join in a decentralized manner so they’re not required to create an account with your provider, and it’s should be totally acceptable to host a server behind a proxy for anonymity if those are a user’s desires.
As a workplace cooler or the hallway track of a conference, community building is between humans and private discussions should be encouraged but E2EE should be the default. Just as you wouldn’t want eavesdroppers recording private conversation (and then selling to data brokers or giving to the cops), private coms should remain private and this should be valued by the community.
Public communications should in most cases be search engine indexable and archivable.
The fact that Discord is a closed-source, centralized real-time chat that can arbitrarily ban you from using it and enforces the use of only their own client, which is also closed-source, is already sufficiently damning for anyone who cares about software freedom. I hate Discord and want to see it either become a Matrix-like free software platform or be destroyed.
The fact that some people are apparently using searching for information in chat backlogs rather than writing documentation on a webpage is bad, but isn’t directly related to Discord as a piece of technology - the same dynamic could exist in any real-time chat system, and there are good reasons to not make real-time chat logs accessible to search engine crawlers as a matter of course. Not to mention the fact that even if Discord chat logs were web-searchable, having to find the information you want in the middle of a potentially-unrelated set of conversations is not a great user experience.
That said the Hacker News thread on this article made me become aware of https://github.com/matrix-org/matrix-static , which would among other things let you make a documentation website out of your real-time chat if you were using a free software real-time chat like you ought to be doing anyway.
Re: the sub-discussion about free software projects that use Discord or Slack, I’ve never heard this point made, so I’ll make it now. Most of these services would not exist without free or open source software. There’s a huge digital commons, and VC-funded companies have shown up to exploit it and enclose it. With the exception of Apple and Microsoft, the big tech companies are all built on a foundation of free software.
So when free software projects use these lock-in services like Discord, they’re basically saying “We love being exploited. Do it some more!” And when people like me, or Drew Devault, or others are attacked as zealots, our attackers are often just hypnotized by the shiny things dangled in front of them by the masters of illusion in Silicon Valley.
Well, I think I ought to be the one who decides whether I feel “exploited”. If you think you should get to decide that for me, then I will pretty strongly disagree, though I don’t know if that counts in your mind as you being “attacked” as a “zealot”.
But a lot of this seems to be the usual perma-flame-war between people who want everything everywhere to be GPL/copyleft, and people who prefer permissive licenses. I am very much in the latter group. I write permissive-licensed software because it’s more useful to me and to other developers like me. I don’t feel “exploited” when someone uses it and doesn’t contribute code back, or when someone uses it and doesn’t pay me, or when someone uses it and gets a commercial benefit from their use, or when someone uses it and then doesn’t open-source their entire tech stack. I didn’t write it to try to force people to follow an ideology; I wrote it in the simple hope it would useful, and gave it to the world with no expectation of either me, or anyone else, receiving anything in return.
Anyway. Perhaps you would feel “exploited” in such cases, and there are licenses you can choose to use for your software to try to prevent that. But that’s a decision you get to make for you, not a decision you get to make for me. And my objection begins at the moment when it feels like you are trying to make the decision for me.
Agreed, I don’t like the language of exploitation around large companies making use of free software - they are generally using it under the same terms that anyone, myself included, can make use of free software (and when they don’t, organizations like the FSF can and do sue companies for copyright violations). I certainly dislike lock-in proprietary services, but I care a lot more about free software being available for any person or organization to use, even if they want to use it in a way that makes the original author of the software angry.
I don’t mind that the services are proprietary, but I do object to their terms of service and so I end up not being involved with projects that use them. I wish an org like the FSF or Linux Foundation would provide Matrix instances for F/OSS projects with a sane privacy policy and one-click deployment.
LLVM pays for hosted Discourse and their T&Cs and privacy policies are ones I’m actually happy to agree with. This was a key requirement for moving there from the self-hosted mailing lists.
macOS and iOS are both build on a FreeBSD userland and their kernel, XNU, originally derives from a free software Carnegie Mellon research kernel called Mach.
Windows’ networking stack is also based on the BSD TCP/IP stack, and many of its networking utilities come from BSD. Source that I cribbed from Wikipedia.
I remembered Apple’s use of FreeBSD after I posted, though I had forgotten about Windows networking. All of that just strengthens my point.
Not since Vista, which rewrote the IP stack.
This is why I like Lobsters discussions more than Hacker News, Reddit, Twitter. You’re less likely to get attacked when you have a point and objecting to the objectionable is considered good without needing to tiptoe.