1. 6

    nano for all my editing needs in a terminal.

    1. 4
    1. 2

      I think this article does a better job at explaining the situation as a whole (I’m biased: I know the author and have written for the blog). The Tesonet incident was covered a while ago and it seems unlikely that they have any links. I still wouldn’t recommend NordVPN due to questions about their ownership misleading advertising. Frankly, I dislike the Nord franchise, however VPN drama has gone too far. VPNs are touted as an all in one privacy preserving service, which simply isn’t the case. Unless you really need to access geo-restricted content, or use a public wifi network that blocks Tor, you don’t need a VPN. For most Lobste.rs users operating one solely to securely make their Homelab available over the internet would make sense.

      1. 1

        I received a job offer by mentioning the company’s name in my article. Didn’t take it up, but thought it was interesting.

        1. 4

          Maybe something like Sieve could help with that, if it ever become widespread. It is not too late for email to evolve: autocrypt, chat-over-imap (email) IMAP IDLE and NOTIFY.

          We now have all the tools to build a solid experience providing all the features we are looking for from all chat systems. All it takes is finding some client that suits your needs.

          1. 9

            I think there are two, related, problems.

            The first is that email has changed a lot in how it’s used. Most users 20 years ago had one client per mail account. POP3 was common and its usage model was very simple: clients downloaded all messages, the server storage is just a cache of the last n days of emails. IMAP allowed storing the entire mail history on the server (POP3 did in theory, but a bunch of operations were O(n) in terms of the size of the mail box) and started shifting things to the server. Adding in things like Sieve and you’re in a situation where there’s a lot of duplication between the client and server. Most mail clients can do spam filtering but no one really wants this anymore: if Thunderbird does spam filtering, then no spam received since the last time I had my laptop on and now will be filtered when I check the mail on my phone / tablet / any other device. Now, most people check email on multiple devices, so you need to do almost everything on the server for it to be useful. Features that only work on one client are annoying.

            The second problem is that the communities that write mail servers and mail clients are quite disconnected. Look at JMAP. It is a big improvement over IMAP, but it’s only really supported by a single client for a proprietary mail service, which uses its own server. They can do this because they have the vertical integration (the same is true for Gmail and Outlook / Exchange): they add features to the client and server at the same time. JMAP is low priority in Dovecot because Thunderbird doesn’t use it, it’s low priority in Thunderbird because Dovecot doesn’t use it.

            This is made worse by the fact that supporting good server-side features (e.g. Sieve) reduces the perceived value of the client. I use Sieve to filter all of my mail and use a Thunderbird plugin that gives me syntax highlighting of the script and updates it over the managesieve protocol. As a result, Thunderbird’s complex mail rule features are of zero value to me. Similarly, my mail server does server-side spam tagging and I filter the results with Sieve (with IMAPSIEVE rules to mark messages as spam or not-spam when they are moved to and from the junk mailbox). These then Supporting a new feature on the server removed any value for me in the client having spam detection and message filtering logic.

            1. 3

              Very well put.

              I agree with the generally point, and here are some nuances or extrapolations.

              JMAP

              JMAP is actually more REST-like than most “RESTful” APIs. It is stateless, highly cacheable, supports transparent intermediaries and provides a uniform interface for manipulating different resources. However, it doesn’t use HTTP verbs to implement this. – https://jmap.io/

              With the advent of HTTP 3 and presence of HTTP 2, why bother optimizing a few extra round trips – or – why bother with HTTP at all?

              We end-up with HTTP 200 with this in it: { "status": 400, ...}.

              On the other hand, immutable UIDs, constant syntax without so many exceptions are a good thing.

              server-side -vs- client-side

              It is a good thing that things are moving toward server-side for some aspects: servers are easier to maintain than each and every user’s machines (that may still literally be between their hands when we need to do the maintenance).

              Yes, sure, former/existing mail client look silly now with all its features.

              walled garden
              • Either we embrace (extend, extinguish) the situation and stick our head into the lion’s head with walled garden like whatsapp, signal, telegram and so on.
              • Either we accept the issue and try to bridge everything together (matrix- or matterbridge-style) and hope it will get better (which will not happen as long as bridges are maintained)
              • Either we jump back to the lowest common denominator, and keep building from there to improve the situation for everyone at once.of

              It looks like a short-, middle-, long-term solution choice, so maybe all three up front? A lot ahead, yet a few years ago, none of these issue did really exist!

              1. 3

                With the advent of HTTP 3 and presence of HTTP 2, why bother optimizing a few extra round trips – or – why bother with HTTP at all?

                We end-up with HTTP 200 with this in it: { “status”: 400, …}.

                For JMAP specifically, its more of a RPC protocol that runs over HTTP (or anything really; a profile for WebSockets and works great).

                Why HTTP+JSON? Mostly because its convenient: everyone understands it, and every platform has high-performance libraries for it. The learning curve on IMAP is a big part of why JMAP exists.

                As for optimising a few round-trips, not everywhere is nearby. Much of Fastmail’s frontend engineering was done in Melbourne, Australia, 300ms from our servers on the US east coast. A lot of our UI performance comes from packing a lot into each request.

                1. 2

                  We end-up with HTTP 200 with this in it: { “status”: 400, …}.

                  The RFC that details with the detailed error responses, RFC7807, specifically calls out that the status code listed in the json object must match the status code returned by the web server. The status member of the response object is considered a “convenience” for the consumer of the response, whatever the heck that means.

                  One area where this could be false, which is addressed in the RFC itself, is when proxy servers, load balancers, etc. might alter the status codes of a response.

                  1. 2

                    Then I am tempted to think this is a misbehavior of the reverse proxy that changes the semantics. I feel like sliding onto a different topic, but is that not the point of discussions… :)

                2. 3

                  The second problem is that the communities that write mail servers and mail clients are quite disconnected. Look at JMAP. It is a big improvement over IMAP, but it’s only really supported by a single client for a proprietary mail service, which uses its own server. They can do this because they have the vertical integration (the same is true for Gmail and Outlook / Exchange): they add features to the client and server at the same time. JMAP is low priority in Dovecot because Thunderbird doesn’t use it, it’s low priority in Thunderbird because Dovecot doesn’t use it.

                  I think fastmail has an inner fork of Cyrus, and they have merged big parts of it with upstream Cyrus (the latest version has JMAP support). The problem with JMAP is that parts of it are still nonstandard yet (unpublished or only drafts), mainly notifications and calendar/contacts. meli has basic JMAP support.

                  This is made worse by the fact that supporting good server-side features (e.g. Sieve) reduces the perceived value of the client.

                  This is relevant to your first paragraph: client-side filtering doesn’t make sense anymore (or at least like Thunderbird does it). Spam and filtering in general is part of the “mail stack” you use and clients assuming they can replace the concept of a stack is the wrong approach. The user should always be able to define their stack.

                  1. 2

                    The problem with JMAP is that parts of it are still nonstandard yet (unpublished or only drafts), mainly notifications and calendar/contacts.

                    While the JMAP standards that are in a status of ‘PROPOSED STANDARD’, it is worth noting the vast majority of RFCs in use on the internet are in that status. The list of RFCs with a ‘Internet Standards’ is pretty darn short.

                    Notifications are a thorny one, but JMAP’s core RFC does have two different methods for notifications/pushing to clients. The more resource friendly method unfortunately also leads to vendor specific implementations.

                    As for Calendars & Contacts, I agree. I hope that they submit it for a proposed standards track soon.

                    1. 2

                      As for Calendars & Contacts, I agree. I hope that they submit it for a proposed standards track soon.

                      They’re being worked on in public: https://datatracker.ietf.org/wg/jmap/documents/

                      1. 1

                        I realize in hindsight that my comment could be interpreted as me implying it is being done in private, that was not my intention.

                        It’s more that I’m itching for it to be published as a Proposed Standard RFC so that I can safely assume it’s what people will be developing with. I have a few ideas I want to explore but I’d rather wait until there would be other implementations in development that I could test interoperability against.

                        1. 2

                          No problem, and fair enough! We’re of course keen to get them finalised too, but the IETF process can be slow. Its worth it though; the JMAP core and mail specs spent three years (I think) at IETF and are very much better for it!

                    2. 2

                      I think fastmail has an inner fork of Cyrus, and they have merged big parts of it with upstream Cyrus (the latest version has JMAP support).

                      Fastmail has six internal commits that we apply to upstream master on each deploy. They are all either adjustments to handle differences of opinion or historical bugs in our middleware or stored data that require a lot of work to update (eg FM’s idea of “admin” is different to Cyrus’ idea), or they’re minor changes to match the way we like to operate the service (eg we convert all assertions and fatal errors into coredumps, triggering a bunch of analysis tooling).

                      I’m not saying Cyrus upstream is necessarily easy to operate, but in terms of JMAP support, its complete and correct (bugs notwithstanding) and what we use for both the Fastmail and Topicbox UIs and for the general protocol access we offer to users.

                  2. 2

                    Thanks for linking these other clients, I’ve been meaning to experiment with some and MailPile looks pretty good.

                    1. 2
                  1. 3

                    @kev @freddym Thanks for the inspiration!

                    1. 4

                      No problem!

                      I completely agree that spam filters and blocking techniques should be a more prominent feature in general. For the average user, there is far too much spam in their inbox. Heck, for most users even. I mentioned a few techniques to limit spam in my article:

                      Email cloaking services protect your personal email being given away when you sign up for something. You can use spamgourmet or a temporary email when signing up for online accounts anywhere that you don’t trust. Similarly, you can use an email client like Thunderbird which has additional spam filters built in. As Kev mentioned, you can also train your spam filter to make it better at identifying what is and isn’t spam.

                      As you say “this is more of an application-level problem” then a protocol one. We can probably fix most of our problems by changing some of out habits surrounding email. However, it begs the question as to why should we have to? For something that was created in the 1960’s, surely a better solution exists?

                    1. 1

                      While NeoMutt is great for mailing lists, I wouldn’t recommend it for most people.

                      Why not?

                      I’m using mutt pretty much for all emails. Even lobste.rs ;-)

                      1. 6

                        I know I’ve said this before on this site and I’ll say it again, I really cannot stand reading blocks of mono spaced prose. Something about the character grid just makes my eyes glaze over.

                        1. 3

                          Also, where is mutt on mobile? :)

                          1. 3

                            My mum struggles to use webmail, if I were to try and get her to use NeoMutt she wouldn’t have a clue how to use it. For most people on lobste.rs however, using NeoMutt is not going to be an issue. Importantly, most people don’t use lobste.rs (or have similar technical know-how), so for most people I can’t recommend.

                          1. 1

                            Not mentioned here are https://metrical.xyz/, https://usefathom.com/, and http://simpleanalytics.io/. All are privacy-focused.

                            1. 8

                              We briefly mentioned Simple Analytics and Fathom in last week’s article, Lightweight alternatives to Google Analytics. However, we didn’t focus on those tools because they’re not open source (Fathom was, but version 2 is not; version 1 is now called Fathom Lite). LWN is big on open source, not so much on proprietary tools.

                              1. 1

                                Equally Offen is another alternative who market themselves on being ‘fair’. Haven’t used them personally however.

                              1. 12

                                Great introductory article! Both twitter and mastodon have their upsides and downsides but overall, mastodon generates a better experience, conversations are generally more civil. Having different timelines means you can have both diversity of content and content focused on your area of interest. No “shouting in a metropole”, instead “talking inside the village and between villages”.

                                Do note I say mastodon and not fediverse. The fediverse itself is a large creature with many facets and there’s much to love about it. But mastodon is the closest the fediverse has to twitter, therefore I’m singling it out in the comparison above.

                                1. 4

                                  mastodon generates a better experience, conversations are generally more civil

                                  I’d agree to an extend but how big of an effect do you think Mastodon has on this? I’d argue that Mastodon is very much capable of suffering from twitters issues and if you look into the biggest instance: mastodon.social you can see that the discussions there tend to be equally toxic as on twitter.
                                  I think the key difference here is the federation/fediverse itself. As you pointed out talking “inside the village” is what makes experience better than twitter and the village effect really falls apart in big, general instances.

                                  So I think the real strength is federated niche communities of subjects and that should be encouraged over mass general instances.

                                  Other than that I really liked how Diaspora approached this issue by putting emphasis on micro-blogging rather than “shouting to the void”. I believe that full formatting and high text limit allowed people to produce beautiful discussions and experiences and really enabled to constrast to weed out the screamers: someones well put together 1 minute read triumph over 10 character sentence any time of the day when put side-by-side.
                                  Another great lesson from Diaspora was emphasis of tags to create these niche villages where healthy experiences could be had.

                                  All in all I think Mastodon is only a slight improvement over Twitter and the fediverse itself contains much valuable implementations of micro-blogging idea.

                                  1. 8

                                    You are absolutely right. Simply put: mastodon.social is no better than twitter. That’s why this instance should, imho, be avoided as well as the new instance the developer is now promoting. Do a few minutes of digging and you’ll find an instance that suits you. And if you really have those like-minded people around you and you watch what they boost, you will find the good people on the large instances while filtering out the toxic.

                                    To some extent… No social network, be it physical or digital, is perfect.

                                    1. 4

                                      Do a few minutes of digging and you’ll find an instance that suits you.

                                      Honest question: where do I dig? Is there a repository for most instances along with a short description of their aims and policies?

                                      1. 3

                                        That is still the single most important issue with the fediverse: discovery.

                                        There are sites like: https://fediverse.network/ https://fediverse.party/ https://instances.social/

                                        Hope they help, but no guarantees.

                                        Personally, I made an account, ended up not liking the people and discussions there. I looked around, searched the hashtags I was interested in, looked at what instance most people were on who discuss those topics. Turns out most people who talk about #foss are on fosstodon.org, so that’s where I made my account, have been a happy camper ever since!

                                        1. 2

                                          Even if you do end up on the flagship instance (not that I recommend it) you can switch away later once you find a better place, and all your data and followers will go with you: https://blog.joinmastodon.org/2019/06/how-to-migrate-from-one-server-to-another/

                                          I moved from a medium-sized instance to running a Pleroma off the pi3 under my desk and it wasn’t really a big deal.

                                          1. 2

                                            Sadly, there isn’t really a place for this (somehow). instances.social claims to be good at this, though from my experience it isn’t worth the time. Mastodon’s Homepage has a list of about 30ish instances. Some other instances I can recomend are bsd.network, fosstodon.org, libretooth.gr, social.privacytools.io and also social.nixnet.services

                                        2. 2

                                          So I think the real strength is federated niche communities of subjects and that should be encouraged over mass general instances.

                                          Easier said than done when your instance doesn’t comply with what a lot of instance maintainers believe. Your instance may end up on a shared blacklist and get defederated from if it doesn’t defederate from other certain instances, essentially treating a majority of mastodon as its own network, just over volunteer-ran servers where fringe instances may as well be in their own unique bubble.

                                          1. 4

                                            There’s tiers of federation / blocklists.

                                            At one extreme is the relay; everything posted to instance A is on the public timeline of instance B.

                                            Next is the default setting for mastodon: if user@instanceb talks to user@instancea, all toots from both users will appear on the public timeline of both instances.

                                            Most shared blocklists are used for the next setting, ‘federate interactions, but do not publicise them’. user@instancea and user@instanceb can talk to each other but only people they tag will ever see it.

                                            Finally is the ban; instance B will never connect to instance A under any circumstances. This is absolutely required censorship functionality (consider ‘content posted to instance A is frequently illegal in the jurisdiction governing instance B so we really can’t host it’). Instance moderators are mostly unpaid, so it’s unsurprising you see them taking shortcuts to avoid trouble.

                                            The underlying problem is that last one: “Instance moderators are mostly unpaid”. Your options are to pay for censorship you like, or get censorship you dislike for free.

                                      1. 12

                                        Fully agree. The convenience and efficiency of email is unmatched. I hate having to use Slack for work. The UI is so sluggish, I get pinged for the silliest of things (because they can!). Email makes people more thoughtful while communicating. You can’t delete a sent mail. And more importantly, email won’t go away. What’s to say Slack won’t “thank you for the incredible journey” when their VC funding stops?

                                        1. 5

                                          Also agree and hate slack for work - have you tried Ripcord? I switched from the official client and it’s far quicker/calmer! Still won’t fix the expectation slack gives to colleagues sadly…

                                          1. 5

                                            Ripcord won’t build on OpsnBSD, sadly. I’ve spoken to the dev about it. For now, I use wee-slack, which sucks less.

                                          2. 4

                                            What’s to say Slack won’t “thank you for the incredible journey” when their VC funding stops?

                                            I hope that is the case. Fortunately, my time using Slack was brief. When you give the users to option to ping people with ease they will, however, due to the nature of email (and email lists) they are normally more precise as they are only done when necessary.

                                          1. 1

                                            Strangely all hyperlinks on that article are underlined for me in mobile Safari

                                            1. 1

                                              I still wanted a way of highlighting links within my posts while injecting some colour. So I decided to add a fun animation that swipes a background colour behind my links when they are hovered over.

                                              Technically, my links are still underlined, but I really like this design so I’m going to stick with it. 🙂

                                              1. 2

                                                This reminds me that I only recently learned of the styling restrictions on the css :visited pseudoclass. My blog used forbidden styles (italics visited links) from before the restriction was imposed, and were broken for a long time and I only noticed in the last month or so.

                                            1. 4

                                              The point about ‘disturbing activities’ becoming impossible to monitor is very valid. Remote access software companies like Teamviewer removed the ability to turn the users screen black from the free edition after scammers abused it. Encryption is a slightly different matter however.

                                              Equally, encrypted free video conferencing tools exist, take Jitsi Meet for example. By disabling encryption for free users, they will force those with wrong intent on to other platforms, only delegating the problem.

                                              1. 2

                                                By disabling encryption for free users, they will force those with wrong intent on to other platforms, only delegating the problem.

                                                Which is an understandable stance for them to take. They had enough bad press at the beginning of the COVID lockdowns with regards to lax security. They don’t want the future bad press about whatever abuse is happening with them not doing anything (because they can’t).

                                                Let other providers deal with that kind of bad press.

                                                It’s up to zoom to decide what type of customers they want and what type they don’t want.

                                                1. 2

                                                  What was the TeamViewer thing about turning the user screen black?

                                                  1. 1

                                                    Tech Support Scammers used to used to turn their victims screens black to ‘fix their computers’ when in fact they would be trying to steal bank details etc… The black screen was also used by refund scammers to use inspect element to make it seem as if the victims bank balance had increased. This was only possible because the ‘black screen’ function came with the free version. After TeamViewer was alerted about this, they moved the feature to the paid version. Sadly, not all companies followed suit, Zoho assist still has this feature in the free version.

                                                    By removing desired features from the free version, you push ‘bad actors’ onto over platforms. In Zooms case this will be Jitsi Meet.

                                                1. 13

                                                  Equally, if you don’t want to set up a static site for some reason, write.as is a great option over Medium.

                                                  1. 10

                                                    Thanks for sharing! I’m working on Sorcia.

                                                    But this software is not ready for that at all yet. The federation has to be done. It is still under development :)

                                                    Contributors are welcome!

                                                    1. 2

                                                      Thats awesome, I thought it was a fitting project so I posted it. Good luck in the future!

                                                      1. 2

                                                        That’s Okay and Thank you! I’ll post here when it is ready.

                                                        1. 1

                                                          I’m not sure how you’re planning to implement the federated aspect of your service, but if you’re interested in providing ActivityPub support, I’m working on a general purpose library for it and I could use other projects’ use cases.

                                                          1. 2

                                                            AP is one part of it I’m exploring, but that’s not my real concern. I’ve been seeing that AP has been adapted particularly for Mastodon’s needs recently. It works well for a social network.

                                                            But the question would be, how am I going to handle streaming or we can say bi-directional streaming when a user or multiple users forks a repository into their instance and again getting them to make a pull request to the forked/original repository on another instance. The use-case here is that what if all this happens simultaneously from many users. There are many bottlenecks here and I need a framework in order to handle this.

                                                            So, I recently came across gRPC and it looks promising for what I wanted to do. Gotta give it a try.

                                                        2. 2

                                                          This is interesting nonetheless, if I gather correctly, it’s supposed to be a self-hosted Git daemon of sorts with an emphasis on federation between installations so you can discover more software?

                                                          1. 3

                                                            That’s what I’ve thought at first. I need to discover more softwares through Sorcia if people started using it. So, I’d have to go this way - the federation features are not much different from GitHub or any sorts of similar centralized social git hosting service if you ask me now.

                                                            But I gotta be careful here, I don’t want to introduce too many social aspects into Sorcia. And that is the main reason I’ve started this project. So, it’s a challenge and an interesting one to explore and solve..

                                                            The federations features would apply for:

                                                            • Discover new users and their work
                                                            • A user from an instance can make a pull request onto another instance.
                                                            • A user from an instance can be added as a member to a repository which is hosted on another instance. Or maybe have access to act as a member to a repository hosted on another instance.

                                                            These are the main features of federation in Sorcia.

                                                            1. 3

                                                              That’s a pretty cool idea, I’m happy to see you exploring it! Good luck!

                                                        1. 10

                                                          This post links to a project called “bitpost” which the author is involved with. I didn’t think it was worth submitting a separate article just to comment on that, but I wanted to share something I noticed.

                                                          “Bitpost uses a proprietary encryption system.”. As of right now, that page describes a crypto system that has approximately 8-bit security if I understand it right. I think there might be a bug in the python-looking code, so it’s hard to be sure whether the code is representative of the system. In any case I don’t see any way you’d want to rely on this for private stuff without replacing that design with something else.

                                                          Sorry if my comment is off-topic.

                                                          Edit: I just saw that @freddyym is said author. Hi Freddy. Tl;dr: I think for the crypto algorithms you are better off taking something off the shelf. Such as nacl/libsodium. That doesn’t guarantee safety, but it certainly improves the chances (at least for myself, being a non-expert).

                                                          1. 4

                                                            Thanks for checking it out. I’m not developing the actual crypto, although I’ve expressed similar concerns. I’ll pass it on to the actual developer.

                                                            1. 9

                                                              This might be helpful in pointing out the concern: Assuming the “alpha list” is not considered to be secret, here’s a Mathematica demo that breaks this sytem (successfully decrypts the “test” message on that page):

                                                              In[36]:= ReleaseHold[
                                                                Hold@Map[(#/(GCD @@ xs)) &, xs] /. 
                                                                 xs -> {812099919484224000000, 389131211419524000000, 
                                                                   845937416129400000000, 812099919484224000000}] // 
                                                               Map[StringTake[
                                                                  "\"qP)\[Not]wkIv;M[nfNiE5Y/A`eQg0macX.uO,2}Dz \
                                                              6LyVZRBptHs@'|lKU?^%£!h<jT#bS]&WFCx*8{93$:Go~d4rJ7(>1\\", {#}] &]
                                                              
                                                              Out[36]= {"t", "e", "s", "t"}
                                                              

                                                              Notably, it does rely on the alpha list, which you can see in the application of StringTake. It does not rely on the password at all, and does not do any sort of brute forcing - just first semester university maths (or late high school). But anyway, all of this shouldn’t matter. Pre-packaged stuff is definitely the way to go. :)

                                                              Now if only I knew why that Hold is required…

                                                              1. 3

                                                                I also stumbled across this today. I’d recommend using something like cryptography.

                                                                In any case, seeing a home-brewed toy implementation like this one doesn’t instil confidence.

                                                            1. 2

                                                              What I like most with Keybase is the encrypted git repos. Easy to setup and easy to start working with your team. If something like this exists that doesn’t require too much server administration, maybe I would switch.

                                                              1. 1

                                                                Others have expressed similar concern, though I’m not sure that a solution exists.

                                                              1. 1

                                                                Invalid TLS cert, according to Chrome.

                                                                Edit working now, some CDN shenanigans no doubt.

                                                                1. 1

                                                                  It’s valid for me…

                                                                1. 2

                                                                  On the orange site someone posted a link to the sample page https://metacode.biz/openpgp/key#0x6A957C9A9A9429F7 as well as the source: https://github.com/wiktor-k/openpgp-proofs#openpgp-proofs

                                                                  Edit: reading through the docs it seems to add Lobste.rs as an identity provider the user JSON link should also return Access-Control-Allow-Origin: * HTTP header so that the JSON is readable from the web UI. Would that be something lobste.rs devs are willing to add?

                                                                  1. 1

                                                                    Funnily enough, I know the person in the example; they showed it to me!

                                                                  1. 4

                                                                    I’m still a big XMPP+OMEMO fan but I feel like the writing’s on the wall for it sadly.

                                                                    1. 1

                                                                      XMPP + OMEMO is great, but the problem is that many of the XMPP clients are not stable enough and do not support E2EE on by default for private conversations. XMPP clients do not use E2EE for VOIP related features either.

                                                                      1. 3

                                                                        Yeah you are right.

                                                                        The problem with Riot/Matrix for me is that the mobile app absolutely kills battery life, whereas Conversations is great on that front. Again, that will likely be solved, striking another blow to XMPP.

                                                                        1. 1

                                                                          Conversations is the exception, however when it’s solved there will be little purpose for XMPP.

                                                                    1. 1

                                                                      Reminds me of good ‘ol Dino’s Tomato Pie: https://www.dinostomatopie.com/

                                                                      1. 2