Skip to content(if available)orjump to list(if available)

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

__MatrixMan__

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

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.

__MatrixMan__

I haven't used this, just explored the docs a bit, so maybe I'm misunderstanding, but my feeling is that one-share-per-user is too small--you could only use that to chat with yourself.

Havoc

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

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?

dpflug

It could be useful for, for instance, sharing photos with family, meeting notes, etc. Doesn't have to be piracy.

danjl

So, for people who are paranoid about using the services that are designed for these sorts of sharing, like Dropbox, GDrive, GPhotos, and a million others? These theoretical people would suffer the frustrations of setting up and managing their own db for the added privacy? I wonder what they have in those photos and meeting notes that is so sensitive?

escapecharacter

An equivalent term is "local first", where there seems to be more activity.

erikerikson

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

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

Fnoord

It is funded by NLnet. For a list of NLnet funded projects [1]. Any FOSS project can apply [2].

[1] https://nlnet.nl/project/current.html

[2] https://nlnet.nl/funding.html

jazzyjackson

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

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

The website literally says "Earthstar has a new specification powered by Willow." in a banner at the very top

omnimus

Yeah one person open-source project says everything about the state of European tech sophistocation.

PaulRobinson

Just like how Linux and Python started out and crashed and burned and nobody ever uses them any more lol

Mate, what are you actually on about?

qwertox

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

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

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.

jazzyjackson

I see what you mean, I was just going off the byline Works offline.Store music, photos, video.Actually delete stuff.Temporary documents.Live syncing.Use one or many identities.Sneakernets.Always self-hosted.

I’ve been struggling creating clientside certs for mTLS, seems like it will work for most browsers that let you install certs, but not for an app (like the immich and jellyfin apps) so I’ll probably end up with a VPN solution, easy enough to tell my sister to open this app and hit the button before trying to connect.

dudus

I'll suggest maybe tailscale is what you are looking for to share with family a VLAN

idle_zealot

Adding on to this: you can host your own Tailscale-compatible server with Headscale, if you want to be totally independent.

jazzyjackson

I’m going to dig into Headscale with Authelia for OIDC, that’s pretty close to what I was imagining, found this tutorial [0] (wow posted just 4 days ago). Thanks ya’ll.

[0] https://www.reddit.com/r/selfhosted/comments/1ic1w4q/headsca...

hinkley

I’m still annoyed I didn’t join the SQLite party until after browsers sunset support for it.

jazzyjackson

What goes around comes around, sqlite now distributes WASM builds that run in the browser: https://sqlite.org/wasm/doc/trunk/index.md

hinkley

It's not the same. It's not a massive binary, but it's not tiny either.

wongarsu

Compressed less than 800kB including some tests and demo code. I wouldn't want to include that on the homepage, but as part of a webapp it would be completely fine.

rkagerer

What did they sunset?

TJSomething

Web SQL, which was Chrome's implemented proposal to add SQLite to the JavaScript standard library. Chrome said they scrapped it because SQLite wasn't really intended to be used in a security environment as hostile as the web.

Mozilla did not implement it because it's not any kind of standard subset of SQL and no such subset is agreed upon while also useful. They didn't want to tie web standards, supported features in browser releases, and SQLite's release lifecycle to each other.

hinkley

I heard that since there’s only one SQLite vendor and nothing else comparable to allow for multiple options, they wouldn’t support it.

I would like to hear more about the hostile environment comment. I thought they sandboxed every page. Cross origin data theft?

null

[deleted]

randomcatuser

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

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__

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

> Always self-hosted. Servers optional. No blockchain. No tokens. Free forever, in every sense.

Best thesis statement ever.

ofrzeta

[wrong thread, sorry]

CalRobert

Wrong place?

jlkuester7

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.