[[!meta title="hyperdrive.el: Peer-to-peer filesystem in Emacs"]] [[!meta copyright="Copyright © 2023 Joseph Turner and Protesilaos Stavrou"]] [[!inline pages="internal(2023/info/hyperdrive-nav)" raw="yes"]] # hyperdrive.el: Peer-to-peer filesystem in Emacs Joseph Turner and Protesilaos Stavrou, xmpp:discuss@conference.ushin.org (XMPP MUC for USHIN discussion), [[!inline pages="internal(2023/info/hyperdrive-before)" raw="yes"]] This talk explores [hyperdrive.el](https://ushin.org/hyperdrive/hyperdrive-manual.html), an Emacs interface to [hyperdrive](https://docs.holepunch.to/building-blocks/hyperdrive), a peer-to-peer shared filesystem. Peer-to-peer networks give you the freedom to choose your sources of information and to communicate directly with them. Emacs is a [freedom-respecting](https://www.gnu.org/philosophy/free-software-even-more-important.html) text editor/operating system that puts you in the driver's seat. By bringing these two worlds together, hyperdrive.el aims to inspire deliberation about digital communication freedom. Hyperdrives are peer-to-peer shared folders, well-suited for data that changes over time, like personal blogs. It complements Bittorrent and IPFS, which work best with unchanging data, like journal archives. Here's a scenario: Alice creates a new hyperdrive and adds some files. Her computer returns a public key URL that uniquely identifies the hyperdrive. Alice shares that URL with Bob, who can then download Alice's files directly from her computer. No third-party servers are required to route the connection. Data is distributed among peers; once Bob has loaded Alice's files, Carol can get them from Bob (or anyone else who has a copy) even when Alice is offline. Drives are mutable; when Alice adds/removes/changes files in the drive, Bob can refresh her drive on his machine to get the latest changes. Drives are versioned; anyone with the URL can "check out" prior versions of Alice's drive to see what her files used to look like. Currently supported features in hyperdrive.el include: - [directly edit hyperdrive files](https://ushin.org/hyperdrive/hyperdrive-manual.html#Write-to-a-hyperdrive) - [dired-like directory view](https://ushin.org/hyperdrive/hyperdrive-manual.html#Directory-view) - [org-mode link support](https://ushin.org/hyperdrive/hyperdrive-manual.html#Org-mode-links) - [version history navigation/diffing](https://ushin.org/hyperdrive/hyperdrive-manual.html#View-the-hyperdrive-version-history) - [built-in bookmark.el integration](https://ushin.org/hyperdrive/hyperdrive-manual.html#Bookmark-a-hyperdrive) - [local directory mirroring](https://ushin.org/hyperdrive/hyperdrive-manual.html#Mirror-a-whole-directory) - [audio/video streaming](https://ushin.org/hyperdrive/hyperdrive-manual.html#Stream-audio-and-video) Planned features include: - peer discovery (swarming) - diffing directories between versions Check out [the manual](https://ushin.org/hyperdrive/hyperdrive-manual.html#Installation) for installation instructions! You're welcome to join our public XMPP chat room! - xmpp:discuss@conference.ushin.org ([Join anonymously from your browser](https://anonymous.cheogram.com/discuss@conference.ushin.org)) - \#\_bifrost\_discuss\_conference.ushin.org:aria-net.org (Matrix bridge) Bugs can be submitted to the [ushin issue tracker](https://todo.sr.ht/~ushin/ushin). Patches, comments or questions can be submitted to the [ushin public inbox](https://lists.sr.ht/~ushin/ushin). About the speaker: I'm Joseph Turner. I enjoy fiddle, Aikido, peer-to-peer networks, Emacs, and swimming in cold water. I work with [USHIN](https://ushin.org/), a tiny educational US nonprofit whose mission is to promote personal, community, and global health through free and open universal shared information for everybody. This year, we're focusing on the hyperdrive.el project, with the goal of bringing Emacs and peer-to-peer together. I am Protesilaos. Friends call me "Prot" and you are welcome to do the same. I have been an Emacs user for ~4 years. I use Emacs full-time for practically every aspect of my computing. I am the author and maintainer of several packages for Emacs and am enthusiastic about its potential for user freedom. [[!inline pages="internal(2023/info/hyperdrive-after)" raw="yes"]] [[!inline pages="internal(2023/info/hyperdrive-nav)" raw="yes"]]