8 ms·
Show HN: A decentralized semantic web built atop Activity Pub
Chatter Net is a modern decentralized semantic web built atop self-sovereign identity.
This is a very early prototype. Help, comments, criticisms are all needed to help the project move forward.
- agentultra 4y agoI don’t think it’s a good idea to build any kind of social networking application without moderation and filtering tools. Both for server admins and users.
- toofy 4y agoyeah, no moderation is just spam bots talking to other spam bots. edit: the author specified below that moderation is on the to-do list, they’re hoping someone with moderation ideas will help with implementation later—it just hasn’t been added yet.
- garrinm 4y agoAgree! Chatter Net is built to be self-moderating. The currently implementation (conversely.social) isn't fully using this yet. From the user point of view, the idea is simple: you receive messages only from people you follow. As people in your network emit "view" messages (about other posts), those posts will make it to your inbox. It's a sort gossip mechanism. There's another side to this coin: as a server administrator you might not want to host arbitrary content. So a server is free to filter content using any rules. The simplest of which would be to allow content only from trusted accounts. A user is free to connect to any server, and if that server accepts their content, this is how they can send messages. A server is free to server only the information it wants to share. A user should be connected to multiple servers, and these can change session-to-session. This is meant to be transparent to the user, you just go any site that delivers the front-end which can run a Chatter Net node, and that node will listen to what servers others are connecting to, and connect to those servers. The hope is that communities will form around certain servers / moderation styles. But ultimately, the user chooses what they consume.
- qualudeheart 4y agoIs an api with c++ bindings available?
- garrinm 4y agoUnfortunately not at this time, this is very early days for the project.
- Yan-solucracy 4y ago
- acjohnson55 4y agoHow does this compare with Bluesky, which I understand also uses DIDs? https://blueskyweb.org/ https://blueskyweb.org/
- erlend_sh 4y ago..which builds on https://ucan.xyz/ https://ucan.xyz/ for auth. I’m also curious to learn what Chatter Net does differently, and whether that’s necessary.
- garrinm 4y agoFor authenticating messages, Chatter Net uses Linked Data Proofs (https://www.w3.org/TR/vc-data-integrity/#proofs https://www.w3.org/TR/vc-data-integrity/#proofs). The JS client uses this implementation: https://github.com/digitalbazaar/crypto-ld https://github.com/digitalbazaar/crypto-ld. And the Rust server uses this one: https://github.com/spruceid/ssi https://github.com/spruceid/ssi. I hadn't seen ucan yet, I think the space of JWT adjacent protocols is growing, and I'll be interested to see where it all goes!
- garrinm 4y agoThere are lots of similarities indeed. No idea exists on its own, and it is not surprising that there are many others trying to solve the same problems and arriving to similar conclusions. I would consider Chatter Net to be a parallel experiment exploring similar ideas. I think I can also address the elephant in the room: Bluesky is built by a team of (very likely talented) individuals. Chatter Net is, well, Chatter Net xD. The atproto project is very interesting to me, and part of the reason for pushing Chatter Net so early was to make sure its have a chance to be heard before the space becomes too crowded. At a high level I can spot a few differences in the approaches: - Chatter Net is smaller project focused much more on the data model, whereas atproto is more of a holistic solution specifying not just the data model but also how it should be shared and stored to some extent. - Chatter Net builds on the Activity Pub (and JSON-LD) standard whereas atproto introduces a new data format. The core ideas atproto are very similar to the ideas in Chatter Net. Those ideas are extended to touch on some complicated topic that Chatter Net is just starting to address (their big world vs. small world discussion). However, I'm not entirely sure yet how decentralized Bluesky (atproto) will be. In security the system is only as strong as its weakest link, and I think ultimately whether Bluesky is decentralized, federated, or run by a consortium will depend on: - how personal data servers are created / managed - how easy it is in practice for a user move between apps, servers etc. The signing key is not controlled by the user, but they do control a recovery key. If a platform changes direction or becomes otherwise incompatible with a user, I can imagine this system working out quite well, or it becoming akin to asking for your post history from one platform, and then manually uploading it to another and having to rebuild your network etc.
- s3000 4y agoGood idea. If your selling proposition against other protocols like farcaster.xyz is that the protocol is compatible to ActivityPub, could you explain where it is not fully compliant, please? >It closely follows (but is not fully compliant with) the Activity Pub protocol Can you imagine to run a bridge server to the Fediverse? This should require a white-list to gain the trust of the peering nodes, though.
- s3000 4y agoWhich api does the client [1] use to communicate with the server [2]? Is it possible to use existing mastodon web clients like [3,4]? [1] https://github.com/chatternet/chatternet-client-http https://github.com/chatternet/chatternet-client-http [2] https://github.com/chatternet/chatternet-server-http https://github.com/chatternet/chatternet-server-http [3] https://pinafore.social/ https://pinafore.social/ [4] https://www.cuckoo.social/ https://www.cuckoo.social/
- garrinm 4y agoGood question! Right now the client and server talk over HTTP using routes that conform with the Activity Pub spec (everything resource under `/ap` on the server should be a valid Activity Stream document conforming to Activity Pub spec). However: 1) this isn't tested with any other Activity Pub client, so there are probably some implementation differences (errors) to iron out. 2) Currently the server doesn't implement the full Activity Pub protocol, so an existing client will probably make calls that will 404. 3) The server doesn't use any kind of authentication becasue Chatter Net doesn't rely on any server authentication. Clients authenticate messages based on signatures, so it doesn't really matter where the messages come from. Activity Pub doesn't seem to say anything about how authentication should work, so this should in theory be compatible. But in practice, existing Activity Pub implementations seem to rely on certain authentication patterns. But I would definitely like to get the project to be compatible Fediverse clients. So this is something I want to work towards.
- alx__ 4y agoNaive question, what is this solving?
- garrinm 4y agoIt solves the problem of relying on 3rd party platforms to establish user identity. That is, when Alice wants to hear from Bob, they both have to be authenticated by some 3rd party Acme Corp. Alice can't know that a message is written by Bob unless she gets the message from Acme Corp. In that case she needs to trust that Acme Corp correctly vetted and authenticated the user Bob, and that their database isn't corrupted. This reliance on Acme Corp. is what has lead to walled gardens, de-platforming, bot farms, etc. I will also add that, when done right, 3rd party platforms managing user accounts does come with benefits over Chatter Net's decentralized approach. So I consider Chatter Net an experiment to better understand the alternative. There are some interesting features that come out of Chatter Net's approach, like the self-moderation idea discussed in other comments. I think exploring them could be rewarding. As a final note, Chatter Net is inventing very little here. It's mainly packaging together a DID (https://www.w3.org/TR/did-core/ https://www.w3.org/TR/did-core/) and Activity Pub (https://www.w3.org/TR/activitypub/ https://www.w3.org/TR/activitypub/) implementation into an opinionated library which is ready to deploy on existing web tech.
- kanwisher 4y agoThis description is barely intelligible for programmers. You need to work on making your concept more clear. I'm guessing you are trying to make a decentralized twitter so that no one can gate keep, but its insanely difficult to understand with your description
- Double_a_92 4y agoExactly. I am a software engineer and I have absolutely no idea what it's about by just reading the description of the project! > "Chatter Net is a modern decentralized semantic web built atop self-sovereign identity." That's just a group of random buzzwords to me. They might as well also add "blockchain" and "metaverse" to it...
- PaulHoule 4y agoSemantic as in RDF?
- garrinm 4y agoIt's using Activity Stream (https://www.w3.org/ns/activitystreams/v1 https://www.w3.org/ns/activitystreams/v1) which can be represented in RDF or JSON-LD formats. In this case, JSON-LD is used, but this can be easily converted to RDF.
- mxuribe 4y ago@garrinm This sounds very cool! I will keep watching your project, as i'm very excited for it! Kudos! Also, you might also consider collaborting with the folks at https://spritely.institute https://spritely.institute
- RobotToaster 4y agoIt certainly sounds interesting, especially the lack of server blacklists. >It closely follows (but is not fully compliant with) the Activity Pub protocol. Are you aiming for posts from ChatterNet to be visible to the rest of the fediverse (mastodon et al)? How will that look from the POV of the mastodon server?
- garrinm 4y agoHi, thanks for the question! I realize I pushed this with some important details missing. As a first objective I'd like to get Chatter Net nodes to be able to consume from the Fediverse. The (small) challenge is that posts in the Fediverse are unsigned, whereas what makes Chatter Net tick is really just adding signatures to Activity Stream objects. How this could work then is that a Chatter Net user (or server) could pull posts from the Fediverse. That user (or server) could then emit an "view" message on that post and sign that message. Now that message has an "origin" within Chatter Net allowing others to trust it and share it. Many accounts can share the same post. In fact they just sign the CID of the contents of the post, so the post itself could be retrieved from an external server. The more challenging objective is to get the Fediverse to hear about what's going on in Chatter Net. Chatter Net servers could implement the Activity Pub server-to-server protocol. But other Fediverse servers would need to trust the contents coming from a Chatter Net server, and without moderation this would be complicated. If this project picks up some steam I am hopeful others will have good ideas on how to address these issues.
- aliqot 4y ago> Are you aiming for posts from ChatterNet to be visible to the rest of the fediverse (mastodon et al)? How will that look from the POV of the mastodon server? For that matter, how do other fediverse apps handle this when transferring from concept-to-concept like normal social network to microblog, or chat to microblog? It was my impression that it is like-to-like rather than just general information schema.
- rch 4y agoIs there a license for the server? Sorry if I'm overlooking it.
- garrinm 4y agoHi thanks for the interest! Oversight from my part I was pushing quite a few things tonight. I just added the MIT license to the server.
- deleted 4y ago[deleted]
- rch 4y agoIt's a really interesting project - thank you! I'm looking forward to exploring a few possibilities.
- mgerdts 4y agoMIT https://github.com/chatternet/chatternet-client-http/blob/main/LICENSE https://github.com/chatternet/chatternet-client-http/blob/ma...
- rch 4y agoThat's the client.
- stonogo 4y agoNot implementing server-level blocklists is almost a guaranteed method of getting your instances added to federated blocklists. I see that this is not ActivityPub compliant, so presumably this would only federate with other Chatternet instances? If that's the case, I recommend hurrying to implement a solid product vision, because otherwise "no deplatforming" is your primary sell, and the people who are buying are perceived as folks who have been deplatformed already. It's a hard problem right now to get some people to separate "free speech" and "hate speech" in social media, and until that's got a solution I'm not sure a slightly-different protocol will move the needle.
- garrinm 4y agoYou bring up some good points. Indeed Chatter Net as-is isn't able to fully integrate in the Fediverse. I think it'll be possible to get there, and I'd like to see the project get there, but in the meantime its more of a standalone network. The only real difference between the Fediverse and Chatter Net is that in Chatter Net all messages are signed. To know the origin of a message you simply verify the signature. Whereas in the Fediverse you have to trust that the server authenticated the user and stored the data correctly. The consequence is that in Chatter Net federation happens user-to-server, not server-to-server. That's because a server can trust messages coming from any arbitrary user, so long as it has a valid signature. The server can choose to filter messages from unknown users of course. I think maybe a more important selling point, from that perspective, is that as a user of Chatter Net, you consume messages only from identities you trust (follow). So you can completely filter out unwanted communities. This will take a lot more work to correctly describe in the docs. And the implementation isn't fully sorted out yet either.
- nathias 4y agoA hard problem is selling it short, it is impossible to separate them, because they are one and the same.
- mgerdts 4y agoI’m trying to make sense of what this. It seems the answer may be on the project’s GitHub page reference in the rear, but that just 404’s. https://chatternet.github.io/ https://chatternet.github.io/
- garrinm 4y agoThere used to be a page there, but that's been taken down until more work can be done on it. I pushed this all a bit early, there are a lot of details missing. I'll be spending time documenting things a bit better in the coming days. In the meantime if there's anything I can answer I'll be happy to!
- deleted 4y ago[deleted]
- gpm 4y agoHow would moderation work here? Like, what prevents me from being literally inundated with people trying to sell me scamcoins, or viagra, or nudes, or whatever the latest thing is. You say "Self-moderating: a user has enough control over what they receive to reject spam content", but it's unclear what that means. Are you telling me I'm going to have to keep saying "I don't want to hear from ViagraSupplier1493956" every time ViagraSupplier1493957 makes a new account? Won't they just automate creating new accounts so I continuously have to reject them? Or is this an opt in system? That's not what the word "reject" means to me, but it's the other "simple" alternative that I could imagine this describing. If so, is there literally way for a new user to onboard to this network except to convince people to start "listening" to them via side channels (like asking friends on other social media to follow them)? That's basically how things like substack work... I'm not sure I see it scaling. I think it was one of the reddit founders who recently made the point that content moderation is fundamentally about increasing signal to noise ratio, and frankly I can't think of a harder problem. When you're trying to pitch a decentralized social network to me, it's literally the first question I have. PS. The readme links to "https://chatternet.github.io/ https://chatternet.github.io/", but that doesn't exist.
- garrinm 4y agoThanks for the thoughtful question. Signal to noise, spam, sybil attacks etc. is probably the hardest problem to solve for this project, so I suppose it only makes sense its not really solved. But I hope that Chatter Net offers the tools which can be used to, if not solve, then at least make progress on the issue. The short answer is that Chatter Net routes messages to you only from people you follow. If this was just messages authored by people you follow, it wouldn't be a very interesting platform. But in fact, whenever a message lands on your UI, you emit a View (https://www.w3.org/TR/activitystreams-vocabulary/#dfn-view https://www.w3.org/TR/activitystreams-vocabulary/#dfn-view) event on the message you just viewed. And so people who follow you will see that view, and that's how content makes it way around. The long answer is.. well long. And it's not an answer so much as a conversation. I see this as all relating to trust. And it's not really possible to discuss trust without implicating the debate of anonymity vs. privacy. In real world communities, you trust some people, and so you are wiling to spend time listening to them. These could be family, friends, actors, politicians etc. On the internet, the mechanism for trusting someone is actually a bit odd. You believe that when you connect to a known domain, there is some trustworthy entity behind it serving you content of interest to you. And if that domain hosts a social media platform, and that platform trusts a user by allowing the user to create an account, then you sort of extend the trust you have in the platform to that user. But this is all very anonymous and leads to all sorts of issues such as bot farms and domain parking. When things are framed that way, it almost seems the current efforts around moderation are really trying to treat the symptom, not the cause. Does it make sense to trust an anonymous user on some platform? The place this seems to work best is Wikipedia. But even there the implicit trust in user accounts is sometimes abused (https://www.theatlantic.com/business/archive/2015/08/wikipedia-editors-for-pay/393926/ https://www.theatlantic.com/business/archive/2015/08/wikiped...). I think somewhere along the line the concepts of anonymity and privacy got confused. In the real world, if you walk around hiding your face and otherwise concealing your identity, people don't trust you. The things you want to keep private, you discuss in a private setting (e.g. in the comfort of your home). But when you are in a public forum, your identity is what you use to get others to listen to you and interact with you. In this sense, Chatter Net is a public forum, while something like Signal or Matrix Chat would be a private forum.
- esjeon 4y agoSo, is this kind of decentralized wiki based on DID?
- garrinm 4y agoPretty much, good observation. The main idea really is just to push identity to the client. Activity Stream is a convenient way to package information, especially if you want to self-sign it and have it be self-descriptive. And Activity Pub is a sensible way to share that information.
- mark_l_watson 4y agoThere are problems tuning out unwanted traffic, but cool idea. Apparently RDF, etc. are not used?
- garrinm 4y agoChatter Net doesn't offer a solution to spam / unwanted traffic, but maybe it can give tools for people to create their own solutions. The idea is to have a network of servers, and each can enforce their own rules (the simplest of which would be to only accept messages from known users). To the user, the servers are rather transparent. You can connect to multiple servers at once, and you can connect to different servers on different sessions. So somehow you can act as the bridge between various communities allowing information to spread. But each community can still enforce its own rules around what information it stores. The main difference to the current Fediverse is that federtation happens user-to-server, not server-to-server. Ultimately, each server has full control over what it stores and shares. Ana each user has full control over what server they want to listen to.