219 pointsby davidcollantes6 hours ago27 comments
  • Conlectus4 hours ago
    There’s a specific downside to LLM-based development that people can get neck deep in a new project without interfacing with the existing work in the field.

    In this case, this is basically a poorly specified implementation of half of XMPP. Of course, I half expect the LLM would have mentioned that at some point, but the repository does not.

    • dale_glass3 hours ago
      Unfortunately XMPP is an absolutely terrible protocol. IRC's not much good either, but at least it has the excuse of being ancient and limited in what it wanted to achieve.

      I don't know how it just happens that sending text messages to people can manage to result in specs that are painful to implement.

      • oooyay39 minutes ago
        IRC is good in that it is open, durable, and slow moving. All of those points are intentional features that make it a stable cockroach in a nuclear world.

        I briefly entertained building a modern chat experience on top of IRC when I came to this realization.

      • monkeywork2 hours ago
        >Unfortunately XMPP is an absolutely terrible protocol

        Can you provide more details here? I've never seen an issue with the protocol at all, more issues with feature difference between servers depending on what they have decided to implement or not.

        • nunobritoan hour ago
          Identities. Creating an identity in XMPP is an absolute mess and requires domains along with approvals. At least in IRC this isn't complicated.

          My own preference goes to NOSTR, just a set of public/private keys as identity and nothing else needed.

        • throwawayffffas10 minutes ago
          That there are issues with feature differences is a problem with the protocol.

          Good protocols are opinionated and make concrete choices.

          Extensibility typically leads to compatibility issues like the ones you are describing.

        • packetlost2 hours ago
          Most times I've seen complaints about it, it boils down to "XML being yucky" and the extension component model being difficult to write clients for, which is true but not really a fault of the protocol, it's more of an inherent tradeoff of supporting opt-in extensions at all
          • dale_glass2 hours ago
            I don't have that many problems with XML myself, but XMPP is weird even in XML land, because it tries to do XML all the way.

            For instance, it works as a constant, uninterrupted stream. You never close the document until the disconnection. Which means you absolutely have to parse it with a stream parser.

            It could have been something sensible, like a document per message: "Here's 300 characters of XML document: <xml>....". But nope.

            And what's up with this? https://xmpp.org/extensions/xep-0394.html

            • kees9921 minutes ago
              XMPP's flavour of XML also has an "interesting" choice of whole stream being a single document. Meaning in-progress XMPP connection is an incomplete/invalid XML. So, you have to have a customized parser that handles that.
            • tecleandoran hour ago
              OMG, that XEP is extremely and unnecessarily complex. Just do, I don't know, markdown.

              That made me remember IBM JSONx... https://www.ibm.com/docs/en/datapower-gateway/10.6.x?topic=2...

              • F3nd0an hour ago
                What’s so complex about it? From what I gather (after skimming the document just now), you attach an extra element to a message which says how to style which parts of the message, from codepoint n to codepoint m, essentially. At least conceptually, that seems really simple and straightforward.

                Are there more elegant or natural ways to do it? Probably. But when you say ‘extremely complex’, saying ‘codepoints 7 to 15 should be bold’ is not what comes to my mind.

                • amenghra20 minutes ago
                  The following example (from the spec) seems quite fragile:

                      <message>
                        <body>This XEP supports many things:
                      * inline markup
                      * code blocks
                      * lists
                      * and possibly more!</body>
                        <markup xmlns="urn:xmpp:markup:0">
                            <list start="31" end="89" ordered="false">
                            <li start="31"/>
                            <li start="47"/>
                            <li start="61"/>
                            <li start="69"/>
                          </list>
                        </markup>
                      </message>
        • dale_glass2 hours ago
          Other people provided some info:

          https://news.ycombinator.com/item?id=9772968

          https://news.ycombinator.com/item?id=31133082 (article and discussion)

          But TL;DR:

          * It's hard to even parse, XMPP uses an uninterrupted XML stream. * The contents are often baroque and complex * Standards are a mess, and stuff that should be in core isn't * Data loss is possible * Protocol wasn't made for mobile devices * Multiple devices are terribly supported * Data loss is possible

          From my attempts long ago, and other testimonials, writing an XMPP client is a full time job of solving weird problems that shouldn't exist in something better designed.

          • fishgoesblub2 hours ago
            • p2detar2 hours ago
              > We hear this too often: “XMPP uses XML. It should use JSON—it’s more modern.”

              I can't take this write-up seriously if it starts like that. I still read the whole thing though and I couldn't find any solid argument as to why someone would prefer XML to JSON for XMPP.

              > This is especially true in browser environments, where XMPP streams run over WebSockets, which naturally frames the XMPP protocol. That’s why you are never actually working with XML trees consuming large chunks of memory. Modern implementations like XMPP.js go further and use LTX—a lightweight parser built specifically for XMPP’s streaming model—rather than the browser’s DOM parser. The result: developers work with JSON-like objects anyway. The wire format becomes invisible to your application code.

              That to me, is an argument for using JSON, not XML. XML is strong when you have elements referencing other elements in your document structure or DOCTYPE for grammar defs. I might be missing something but I don't get how streaming XML is to be preferred over JSON for XMPP.

            • 2 hours ago
              undefined
            • dale_glass2 hours ago
              What part part, sorry?
      • alwaysthiserror2 hours ago
        I once implemented the presence and basic messaging functionality of XMPP for a web site, using a braindead bridge (that I also wrote; so, the meaningful logic lived in the browser).

        Considering I'd never hosted an XMPP daemon and didn't know anything about the protocol (I'd used XMPP clients a little bit, but had never looked at the protocol) and got a server (that part, I didn't write), an auth connector for our website's authentication system (so the daemon would authenticate against that instead), prod-ready and the features I wanted all working smoothly and reliably in maybe three weeks of very part-time work (this'd be, like, 3-4 part-time days with LLMs now, tops, from the same starting point)... seems decent to me? I mean I did direct work with the protocol, didn't just glue together libraries, and it was pretty damn good. Also (and I know browsers seem to be retreating on this front, which sucks) being XML made it very nice to work with in a Web context, since you can just ask the browser to turn ~any XML into a DOM for you, and get a bunch of functionality for free.

        What's wrong with it?

        • pmlnr34 minutes ago
          These days complicated and/or complex == hard == bad.
          • hnlmorg12 minutes ago
            Which is understandable when messaging shouldn’t be a hard problem to solve.
      • ryandrake2 hours ago
        > I don't know how it just happens that sending text messages to people can manage to result in specs that are painful to implement.

        This is what boggles my mind. We're talking: Text. Over the Internet. It should not be a complex, difficult problem! We've been sending text over the Internet from the moment the Internet went online. So how is it that 10 companies have managed to find 30 different ways to do it, which are all incompatible with each other? You have to TRY to fail this badly.

        • bityard27 minutes ago
          I have half-wondered many times whether it would be possible/practical to build a chat system on top of MQTT or similar. Chat seems like mostly a pub/sub problem from where I sit.
        • jodrellblankan hour ago
          This is what boggles my mind. We're talking decades of arguments and discussions, dozens of different ways to do it, with dozens of tradeoffs that you could start listing with 20 seconds of thought, and still people just pop in like "why isn't it simple??" as if that's some award winning insight.

          Come on, try! Start listing some of the core features of the different protocols/clients and answer your own question as to why it isn't simple! Presence. Chat history while offline. Threading. Mobile devices. Intermittent/mobile/cellular/wifi/CGNAT connectivity. Multiple clients on the same identity and presence. Identity establishing and confirming. Encryption. End-to-end encryption. Backing up and restoring chats, encrypted chats, group chats. Federation. Friends/groups/permissions/trust boundaries. Markup, markdown, formatting, images, emoji, unicode, code blocks. Audio, video, broadcast, multicast. Discovery. Extensibility. Federation. Store-and-forward.

          > "We've been sending text over the Internet from the moment the Internet went online"

          And IRC has RFC 1459, RFC 2810, RFC 2811, RFC 2812, RFC 2813, RFC 7194 and it does almost none of those things.

          And you can still use IRC. But IRC is not good. At this point it's either wilfull ignorance of what people use computers for, or it's indistinguishable from deliberate trolling.

          • NoMoreNicksLeftan hour ago
            Threading? God, I hate threads in a live chat. Is it never not awkward to use? Slack is the example I'm thinking of, though I'm sure it's shit everywhere else too. In Slack, rather than display the one threaded reply just below (maybe indented), it makes me go to another window, but then someone else is replying non-threaded, so I have to bounce back and forth for the next 10 minutes.
      • edhelas2 hours ago
        Why is it terrible?
    • dewey4 hours ago
      That is currently still the differentiator between people producing code and shipping something and people who care and actually have years of experience shipping. At the current state how well you steer the LLM and which questions you ask still matters, maybe in the future "build me an app" will give amazing results, but right now you still need to know what you are doing.

      In this case, it's just a waste of tokens as something not very unique was generated that doesn't have a real use case, or solves anyone's problem. As with many AI generated projects, I'm willing to bet that OP themselves will not using it any more in a month.

      • orangedog3 hours ago
        You guys are way too critical and about the wrong things. "Waste of tokens"? Perhaps the author know of the tradeoffs and just wanted to build something.

        How you went from seeing somebody's post to deciding they don't care is a pretty big jump, one that isn't warranted. This kind of post seems like the old but now more elaborated form of hating on something that you don't even know what it is.

        It just isn't fair to the work that has been put in.

        • dlkasajiewo2 hours ago
          I agree. This is one thing that's gotten me about the new wave of poo-pooing projects made since coding agents have gotten big. Five years ago it was 'just build something!'. I understand the market is more saturated now so building something isn't as valuable as it used to be, but it still shouldn't be treated as a negative. I don't know anything about the creator's background, but even if this project is ultimately redundant and unnecessary, it's still pretty cool that they built something.
          • Brian_K_Whitean hour ago
            Because this isn't an example of "just build something" it's an example of "just order something from grubhub"
      • MisterMunchkin3 hours ago
        If telling people “build me an app” with no knowledge of technology worked, project managers would be good at their jobs already
    • segmondy3 hours ago
      or maybe they know about XMPP and prefer IRC. I have always wanted to build one of these on top of IRC. I grew up on IRC and sometimes just the nostalgia of familiar tech is what drives us to build towards it not how good it is.
    • RGS18114 hours ago
      I've done this a few times. If I had to gesture at the root cause I'd say: LLMs lack curiosity and are trained to complete assignments, not to question their validity, so both the research phase and the questioning of intent tend to get short shrift prior to building anything.
      • sugarkjube3 hours ago
        I'm not sure I agree. Seems to me to depend a lot on how one interacts with an LLM.

        If you tell it to "build me an application X to do Y using programming language Z", it will comply.

        If you interactively ask "I need X, can you suggest some options? use an existing product ? or build something using a library ? or build entirely myself ? can you suggest alternatives with pro's and con's ? Anything I should think of before deciding ?" then you will get an entirely different answer.

        Maybe we need additional modes, aside from thinking mode, agentic mode etc. we need e.g. "sparring mode" ? or does such a thing already exist ?

        • chrisweekly2 hours ago
          Matt Pocock's skills library includes "grill-me" which is precisely this. It's excellent.
      • 3 hours ago
        undefined
      • jeremyjh3 hours ago
        Agreed, you have to ask them to look for prior work. But then they will do a good job finding it in most cases. I think it’s partly their universal tunnel vision and partly sycophancy.
        • j452 hours ago
          Specifically it's important to ask for more than a few examples.
    • RunSetan hour ago
      > I half expect the LLM would have mentioned that at some point, but the repository does not.

      The repository does not even mention this software is LLM-generated.

      I wonder when/if the collective realization will land that LLM's failure to retain provenance during training means the code it generates exists in an indeterminate state of public domain / IP trap.

    • general_revealan hour ago
      ”There’s a specific downside to LLM-based development that people can get neck deep in a new project without interfacing with the existing work in the field.”

      That’s because it’s a paradigm shift, not meant to be planned or organized by humans. The prior paradigm was that there were subject-matter experts who were human. The new paradigm is that the only author of all code is to be a machine. This new paradigm requires removing all prior authors (who happen to be human), and removing them simply requires overcrowding their output such that it’s not locatable or trustworthy.

      Sit back, grab some popcorn.

    • j452 hours ago
      LLMs could be asked to research extra projects.

      It's valid that someone just wanted to build something like this for their own purposes.

      • Forgeties792 hours ago
        But it's not just for their own purposes. They shared it with the public which means they will get feedback, good and bad. No one forced them to post to HN.
        • j452 hours ago
          Agreed, and the vast majority of personal projects that are released as open source don't get attention, traction, or contributions.

          In this case, someone shipped something that works for their use case, which is a great deal more than talking.

          • Forgeties792 hours ago
            Sure but it will still be scrutinized and compared. I don't see the issue.
            • j45an hour ago
              Maybe some people just ship and post and don't look back in terms of scrutiny / comparing.

              There's lots of approaches out there that say if you don't ship something embarrassing, it's too late.

              I think this is the main point I was trying to make and our exchange helped me bring it forward, thanks.

    • PunchyHamster3 hours ago
      XMPP is massively bloated protocol that is badly managed for last 2 decades
      • edhelas2 hours ago
        And what are you suggesting as a non-bloated and better managed alternative? :)
        • nextaccountic2 hours ago
          Maybe Matrix?
          • F3nd0an hour ago
            Is Matrix really non-bloated? My impression has been that it works more reliably, but isn’t considered lean at all.
            • TJSomething36 minutes ago
              I've heard that it's fairly unreliable and tends to have netsplits and desyncs pretty regularly, unlike XMPP.
    • acedTrexan hour ago
      Ya, ive stopped interacting with all new projects, the amount of slop written by people who have no business remotely putting something out there for others to use is untenable.

      The system has broken under the noise.

  • xena3 hours ago
    How do you plan to handle bad actors creating biblical amounts of servers dynamically and then spamming at line rate from all of those servers?
    • malcolmxxxan hour ago
      And then, all galaxies move away from us.
    • arm32an hour ago
      That sounds pretty load-bearing.
      • y-curious28 minutes ago
        Actually it’s a footgun gate
    • cromka3 hours ago
      This is why we can no longer have nice things...
  • singpolyma34 hours ago
    So rooms are "global" between whatever hosts your host happens to know about? So it's one giant netsplit party forever and only your server admin can ban someone?
    • davidcollantes4 hours ago
      Bans are per server (for what I have seeing). Federated rooms continue to exist if a server drops off, as no server "owns" them.
      • esseph4 hours ago
        > Federated rooms continue to exist if a server drops off

        That doesn't answer the question.

        How are you resolving things like... user name collisions when the servers reconnect?

        • pferde3 hours ago
          This has been an issue for as long as IRC itself has existed. There are solutions to resolve such "netsplits" and "netjoins", but they all rely on the servers in the network being trusted and not malicious.

          With Parley, where anyone can bring their own instance, and they are not guaranteed to not to be malicious, that could be an interesting issue to solve.

          • wang_lian hour ago
            CAP theorem suggests it is not solvable.
        • davidcollantes3 hours ago
          I am not the owner of the project, I just use it. Federated rooms have no owners, there will be no collisions (they would simply merge). Nicks are tied to their own servers, and hence unique and will not collide.
  • rixed4 hours ago
    Instead of a separate federated network for a single app, why not implement the app on top of a pre-existing federated network, so that nobody has to create yet another account? Like, on top of atproto or activitypods or...?
    • WorldMaker32 minutes ago
      A lot of the design reads like almost but not quite ActivityPub.
    • RobotToaster4 hours ago
      Or matrix
  • aunderscored5 hours ago
    Interesting. Why not use an open link network? These will result in around the same state. Spam _will_ be an issue here, in general. And with a different backend you're going to struggle to use preexisting tooling to handle it.

    Using & channels is fun, I'd be interested to see how many bots and clients fall over dead when faced with that particular bit of IRC history.

    • someonebaggy4 hours ago
      IRC linking is a mess, in part due to the spanning tree requirement. Also the server to server protocol in the RFC is spoken by zero servers so you have to pick which unofficial protocol you like best. May as well invent your own that actually fits your use case.
      • aunderscored3 hours ago
        Except that now there's yet another standard, which nothing but this thing speaks. TS6 is very well used at the moment as everything in the Charybdis line speaks it, etc.
  • davidcollantes6 hours ago
    Parley is a chat network with no centre.

    Every person (or team) runs a small instance for their own domain. Instances find each other through DNS and well-known identity documents, exchange signed messages over HTTPS, and present the whole federated network to ordinary IRC clients such as Lurker, Mango, mIRC, WeeChat, Textual, etc., without the need of any plugins.

    • someonebaggy4 hours ago
      This is an AI-generated summary of TFA?
      • BonerWiener4 hours ago
        It's a copy paste of the readme intro. Don't know why it's left as a comment here
        • xena3 hours ago
          Hacker News marketing skills tell people to leave a context comment on Hacker News. Don't complain about it too much, that is our way of figuring out who is lazy in an obvious way!
        • theandrewbailey3 hours ago
          When someone makes a submission, the text field becomes a comment when the URL field is not empty. (but sometimes not?) It's a poorly designed form that should be redone.
    • altilunium6 hours ago
      can any layman user simply use it without running their own instance?
      • davidcollantes6 hours ago
        Yes, you will need to know someone running an instance to create an account for you.
        • grim_io6 hours ago
          So... no? :)
          • NoboruWataya5 hours ago
            Presumably if the protocol becomes popular you will have public instances that anyone* can sign up to, the same way other federated services work now.

            (It's approximately as hard for a layman user to sign up to a Mastodon instance as it is to sign up for X. The fact that most layman users don't do that is a separate issue.)

          • jagged-chisel5 hours ago
            Yes, you can try it without running your own instance. You will need to use someone else's instance.
        • davidcollantes6 hours ago
          If you (top and child commentator) want to try without running your own, please send me an email: david dot collantes at gmail dot com.
  • user27224 hours ago
    I had a pseudo-plan for something like this but for reasons related to privacy I had two types of chatrooms:

    * regular chats, existing only on the server, no leaking the chat transcript except via users, but never via server to server.

    * chambers: a global chatroom, located at a server, maybe with a MQTT anyone could subscribe to.

    This never left the early planning stages though, but I thought the segregation between federated chatrooms and regular chatrooms was of interest to keep in sync with IRC open but closed nature of chats.

    • Fastidious4 hours ago
      That seems to be similar on this one. &room is local, while #room is federated.
      • user27223 hours ago
        Did not see that. Thanks for pointing that out! Will re-read the page.
  • myaccountonhn5 hours ago
    I quite like this, but it feels like spam could quickly become a concern.
    • davidcollantes5 hours ago
      That is always a concern, yes. You can block users, and entire instances, that spam.
  • someonebaggy5 hours ago
    Vibecoded?
  • mococa3 hours ago
    Besides not having C runtime linked (which is great for scratch/distroless Docker images) - any other advantage of using a pure Go SQLite instead of the C binding?
  • sailfast31 minutes ago
    Parlay?
  • Marlinski5 hours ago
    Give me a day and I'll implement it in my agent-oriented IRC server https://github.com/marlinski/airc !
    • itomato3 hours ago
      Cool. I did something like that so agents and people could communicate with a Jira instance using Websocket-aware IRC and a browser-based client based on superchat.

      Put the issue context in a #channel and invite external parties/entities, bring the results back to the work.

      I have tested it but the complexity didn't justify the results in my experiment. I couldn't get it accepted into Atlassian Marketplace, either.

  • padolsey5 hours ago
    Both cool and worryingly convenient for the botswarms we've been warned of...
  • 6 hours ago
    undefined
  • shreddit5 hours ago
    This is exactly what i was thinking about for the last few weeks (but am too stupid to implement myself).

    It’s like email just for IM…

    • zaik4 hours ago
      You're in luck: Some people already thought of this, submitted an RFC to the IETF and implemented it. It goes by the name XMPP.
    • yvdriess5 hours ago
      Many earth rotations ago, I was IMing through an mIRC bot because I refused to install MSN. This kind of reminds me of that too.
      • Athas5 hours ago
        I used Bitlbee until not that many earth rotations ago - it's an IRC daemon that provides bridging of various other chat protocols. It worked way better than you would expect, especially back in the day when you could use XMPP to connect to the various proprietary chat services.

        I didn't stop using it until I stopped caring about those chat services.

        • doubled1125 hours ago
          These days I run a Matrix home server with bridges to Slack and WhatsApp so I can use fewer chat clients.

          I do wish the Matrix client situation was less messy.

  • tonymetan hour ago
    IRC is popular because it’s bad. I don’t believe there will ever be a replacement for this reason.
  • jagermo3 hours ago
    is there a list of public instances one could join somewhere? I kind of want to dip into irc again. it was peaceful.
    • davidcollantes3 hours ago
      The idea (what's encouraged) is that's so simple you can run it yourself. If you email me (email on profile), I can create an account for you on mine.
  • 2 hours ago
    undefined
  • lnxg33k12 hours ago
    But isn't IRC already federated?
    • davidcollantes2 hours ago
      You can link servers (Libera, for example, has many), but they are not federated, nor decentralised (services are used for registration, etc.).
    • ptmanan hour ago
      Closed federations. Only trusted servers
  • pixel_popping4 hours ago
    The connection to git.mills.io was interrupted while the page was loading.
  • okwhateverdude5 hours ago
    lol, so XMPP, but instead of XML, it is IRC. Alright, I dig it.
    • singpolyma34 hours ago
      Instead of TCP+XML it's HTTP+JSON

      The IRC is just a front end. Could use any front end

  • calvinmorrison4 hours ago
    I recall this bait and switch. It was called Slack
    • bigfishrunning4 hours ago
      Slack is pretty centralized, and also closed. You can't self-host at all.

      Slack is a *different* bait and switch.

    • 0x1bparty2 hours ago
      Different use case no? I thought slack was enterprise focused from day one.
  • MMTloveran hour ago
    [dead]
  • corbinvachalan hour ago
    [flagged]
  • elkamiliyoussefan hour ago
    [flagged]
  • nahid-fahh5 hours ago
    [dead]
  • thomasreiminger3 hours ago
    [dead]