Social Media Architecture with IPFS

That sounds cool. I’m going to look into everything you mentioned. I haven’t fully investigated PublicKey-based identities (i.e. best in class solutions), and the biggest challenge we know of and want to overcome is the spam problem. We were thinking of one option being to require a crypto account to at least exist with money in it, as an “optional” way people can choose to attempt to filter out spammers, but that was just a brainstorming idea.

The best thing about IPNS is that it can use PubSub so you get Anchoring AND live update.

Super exciting! We separately converged to the same solution, which is a good sign.

@wclayf sir you need to catch up, my defluencer protocol already works like you described, else I will be the one to put Big Tech out of business! :stuck_out_tongue:

@reload Cool Stuff! Is it on Galacteek only for now? How can each node track all chains?

@SionoiS Hello!

Currently pronto is tied to galacteek but it wouldn’t be too much work to make it into a separate, standalone service (in python or other languages). The thing is, the whole linked-data machinery is a bit complex and i’d like to test it on a larger scale first.

Each node exposes their RDF graphs via an IPFS P2P SparQL service (P2P stream). Periodic pubsub messages trigger the sync process: new ontolochains are retrieved via SparQL, and then each chain is synced (pull new records, and for each record do the expansion and graph it).

Because of the combination of pubsub + P2P SparQL, each node knows everything at the same time (Hashgraph has similar properties).

Where can I find a link to the defluencer spec so I can start PubSubbing to it? The spec I wrote was just a mere suggestion:

All it really does is suggest we can just publish PublicKeys/CID pairs. My idea was to listen to all pubsub events on a channel and discard ones not sent by PKs I “follow” (or like). I considered one requirement to be ‘zero barrier to entry’ meaning that anyone can get started writing a client for in a couple of hours, just basically building on nothing more than one of the IPFS PubSub examples.

So yeah if there’s already a working spec for how to do Social Media-like messaging over IPFS PubSub I’m onboard. Unless it’s ugly or complex, I’ll join you, and add your protocol to Quanta in a heartbeat.

Ah I misunderstood what you said @wclayf !
My protocol does not have ONE pubsub topic but many per person and you sub to the person you want.

Could one topic scale to planet size? IDK! Seams like a lot of filtering to do the more popular it gets.

Let me explain how my stuff work, you might like it. (or not…) :man_shrugging:

A beacon object has all the data to sub and access a person content, pubsub topics, IPNS links, etc… This beacon doesn’t change and it’s CID can be used as a social media ID.

Then, you just have to resolve IPNS links and/or sub to those topics to get; Content Feed, Comments, Friends List, Moderation, etc…

The magic happen when the app load your content, your friend’s content and maybe your friend’s friend content. It create a web of people.

Interesting. Do you know if anyone has tried getting Linked Data Fragments (LDF) working over IPFS? Seems like it should be fairly easy to do.

I’ve also been thinking that IPNS urls are a much better publishing mechanism for RDF than http. It solves the stupid http-range-14 issue because the dereference is built in to the protocol and you don’t have to depend on controlling a domain name which was a bad decision to rely on everyone having access to a domain name. Purls where a bandaid. I would trust the persistence of a private cryptographic key way more than the ownership over a domain name.

I know a bit about LDF, i don’t know if someone does this on IPFS. LDFlex and comunica are really cool, Solid uses that.

Yes, a top priority was to control the schemas via IPNS, as i don’t trust DNS (who should …). The schemas live on your node, are easy to upgrade and manage …

So this guy (project link below) implemented what I was calling IPSM…over the weekend!!! Two days! He’s some kind of super genius and I’m not even kidding.

You guys should check that project out. I spent all day looking it over, studying it, running it, and it works!! It’s a Social Media network in pure IPFS and is as simple as the IPSM proposal/blog I wrote. And it “just works ™”

@SionoiS I’ll look over ‘beacon’ also, because that sounds pretty advanced/complex, but I’m glad @undyingwraith showed that it’s possible to have a sort of “Level 1 Compliance” of IPSM (meaning purely simple IPFS PubSub-based messaging), using PublicKey only as identity…

…and he just so happened to do this with my favorite tech stack: TypeScript+React. He nailed it.

1 Like

Hey guys!

I updated my website.

I has a little explore button that links to your local IPFS explorer so that you can look at the IPLD schemas.

Otherwise it’s a pretty basic social media website.

Let me know what you think!

1 Like

The Berty Project has some similar goals and is using IPFS too:

1 Like

Berty is awesome!

Private messaging that also works offline over Bluetooth is next-gen tech.

1 Like

Latest galacteek snapshots.

The dvoz dapp is now a bit faster when it comes to making SparQL queries on the pronto RDF graphs, syncing between nodes should be less cpu-intensive now.

1 Like

Thanks for this great work, @SionoiS !

Some people might try to visit IPSM using the ipfs facility integrated into Brave Browser. Could you please include instructions for how to adjust the necessary settings in Brave’s ipfs or ipfs-companion? (If you could add some screenshots or even create a video gif, maybe using sharex or something similar, that would be great!)

1 Like

It was on purpose!

Brave having IPFS integrated is awesome BUT it’s very hard to configure it without fucking up (and if you do, IPFS in brave will no longer work at all yikes!).

It’s sad but until they fix it somehow I’m not going that route.

1 Like

@SionoiS - What about people who have only installed ipfs-desktop? How might they try?


See here

Use at your own risk it’s not really tested much.

1 Like

Thanks, I had a quick try testing it and couldn’t get it to install. Might this be packaged as an AppImage or .deb?

IDK maybe but your still asking a user to install IPFS.

The best would be browser integrated IPFS with a nice API. I’m sure one day…

1 Like

Consider that many of the most popular Social Media platforms are mobile-first.

Nearly all of them are entirely catered to the phone app, while apps like Tiktok only really have a website for viewing, whereas Snapchat doesn’t allow you to access the platform AT ALL without the mobile app.

So I think having the user install IPFS is a non-issue—just bundle a node with your application, optimize it for mobile, and have a web2.0 website meant purely for non-users to discover the app or read public-facing content.

Linking this other post I just created: