
Unwalled.Garden: souped-up RSS for P2P social apps - bpierre
https://pfrazee.hashbase.io/blog/unwalled-garden
======
bertman
>Unlike Twitter and the other social networks, RSS never tried to capture the
social graph, likes, comments, annotations, retweets, and etc of its userbase.
It limited itself to posted content (mostly blog posts) and that was a missed
opportunity.

>missed opportunity

Maybe it's just me, but RSS being all about content is the best thing about
it.

~~~
onion2k
This is the two competing goals of _every_ publishing mechanism - one person
wants to broadcast their data and another wants to consume it, and it's very
rare for both parties to want exactly the same thing.

~~~
Angostura
Except where the same person is both publisher and consumer. I run a couple of
systems at work were RSS is invaluable, a website with news and a set of
screens on the premises running Xibo, that ingest the news via RSS to display.

------
nonwifehaver3
This looks awesome! A few questions if anyone knowledgable is around:

* Does Unwalled.Garden automatically pin the content of people you follow, so that their stuff stays online if they aren't?

* I didn't understand "We also use a second “private” dat for records which should be kept off the network". What is this referring to, the follow request, or some other private content like a DM? I assume that since this is still Dat there is no access control if you happen to know the address?

* How is reader privacy and DHT coming along with this ecosystem?

~~~
pfraze
> Does Unwalled.Garden automatically pin the content of people you follow, so
> that their stuff stays online if they aren't?

It gets saved locally so you can access it when they're offline. It'll also be
possible to instruct your pinning service to seed it on your behalf.

> I didn't understand "We also use a second “private” dat for records which
> should be kept off the network".

