top | item 42894200

Earthstar – A database for private, distributed, offline-first applications

310 points| kristianpaul | 1 year ago |earthstar-project.org

42 comments

order
[+] __MatrixMan__|1 year ago|reply
Looks a bit like nostr except:

- data is named, not content addressed (to support overwrite & deletion), so the primitive data type is associative arrays of names to documents instead of sets of messages

- documents are grouped into "shares" and you have to know the "share address" before the server will acknowledge that it indeed has documents in that share.

Seems like an interesting approach: part way private, part way open. It think projects like this which pick an extreme on that axis end up suffering for it--which is most of them.

I bet it would succeed at keeping the spammers and scammers out, but I'd be leery of using it with a large group against a motivated adversary--if a single user exposes the share address (which is in a gray area between public and private) it seems like all of the users of that share are exposed. I'd prefer to see a web of trust so that an adversary has to compromise each hop on the trust graph before they find their target--but that's a lot of complexity for users to handle so I can see why keeping it simple might be worth tolerating the lack of granularity.

I certainly hope that something like this succeeds. It feels like we've lost the web and there are too many of us to coordinate en masse without something web-like--and at a time where that coordination is pretty important.

[+] nine_k|1 year ago|reply
Hmm, a proper capability-based design would, of course, give each user a separate share address, which could be disabled at any time.

Share addresses should be handled much like ssh keys.

[+] Havoc|1 year ago|reply
Not entirely following what this is?

A document and media database of some sort with lots of JavaScript involved somehow? Aimed at something vaguely self-host-ish? With mastodon-ish replication to peer nodes?

Seems like there is an ambitious grand vision happening here of sorts but not quite seeing it.

[+] danjl|1 year ago|reply
The distributed part of Earthstar seems like the selling point? Otherwise, it certainly does not have the range of database capabilities of either PGlite or SQLite, which also work offline, store data locally, and work in the browser. What do you get from the distributed nature of Earthstar? Backup? That's pretty simple with both SQLite and PGlite too, so I'm not sure I see a big benefit for most db users. The win seems to come from people who want to store data on their machines AND share that data with other individuals who also get local copies. Maybe this is for pirating content?
[+] escapecharacter|1 year ago|reply
An equivalent term is "local first", where there seems to be more activity.
[+] erikerikson|1 year ago|reply
I came to comment this.

What's the use case?

How would I use it?

Why would I want to use it?

Definitely some interesting features but the vision seemed lost in their listing.

[+] brendanyounger|1 year ago|reply
I believe this is superseded by the Willow protocol [0] which was posted here a while back.

I tried to read about Willow, but could never make heads or tails of it [1]. It seems to be a hierarchical key value store with a bunch of extra fields for timestamps and cryptographic tokens, but it's woefully short on working examples. Even the recent Rust library [2] is effectively a bunch of abstract classes with implementations that just throw errors.

I could make a quip about the state of European tech sophistication, but I'll let it pass with a polite smile.

[0] https://willowprotocol.org/earthstar/spec/

[1] https://willowprotocol.org/specs/data-model/index.html#data_...

[2] https://github.com/earthstar-project/willow-rs/tree/main

[+] jazzyjackson|1 year ago|reply
I was going to say what the sibling said, no need for snark, NLnet funds a ton of cool projects. If I were to judge the quality of software written in silicon valley on the vc funded projects that don't pan out, god help me
[+] madacol|1 year ago|reply
they seem to be the same people behind Willow: https://earthstar-project.org/docs/future#willow-protocol

> All of these above features are enabled by the new Willow General Purpose Sync Protocol we've been working on. It's a new protocol inspired by Earthstar, refining and building upon its concepts. We will be publishing a new website with complete specifications for this protocol.

---

https://willowprotocol.org/more/compare/index.html#compare_e...

> If Earthstar feels very similar to Willow, then that is no coincidence. Willow started out as a reimagining of Earthstar, future Earthstar versions will build upon Willow, and the core maintainer of Earthstar is one of the two Willow authors.

[+] culi|1 year ago|reply
The website literally says "Earthstar has a new specification powered by Willow." in a banner at the very top
[+] omnimus|1 year ago|reply
Yeah one person open-source project says everything about the state of European tech sophistocation.
[+] qwertox|1 year ago|reply
Does a Python client exist? The only thing I see in the docs which is related to Python is

    # Earthstar timestamps in python
    timestamp = int(time.time() * 1000 * 1000)
[+] jazzyjackson|1 year ago|reply
I would recommend instead jellyfin, immich, and maybe just plain sftp for all the rest. You can sync (err, become distributed) by way of git, syncthing, or rsync.

What I haven't seen yet is a good self hosted identity manager, SSO sort of thing. I believe bluesky is working on one but I dont know if it will be self hostable (Freudian autocorrect: self hostage)

Another thing I haven't figured out yet with my homelab/private cloud is how to be my own CA and manage access to my machine without teaching my counterparties ssh. I want something like NordVPN offers in their meshnet: anyone logged into the family plan can see each other's machines as if they were local network. Can wireguard accomplish this? I think this is what yggdrasil is too but haven't dug into it.

[+] globular-toast|1 year ago|reply
Isn't this a library for building your own applications? I don't see how jellyfin etc is relevant here.

By "good" identity management I guess you mean something other than OpenLDAP or 389? Not sure how well these work with Windoze if you care about that.

Being your own CA is easy. Installing that CA in all the machines you want to is the sucky bit. It all works if you use let's encrypt.

Wireguard can let you join two LANs together over the internet but you'll probably want two wireguard capable routers on each end (like pfsense or something). Otherwise you'll have to install special routing configs on to each client machine. Forwarding avahi (for auto-discovery) over the link is something I haven't figured out yet.

[+] dudus|1 year ago|reply
I'll suggest maybe tailscale is what you are looking for to share with family a VLAN
[+] randomcatuser|1 year ago|reply
I think this will really benefit from blog posts!! (ie, why did we design it like this?/what were the alternatives?)

At a first glance, it sounds interesting though! identities being keypairs, files, content that is accessible via name...

[+] canadiantim|1 year ago|reply
Any possibility of implementation in different languages like Python? I like everything about this except that it's Javascript and I'm still cautious about using javascript for something like this
[+] __MatrixMan__|1 year ago|reply
Applications like this are why I like languages like nim and gleam, which compile to both javascript and something else. This lets my app run on a raspberry pi or an esp32 or in a browser tab.

Unfortunately neither are especially popular, so we end up asking implementations in multiple languages, which must be a drag for maintainers of projects like this. Alas, here we are. If not one of those, then I too would be interested in a python client library.

[+] mrbluecoat|1 year ago|reply
> Always self-hosted. Servers optional. No blockchain. No tokens. Free forever, in every sense.

Best thesis statement ever.

[+] jlkuester7|1 year ago|reply
Honestly it kinda feels like they just reimplemented CouchDB/PouchDB....

Not that it would be a bad thing to do that, but really, for small scale stuff Couch works pretty okay. My first impressions of Earthstar do not lead me to believe they have a particular emphasis on performance at scale.

[+] gwbas1c|1 year ago|reply
What applications run on top of this?

Without some seed applications, it's hard to know if this actually works, or is just mental gymnastics.

[+] kapad|1 year ago|reply
JAWA = Just Another Web3 App