@abbienormal The DREAM project was intended to do more work towards complete decentralization. For mutable containers: DMC (purl.org/dmc) and for transport protocol: UPSYCLE. Unfortunately that work is not ready for reliable usage yet. These things are hard and take time.

Whenever these things do appear openEngiadina can move to these while keeping the same data model. An important part of the network - the content - is already decentralized and transport agnostic.

@abbienormal Both are currently handled by XMPP. XMPP works very nicely, there exists robust server software that can be used (e.g. ejabberd and prosody).

But it is a trade-off between making openEngiadina usable now while still having to rely on federated servers.

[continued]

@abbienormal The software we are currently developing, as you noticed, is not completely decentralized. We use a federated network. There are two reasons for this:

1. Mutable containers: ERIS and content-addressable RDF only allow immutable content. However there are things that are intrinsically mutable. For example a user inbox or a shared collection of OSM nodes.

2. Transport protcol: We have not yet found a reliably usable peer-to-peer transport protocol that just works.

[continued]

@abbienormal We have been working on decentralized, P2P things like ERIS (purl.org/eris) and Content-addressable RDF (openengiadina.codeberg.page/rd). Together they form the basis of the data model we use. The openEngiadina data model is completely decentralized. This is already very good as it allows content to live on independent of the status of hosting servers. Furthermore it is compatible with traditional RDF and existing transport protocols (XMPP or ActivityPub).

[continued]

@abbienormal Hi! The goal of the openEngiadina (openengiadina.net) project is a system that can be hosted robustly and easily by small communes and organizations. For this we need decentralization. A single host going down should not bring down the entire system. Or put differently: small organizations can not provide 100% uptime for a self-hosted server but the system should continue to be usable with very high reliability.

[continued]

RDF/CBOR (openengiadina.codeberg.page/rd): Yet another RDF serialization.

But it has some new tricks:

- Optimized for small pieces of content (e.g. ActivityStreams objects)
- Allows content-addressing

It's designed for decentralized systems, passing around small pieces of RDF.

Another [openEngiadina](openengiadina.net) milestone: RDF, geo-spatial and full-text search - A Multi-Model Database. And all that with IndexedDB.

The ideas: inqlab.net/2022-07-01-geopub-a

A demo instance: geopub.openengiadina.net/ (Initial loading takes some time as it loads an extract of OSM data).

@edsu @clacke

@how did some digging into this as well. Apparently PURL was re-written in Python and there are no plans to release the code.

@rysiek Yes, there is a Javascript implementation of ERIS (inqlab.net/git/js-eris.git/) that runs in the browser.

You could store the encrypted blocks in IndexedDB and so have access to content without any additional software.

ERIS itself does not define any transport. So to get the blocks you would still need to get them from an HTTP server, connect with an IPFS bridge or similar.

There is an (outdated) demo of ERIS that runs in the browser and can use IPFS: openengiadina.gitlab.io/js-eri

@rysiek Congratulations on reaching a milestone!

As part of another @NGIZero project we've been working on ERIS - an encoding of data into small, encrypted blocks: purl.org/eris

This allows you to store content securely and censorship-resistant on IPFS or GNUNet or OpenDHT or anything really. The encoding and the identifier of the content becomes independent of the transport.

Might be applicable for . The motivation seems very similar.

@alexandra There's an experimental client called GeoPub that can do something like that:

geopub.openengiadina.net/brows

(click "Load more data")

It shows you all properties and you can click your way trough everything.

Unfortunately the experience is bad because of CORS and most things will not load. I recommend the Firefox "CORS Everywhere" add-on for a slightly better experience.

This is part of the project. And I'm working on an update!

My fellow openEngiadina developer @rustra was arrested in Minsk, Belarus on charges of organizing protests last year. He has reported being tortured.

This is a strong reminder of the ongoing repression in Belarus.

Resist repression and support victims!

@abcdw I can highly recommend "A comprehensive study of Convergent and Commutative Replicated Data Types (2011)" by Shapiro et. al (hal.inria.fr/inria-00555588/do) - the first formal definition of CRDTs.

It is an academic article, but I find it very readable. The formalization (section 2) are not essential for understanding the various CRDTs described in section 3.

@hannesm I also think that taking the compiler as given is reasonable most of the times.

I recently learnt that the Ada compiler (GNAT) is not bootstrappable. If you want to rebuild your Ada compiler you will eventually have to use a binary blob of an older Ada version that is lying on some dusty FTP server.

This seems to be ok for Ada people who are apparently building highly-reliable, safety-critical software.

Still, interesting to think about the odd-case: cs.cmu.edu/~rdriley/487/papers

@hannesm yeah! Completely agree that amount of source code needs to be minimized.

But I think we should count source code size including the entire dependency graph.

For OCaml this means counting the source code of the OCaml compiler and also the C compiler that was required to build the OCaml compiler.

I guess Guix includes 5 different GCC versions because it takes a couple of GCC versions to bootstrap itself and there are packages in Guix that require different GCC versions.

@hannesm Ideally, reproducible down to a minimal binary seed (gnu.org/software/mes/) and all the way up to the compiler (github.com/Ekdohibs/camlboot).

Practically, maybe not quite there yet. But is leading the way!

@clacke Editing PURL entries is unreliable and simple changes take multiple attempts (for me at least). Luckily, the redirection itself seems to work reliably.

I can't figure out what software IA's purl is running on, but it does not seem to be PURLZ (sites.google.com/site/persiste) - the free software developed by OCLC.

@clacke By the way, the real application I was thinking of is purl.org - a persistent URL service run by the Internet Archive.

In my opinion, a vital piece of Internet infrastructure - but severely broken ... and closed-source??

Show older
chaos.social

chaos.social – a Fediverse instance for & by the Chaos community