Solid vs ATProto

Hey! I just recently read This is for Everyone by Tim Berners-Lee. It’s a phenomenal book and history of the web and I highly recommend it!

He spends a good part of the book talking about SOLID: About Solid - Solid Project (not to be confused with the SOLID software design principles :laughing:)

Looking into it it looks like it has super similar principles to ATProto, although it’s designed to be private by default.

I’m still pretty new to ATProto, has there been any discussion on comparing/contrasting these two different protocols? Or possible even merging them somehow if the two communities aligned?

There’s a similar discussion I came across on their forum as well! Comparing Solid to ATProto PDS - Connection to Other Initiatives - Solid Community Forum

5 Likes

I addressed the high-level similarities and common goals of the two protocols here:

@thisismissem.social used to work on Solid and I believe she’s in the process of collecting some longer-form thoughts.

@kjetil.kjernsmo.net co-edited the original Solid spec.

The technologies are too different for that, but imo there’s a very straight forward interop story in the common use of PLC-based web identities with multiple different data storages, i.e. a web ID that uses atproto PDS when I’m using it on an AT platform, and it uses a Solid Pod when I’m using it on a Solid platform.

4 Likes

This is awesome, thank you for sharing both of these! It seems like the goals are somewhat similar but implementation is not.

I can confirm that the DX of ATProto is pretty dang good!

3 Likes

Hi Brittany!

Yeah, I was one of the co-editors of the Solid Protocol, and I have moved on. That is not to say that I didn’t like Solid, I had been involved in a lot of what lead up to Solid, the whole Semantic Web thing was something I was involved in since 1998. To me, Solid was what could finally make Semantic Web useful, and I also viewed it as a last-ditch effort to do so, we had been doing it for 20 years without much coming out if it, and I wasn’t prepared to let it go for much longer.

Solid was to me kind of a “minimal add-on to the Web” to allow for personal control of data, a UNIX for the Web. It had an architecture where you’d use the verbs of HTTP to manipulate the resources and it had private and group data control from the outset.

Unfortunately, it didn’t work out. Some of us who was involved early on have been thinking about writing up a post-mortem, but I’m not sure. Let me just point to two very bad decisions that happened: 1) Deciding not to pursue a community effort to build a new server. We had quite a lot of people wanting to do that together, instead Tim decided to try to salvage the failing NSS implementation (and I was tasked with doing it), and when that didn’t work out, an academic community was contracted to do it, but they wanted a research system. 2) Inrupt’s decision to make a server their main product. This resulted in that every significant decision was made in-house, completely opposed to the public communication which stressed openness. Solid became a commonswashing effort, and continues to be so to this day. Since Inrupt focused on Enterprise customers, every effort was made to make the permissioning system focused on enterprise use cases. But setting permissions to data in the enterprise is a expert focused task, resulting in a system that would only give you control over your data if you were an expert. That is not to say that what we had was good either, it is to say that it completely sucked the oxygen out of the room for every other effort. I wrote a lengthycomment on Leigh Dodds blog too.

AT Protocol has a very different focus, its focus is not on the Web and its infrastructure as it were, its focus is on the blocks of data, and how you can trust those data even when you don’t necessarily trust the underlying infrastructure – an important consideration. It didn’t bring in the permissioning on data from day 1, but that’s an effort that’s going on now. And it doesn’t use the verbs of the HTTP protocol for resource manipulation, it instead uses the RPC paradigm. I’m not a fan, but at this point in time, I believe that this is not a fight worth taking.

So, in terms of alignment… I don’t know. I guess Solid could go somewhere, but it seems pretty dead by now apart from Inrupt’s commercial endeavors, which also doesn’t seem to amount to much. It has had a decade to take off, and it hasn’t. I’m pretty saddened by the fact, it was such a big part of my life for so many years.

To me, the Lexicons efforts of AT Proto look a bit like something that hasn’t met yet the challenges that RDF failed at a couple of decades ago. People just don’t tend to agree much upon semantics, despite every effort to make it clear and well defined. :slight_smile: I believe there are lessons that could help AT Proto not fail the same way RDF failed.

Also, I hope that the mistakes made around private data in Solid would not be made when designing the system here.

There might be ideas around stream query languages that never made it anywhere on Solid that could perhaps come in querying the firehose.

So, in conclusion, there isn’t a lot in terms of actual tech, but there could be many ideas that didn’t make it to fruition on Solid that could make it here. And overall, the governance must be much better here than it was over there.

10 Likes

Thank you for your thoughtful reply! This is super interesting, and it sounds like there were a lot of great learnings from the effort, but limited adoption which is pretty important.

I hope my initial question didn’t come off as preferring one or the other or suggesting that the two merge. I’m still trying to make sense of the landscape.

I’ve been a developer for a while but this is my first time getting into the open source world and I’m trying to make sense of it still. Usually when working at a company seeing two different ways of implementing something similar and merging it into one is a pretty big win and a really common practice.

Here it seems more like implementing things a lot of different ways and seeing which way people actually like and adopt is a feature, not a bug. Which is a different way of thinking. But also a bit more fun since I can just build whatever I want to see and not worry about it being or becoming the “right” way to do it or not :grin:

