|
|
[[!meta title="hyperdrive.el: Peer-to-peer filesystem in Emacs"]]
[[!meta copyright="Copyright © 2023 ${speakers}"]]
[[!inline pages="internal(2023/info/hyperdrive-nav)" raw="yes"]]
<!-- Initially generated with emacsconf-publish-talk-page and then left alone for manual editing -->
<!-- You can manually edit this file to update the abstract, add links, etc. --->
# hyperdrive.el: Peer-to-peer filesystem in Emacs
Joseph Turner, <https://ushin.org> xmpp:discuss@conference.ushin.org (XMPP MUC for USHIN discussion), <mailto:joseph@ushin.org>
[[!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.
[[!inline pages="internal(2023/info/hyperdrive-after)" raw="yes"]]
[[!inline pages="internal(2023/info/hyperdrive-nav)" raw="yes"]]
|