HNHacker News
TopNewBestAskShowJobs

garrinm

284 karma · joined September 4, 2019

submissionscomments
garrinm··on Show HN: A decentralized semantic web built atop Activity Pub
Good 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.

garrinm··on Show HN: A decentralized semantic web built atop Activity Pub
It 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/) and Activity Pub (https://www.w3.org/TR/activitypub/) implementation into an opinionated library which is ready to deploy on existing web tech.

garrinm··on Show HN: A decentralized semantic web built atop Activity Pub
Thanks 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) 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/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.

garrinm··on Show HN: A decentralized semantic web built atop Activity Pub
Agree! 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.

garrinm··on Show HN: A decentralized semantic web built atop Activity Pub
You 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.

garrinm··on Show HN: A decentralized semantic web built atop Activity Pub
Pretty 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.
garrinm··on Show HN: A decentralized semantic web built atop Activity Pub
Chatter 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.

garrinm··on Show HN: A decentralized semantic web built atop Activity Pub
There 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!

garrinm··on Show HN: A decentralized semantic web built atop Activity Pub
Hi, 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.

garrinm··on Show HN: A decentralized semantic web built atop Activity Pub
Hi 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.
garrinm··on Open Source Is Throwing AI Policymakers for a Loop
In fact I see the opposite situation: a closed source algorithm will be protected as a trade secret. So identifying a bias might be harder. And correcting it anyway will still require them to ship a new version.

Meanwhile in open source there could be many users raising issues if a bias is suspected. Many people working to fix it regardless of other priorities. And then an update will be pushed.

garrinm··on Linux Rust Support
It'd be very hard to make a statement like "Rust can do X that C can't" without there being a statement "You can do Y, then Z in C and that is like X" because clearly they are both Turing complete languages at the end of the day.

So I'll instead just give reasons why people might prefer to program in Rust:

- Memory management / safety (no GC, variable lifetimes are tracked by the compiler, no dangling, no null pointer ...)

- Ergonomics (built-in unit tests, feature-full std lib, unicode strings, modern dependency manager, more formalized macros ...)

- Functional-lite (you must explicitly discard unused enum variants, the "null" value is an enum variant ...)

Long story short: Rust makes it really easy to write sound software. I think you see that on crates.io where Rust packages are hosted. Lots of packages quickly reach maintenance mode and receive very few updates, but remain extremely useful. Once you've written (compiled) something in Rust, you feel much more confident that is is free of latent runtime bugs.

Without commenting on whether or not this is necessary or good for the Linux kernel, I'll say that there are probably many devs out there that feel like working other non GC languages feels like pulling teeth after having worked with Rust. And that might be part of the pressure.

← PreviousPage 2 of 2