summaryrefslogtreecommitdiffstats
path: root/2023/talks/hyperdrive.md
blob: 1a092fa4597d0a88c9911cd78a5d74aa46bd48a9 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
[[!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).



[[!inline pages="internal(2023/info/hyperdrive-after)" raw="yes"]]

[[!inline pages="internal(2023/info/hyperdrive-nav)" raw="yes"]]