5 Likes

Thanks for sharing this realization! Very helpful

The additional nuance is that this isn’t just open source - it’s built on an open protocol.

So people can build multiple open source implementations that still interoperate.

The give and take here (and standards / protocols) is stuff that isn’t standardized yet means people need to try different approaches because there isn’t the “one company” set of narrow use cases. And so we just need to build stuff and try things and then see if we can converge and interop.

On your comment about Lexicons, @pfrazee.com has said we are in the jungle - meaning that there WILL be many different definitions for a while. I agree. We’re going to have to try more things and ship things that get used - and then, maybe, there will be convergence (or, tools for mapping and converting between Lexicons).

On Solid - very much aligned principles but a very different protocol. Everything else has been well covered.

3 Likes

That is helpful framing! Thank you all for being so helpful for my naive questions :grin: I’m learning a ton and this has been a super welcoming community.

5 Likes

On your comment about Lexicons, @pfrazee.com has said we are in the jungle - meaning that there WILL be many different definitions for a while.

Welcome to the jungle, we got apps and games. We got every schema you want, we know the namespaced IDs.

To me, the Lexicons efforts of AT Proto look a bit like something that hasn’t met yet the challenges that RDF failed at a couple of decades ago. People just don’t tend to agree much upon semantics, despite every effort to make it clear and well defined. :slight_smile: I believe there are lessons that could help AT Proto not fail the same way RDF failed.

Always keen to have this conversation. The original proposals were actually built on RDF, but as time demands grew too high, I had to discard that design and focus on the shortest path to the mechanics and developer experience that we wanted.

I continue to appreciate RDF despite not using it, and I’m always eager to discuss the design space and learn from the RDF community.

6 Likes

Great conversation!

I don’t know how Lexicon development are being done today, but my feeling is basically that lexicon/schema development is the archetypal social endeavor, you try to get agreement on something, and so, it is the first thing a social technology should dogfood. It is the bootstrap :slight_smile: .

The RDF community has had bunch of really old vocabs, Dublin Core, FOAF, DOAP, etc. that had been around since the dawn of ages, had been developed as one did back then, on mailing lists with a BDFL or two actually doing the edits. Then, there were some attempts to make social technology fit for that purpose, Neologism (dunno if you were involved, @bmann.ca ?), but it didn’t come to much. And a bunch of other efforts that didn’t get much structure in terms of participation. And then, the pretty centralised Schema.org effort. Schema.org has been pretty successful, but is fairly heavy to operate.

The problem for any community oriented process on RDF is the development of vocabs, because it needs to be pretty well figured out before you go live, but that is easily at odds with the need for broad coordination if schema is to be reused. Its easier if you just do something for your app, with no expectation of reuse, but then, there’s no reason why you’d absorb the high upfront cost of semantics.

There has to be something that’s much more lightweight and lower-level and Schema.org, while also having a process to arrive at rough consensus fairly quickly. I advocated for this to be the first app of Solid, because my feeling is that as a social technology, this is how you demonstrate that you have a technology that can enable collaboration. It didn’t happen around there, and while I’d like to work on something like that, that’s not what my funding is for :slight_smile:

2 Likes

I did my tour in RDF but mostly in looking to build with it. Was involved in Drupal + RDF as a way to share structured data between instances (there was a visual interface for building content types called the Content Construction Kit). The problem was — you got zero benefit and lots of cost, and it was only useful if other people adopted it.

With Lexicons, it’s immediately valuable to the first implementor, and can be adopted elsewhere - where it becomes more valuable.

Mixing / matching / extending is something that will be interesting to see what happens.

4 Likes

Interesting aside, Discourse has a feature where it shows other people writing a reply. @bmann.ca what up.

With Lexicons, it’s immediately valuable to the first implementor, and can be adopted elsewhere - where it becomes more valuable.

Mixing / matching / extending is something that will be interesting to see what happens.

Yes indeed – there’s a bit of a network effect. In some ways that’s good? It’s fun to make things that people depend upon, and for AT Proto creating a commonly-used Lexicon is a bit like making a popular NPM package. (Though hopefully with less CVE risks.)

Over time, this will get messy. There will be mismanaged or poorly governed schemas. There will be fights over the definitions. There will be abandoned schemas. The data friction around those schema problems will make us all rue the day, and we’ll have to all get together to solve how to move forward. But in a way that’s a deferred cost to solve this question:

The problem for any community oriented process on RDF is the development of vocabs, because it needs to be pretty well figured out before you go live

We maximize the implementors’ agility so that they can get something into users’ hands and figure out what works. We pay the fail-case prices in the future with community calls and munging. (That’s the theory I operate out of, at any rate.)

One other observation I’d make is this: the number one priority of Lexicon is to enable developers to predict what each others’ software will do. The number two priority is to empower developers to create new things. To that end, the largest missing piece to the extensibility story (in my opinion) remains the lack of fallback behavior tooling.

5 Likes

I was wondering if I should wait for the Lexicon as Jungle Enjooyer should post :stuck_out_tongue:

1 Like