For the past year or so I have been researching nearby computer networking. The basic idea is simple, if you place two devices next to each other, I want to easily be able to connect these devices and pass messages between them. Unfortunately, in practice this is actually quite a difficult problem due to differences in device hardware, ever-changing OS-level API's, and a slew of strange per-device quirks with using these API's.
Because it is actually quite a hard problem, I have been trying to reason about why nearby networking is even important at all. Nearly every major collaboration tool and software system uses centralized infrastructure, and in the edge case where there is nearby device interaction, it is usually reliant on mDNS and an existing local area network. All these tools have been tremendously successful and are used at scale, so maybe this approach offers enough functionality for most users.
I realized that I had been strongly motivated not by a logical recognition of some market inefficiency, but a feeling. One afternoon I was walking around in a park and I stumbled upon a drum circle and it hit me that this was the deep-seated feeling I had been searching for. Drummers freely flowing between rhythmic patterns, performers jumping in and out of the circle, different types of percussive instruments filling the available high frequency ranges. In many ways music is one of the most pure forms of collaboration we have access to, it requires purely our cognition and some instruments (in this case we will consider the voice an instrument). No languages, no auxiliary infrastructure, just people, a place, and some instruments. I sat there watching the drum circle thinking about how nothing in my personal computing history had come close to this collaborative experience.
There are many reasons why digital collaboration lacks these feelings. For example, the interfaces for digital collaboration are usually discrete, we generally deal with character buffers that can only have one value per buffer location at a time, so making changes to a digital document or codebase often feels like trying to not encroach on your collaborator's "areas". Music offers layers of timbre and pitch, which build upon each other to create harmony. Perhaps projects like Dynamicland can help bring continuous, harmonic interfaces to computing. But even at the networking layer, I feel that there is much that can be done. Improved nearby networking approaches could give digital collaboration a feeling of freedom reminiscent of the drum circle.
Musicians collaborate relying only on their instruments, synchronized by physics. Future nearby-networking digital collaboration systems could enable real-time, multi-cpu collaboration using personal computer radio hardware, synchronized by protocols like modern CRDTs.
Or, to put it simply, in-person digital collaboration should rely only on personal devices. With servers and additional infrastructure being optional.
On the software side, there is a tremendous amount of work being done towards building efficient data synchronization protocols, with projects like Yjs, Automerge, and delay-tolerant designs with interesting privacy properties like Bramble. What is missing however, is an open source library for efficient nearby networking.
With modern personal computing devices, we have an abundance of compute power and storage, and most modern devices have the necessary radio hardware needed to efficiently network personal devices together. It is just a problem of building a wrapper API above these various different radio hardware specifications like BLE, L2CAP, WLAN, Wifi-Direct etc.
I believe that nearby networking could potentially offer many useful features for users:
Keeping as much data storage, and data transfer off the internet is helpful for preserving user privacy.
Nearby-networked systems are built on data transfers that use the theoretical shortest distance between collaborators, usually much shorter distances than traditionally-networked applications, so when collaborators are nearby, applications have the potential to achieve much lower latencies.
One of the most annoying user experiences with modern computing is just ephemerally sending data from one device to another, one hope with future nearby-networking systems, is that an open-source and truly cross-platform solution can be found to make this process painless and privacy preserving.
Nearby-networked systems rely on the minimum amount of hardware possible for collaboration so these systems could be extremely resilient and should enable digital collaboration in locations without stable internet access. Even as cellular networks and satellite internet continue to improve, this resilience property will likely continue to be useful because it will not rely on any subscriptions or privacy eroding identifiers like SIM cards.
By making servers and additional infrastructure optional, applications built in this way will have fallbacks for when infrastructure has downtimes. If we expect normal people or community centers to run their own infrastructure, this property is important because normal people do not offer 24/7 on-site tech support.
The biggest pitch for both nearby-networked software, and p2p local-first software in general, is that they are server-optional. Because p2p applications use the user's own personal devices for data storage and nothing else, p2p applications aren't limited by server hosting like their centralized alternatives. As centralized applications continue to pull back on their "free tiers" which utilize company servers without generating revenue, p2p alternatives can offer bandwidth unlimited options. For example, a p2p version of Slack could offer unlimited file size transfers and no restriction on message history, at the cost of all this added synchronization complexity. It is this property of p2p apps in general that excites me and gives me hope as a sustainable alternative to "enshittification".
One interesting extension of many of these ideas is how they interact with itemized environments.