3.1 Collaborative Planning

planning-map

There were two broad categories of collaborations that took place throughout the network planning and deployment:

  • Virtual collaborations were usually asynchronous over discussions on GitHub Issues, plus a lot of real-time chat sessions on #dweb-camp-2019-mesh:matrix.org and #tomesh:tomesh.net, where many volunteers excited about DWeb Camp contributed their expertise on networking hardware and software. Some of the contributors did not actually attend DWeb Camp, but their contributions were significant, especially during prototyping and design phases

  • In-person collaborations happened over multiple trips to the venue and became the focus leading up to and during the event, in addition to occasional gatherings at the Internet Archive. Having in-person work sessions proved to be important in engaging new people to take leadership on initiatives and coordinating on-boarding activities

Planning The Meshnet

node-hardware

There were many moving pieces that only became clear weeks ahead of Camp:

  • Available hardware budget and device availabilities
  • Attendance and the coverage area of the event
  • Volunteers’ availability to help in different ways
  • Availability of Internet access

Until July, the network existed as a 3-node mesh network running at the Internet Archive.

hack-day

Before July, friends from People’s Open and Althea, along with other volunteers, have popped by the venue to conduct some radio testing, but we have never tested beyond a point-to-point link on site.

The software that configures the mesh hardware, running on the Internet Archive demo system, has mostly been developed by Benedict with remote help from Yurko of Toronto Mesh. While the router and radio configurations borrow heavily from Toronto Mesh’s existing work on single-board computers and NYC Mesh documentations, the combination of these components into a modular system, as described in Section 2, makes the overall network design and hence the software quite different from either. So at that time, only Benedict and Yurko knew how this system worked, and the volunteers from People’s Open had an idea because they also use Babel in their network and has familiarity with how it works, so during earlier trips to the venue we were able to more or less stay in sync.

The risk in the few weeks leading up to Camp was whether we would discover significant problems when finally starting to deploy production nodes, and if so, do we have enough capacity to resolve the issues. In Section 3.2, we will discuss how the Network Stewards program, that was formally announced around mid-June and consisting primarily of in-person high-bandwidth work sessions, proved to be key in the production network deployment and its continued maintenance.

planning-board

Prototyping Applications

Whether the physical network would work in production was one area of concern, but around end of May, less than 2 months from Camp, the builders who intended to deploy their applications had started planning for their projects. Many of the uncertainty around how the applications may interface with this experimental network would need to be answered. These questions generally concerned IP assignment, discovery protocols, DNS, SSL, NTP, and hardware logistics.

In addition to answering questions on GitHub, two efforts were undertaken to help application builders get a better idea of the meshnet environment.

  1. We arranged an All Day Hackathon on June 26, about a month ahead of Camp. Builders who live nearby, such as Mark who was building a local communication app based on GUN running on Raspberry Pis, was able to test out the software on the demo network at the Internet Archive.

  2. For people who are not in town, we built the Raspberry Pi-based system that simulates the Camp network, discussed in Section 5.1, so application builders could plug a device into the ethernet port of a Raspberry Pi and pretend they were plugged into the DWeb Camp meshnet.

    testnet

Some other builders arrived a couple days early to Camp and made their software play nice with the meshnet, sometimes with the help of Network Stewards. In the end things worked out without much struggle :)