I'll talk more about this in the future as Beaker 0.9 is closer to release. We
basically are creating a filesystem with a root dat (which is private). Your
public dat will then be "mounted" to it at /public so it feels like one
unified FS. The structure will look something like this:

    
    
      /
      /.data/.unwalled.garden/* <- private records
      /public
      /public/.data/.unwalled.garden/* <- public records
    

> How is reader privacy and DHT coming along with this ecosystem?

At this stage, I'm pretty sure we're going to need to use proxies to solve
this. We're open to using an anonymity protocol like Tor but still uncertain
about the tradeoffs.

~~~
nonwifehaver3
Cool, these folks: [https://hashmatter.com/](https://hashmatter.com/)
[https://github.com/hashmatter](https://github.com/hashmatter) seem to be
doing something with onion routing and IPFS, but I'm quite unqualified to
understand exactly what or if it's any good.

------
chipotle_coyote
At first glance -- and that's an important caveat, since I haven't dug in --
this looks like it's duplicating an awful lot of work that's already been done
in the IndieWeb using existing, well-established protocols.

[https://indieweb.org](https://indieweb.org)

~~~
nyolfen
this is for the DAT protocol, not the legacy web (atm)

------
cookingoils
This all sounds pretty exciting. I’ve been using dat/beaker and I love how
easy it is to make a site right in the browser. It made me realize how many
barriers there are on http to just build a personal website and host it for
free.

This update to beaker makes sense to me as it was pretty hard to discover new
sites on the network though I’d love to see dat become a bit more stable. I’d
often make a site and a friend wouldn’t be able to connect to it. I think if
these issues could be resolved is some way the whole network would really take
off.

------
longears
Is there a reason to keep the post type out of the JSON and store it as file
metadata? That works in Dat which supports file metadata, but what about when
the data is handled in other ways (as plain files on disk, etc)?

[https://unwalled.garden/docs/how-does-it-
work](https://unwalled.garden/docs/how-does-it-work)

~~~
dcposch
It's not in metadata, it's in the directory structure!

------
jasonhansel
> Every client in the network acts like a Web crawler.

So O(n^2) connections? Might be an issue in the long term. But I like the
simple interface.

------
davidy123
I'm going to start sounding like a broken record, but I find it peculiar this
project claims RSS didn't go far enough, then it creates a short-circuited
implementation when the actual went-very-far progression for decentralized
information, something like RSS-XML-FOAF-RDF-Linked-Data-Solid, uses well
established and open ended schemas for much more than this project's basics.
With decentralized identifiers (DIDs), it will work on blockchains too. Fine,
make a million different decentralized systems, but why not just use LD in a
basic way so it's not just creating more fragmentation?

In following Solid, I've noticed a lot of decentralized projects are
interested and adapting to its approach.

~~~
pfraze
We're still building out schemas, so I wouldn't rate the protocol based on the
current number. I just didn't want to speculatively add a bunch without having
the live system to test against.

If I thought any of the existing standards were winners, I would've gone with
them. If you _really_ want to get mad, you can read why I decided not to use
RDF or JSON-LD: [https://unwalled.garden/docs/why-not-
rdf](https://unwalled.garden/docs/why-not-rdf)

~~~
davidy123
But this is why libraries are written. As you use each schema (using json-ld,
or turtle, or whatever), wrap it with a library, and it becomes as easy to
work with as anything. And you're adding to the critical mass of a read-write
"web." Programmers need to work with the data and schemas occasionally,
everyone else, forever. You've exchanged YAGNI with NIH. Unless you just
expect to gain a critical mass, or don't care about participating in that web.

~~~
pfraze
It really doesn't become as easy to work with. You still have to wrangle
around the RDF "everything is a triple and attributes are URLs" concept, and
even if you hid all that away you'd be attempting to gain something as simple
as this design is. We just need a way to share & publish objects which link to
each other. We don't need the graph model.

------
Semiapies
"Unlike Twitter and the other social networks, RSS never tried to capture the
social graph, likes, comments, annotations, retweets, and etc of its
userbase."

Except when they do, of course. Some places still have comment feeds.

Still, it's an interesting idea.

~~~
pfraze
Yeah I knew there had been some shots at it, but my google fu couldn't pull up
anything solid to point to. I'd love to see if somebody ever tried to "go big"
with RSS. EDIT: also the comments RSS is generally comments posted to the
blog, right? Not quite the same thing as each user having their own RSS feed
with their posts and comments.

~~~
rakoo
The thing is, RSS is about dissemination of content while follow/like/comment
is more about dissemination of opinion. There were indeed some protocols to
fill the missing pieces, including json-ld for having some sane, common format
and the Salmon protocol to make information go back up to the source. Like a
salmon. But it definitely was a patchwork of multiple technologies with
various advancement status and quasi-inexistant documentation.

Today all of those are dead now in favor of ActivityPub. AP loses a lot of the
simplicity that could make RSS ubiquitous (you need a home server and na
application server to handle api calls) but the expected interactions are all
there, and it's built to be extensible.

In fact, I think reusing the "everything is a file" is definitely cool and
makes things easier to try, but you would definitely benefit from using the
whole JSON-LD taxonomy. Things are already defined and have been used for some
time in production, so you can expect some work has been thrown at it. It'd
also make collaboration easier.

~~~
Semiapies
Webmentions is a more modern protocol for this sort of functionality.

------
xrd
What is the likelihood of Beaker running on Android?

~~~
xrd
Looks like the Bunsen Browser. It is fun to play with although I've never seen
so many JavaScript errors without running developer tools. I was unable to
load Unwalled Garden which sounds expected given that you are still building a
new version of Beaker to support UG features, right?

------
gambler
Anyone who tries to use JSON for complex, extensible formats that involve
documents (as opposed to data structures), metadata and semantic data are
shooting themselves and their users in the foot. Just because W3C fucked up in
some of their XML-based standards doesn't mean that trying to shove JSON
everywhere is a sensible idea.

    
    
      {
      "topic": "dat://unwalled.garden",
      "body": "Why didn't you use XML!?",
      "createdAt": "2018-12-07T04:15:44.722Z"
      }
    

Now, I want to change body to include images or something of that sort. Bam,
all the software that parses the old format is now broken.

Just use XML. Preferably, extend one of the existing RSS-like formats. Apply
lessons learned from HTML and XHTML. It will work zillion times better in the
long run.

~~~
pfraze
There's nothing stopping you from extending the JSON schema. We'll probably
come up with extension points to make it easier (as subobjects, each declaring
their own schema IDs).

The format really isn't the interesting question. The interesting question is
how do we get clients to behave predictably with each other. If you start
breaking the schemas that everyone on the network is using, then yes your
posts should fail to render and probably be ignored.

~~~
grenoire
The format is exactly for the purpose of getting clients to behave
predictably!

Without defining these schemas to allow for flexible mixed media documents,
you're always going to have chaotic implementations floating around.

------
chuckgreenman
[https://activitypub.rocks/](https://activitypub.rocks/)

~~~
nonwifehaver3
Every existing ActivityPub application requires you to rely on a server
operated by someone else that controls your identity. This application puts
you fundamentally in control of your content: it is just served from your own
device by default, with the option to have another server pin your content
(all of your content has Dat addresses).

Also, this sort of "use this, not that" dismissal ignores the fact that almost
every decentralized application can be bridged together. It would not be hard
to have Mastodon/Pleroma pull someones Unwalled.Garden feed and put it on its
federated timeline, or conversely for Mastodon/Pleroma to expose its users
feeds as Unwalled.Garden files.

~~~
zcopley
Okay, but why RSS over Activity Streams?

~~~
pfraze
It's not actually RSS, it just uses a very similar model of static files
shared off websites.

------
bdorn

      body: string 
    

:( it's 2019, let me write my post with photos & gifs !!

~~~
pfraze
We'll get there! Edit:
[https://twitter.com/pfrazee/status/1136710339163238400](https://twitter.com/pfrazee/status/1136710339163238400)

------
bobdamarley
Basic Q: How/where are these "dat://" sites hosted?

~~~
pfraze
The Beaker browser ([https://beakerbrowser.com](https://beakerbrowser.com))
has dat hosting builtin, and you can use hosting services to keep them online
when your device is off ([https://hashbase.io](https://hashbase.io))

------
armenarmen
I was really hoping someone would do something like this, bravo!

