New Relic Now Start training on Intelligent Observability February 25th.
Save your seat.

When the pandemic lockdown began last year, in the area where I live near Washington, D.C., informal mutual aid networks built up quickly inside Facebook. The intent of most of these groups was that members within a hyperlocalized community (down to the specific neighborhood, ward, or city level) volunteered to help their neighbors. Tasks included delivering groceries, picking up medications, taking care of pets, driving or doing drop off services, and other supportive, neighborly activities to help with elderly, disabled, under-resourced, and otherwise disadvantaged individuals and families in our communities. 

The list of needs was high, and there was a corresponding rise in mutual aid: I saw neighbors helping out neighbors without any expectation of payment or reward, simply because we were all in it together and were facing similar struggles. An important idea to highlight is that people know what type of help or assistance they need, and it’s typically very straightforward. I wouldn’t want to jump through hoops if, for example, I needed help with childcare on a Thursday afternoon when I might have a job interview, or if I needed to get some bagged groceries from the food bank, or if I needed to get help with caring for my grandmother-in-law once a week.

Managing the flow of requests in a community

As I thought through this experience and reflected on the many needs that people have inside our communities, I thought there might be ways for people to help each other and manage the flow of requests in a sortable manner. To make a system flow more easily, I thought about the following qualities of requests:

  • Timebound: People need to make a request and get help on it within a fixed amount of time, such as “need help getting to doctor’s appointment next Tuesday.”
     
  • Asynchronous: A system should be more open than having to wait for Fridays to post to a Cashapp “thread".
     
  • Self-organizing: Requests for assistance should not be reliant on “gatekeeping” or tone policing by a moderator.
     
  • Filterable: With a wide variety of requests, was there a way to categorize them into specific types, such as Health and Medical, Eldercare, Pets?
     
  • Updated: If there was a way to show a particular request was “completed,” then there wouldn’t be a lingering uncertainty.

All of these ideas were floating around in my head for the past year, but it was at the FutureHack 2021, a part of the FutureStack virtual conference, that I was able to dig in and really focus the effort. 

FutureHack 2021

The rules required a 24-hour buildout, from pilot to delivered product. I knew the constraints of what I needed to accomplish and thought it would be an early, minimal viable product (MVP) version of a Mutual Aid Network online that could potentially be reused and repurposed for the needs of different types of communities.

I got the source code from the New Relic users Slack channel and started the build after work that Tuesday night.

That evening, Giesha Nuñez and I did a general brainstorming session. She has been a mentee for some time, and we both attended Cornell University. There’s always a need for more Drupal site builders and developers, and I’m always happy to do any kind of training and sharing about the Drupal platform.

We bounced ideas around from my initial “piloting document” for Mutual Aid Network, and she helped prioritize the types of features that would make the most sense. I sorted these mentally based on what I thought could reasonably be accomplished in the limited time.

Next, I spun up a version of Drupal 9 on the Pantheon hosting platform. Drupal is a robust and scalable content management system that allows administrators to quickly test an existing idea and build out different features using already-created “contributed modules.” I knew in this case I would use standard Drupal, which is very straightforward to implement on Pantheon. 

Pantheon’s Get Started tutorial helps walk you through how to create your first site. I also knew I wanted to use the Flag contributed module with Drupal. Contributed modules are sections of code that other contributors have created to help make common tasks easy. Drupal has thousands of contributed modules, and you can use the most common ones to help build out a site very straightforwardly, if you have a good sense of your requirements and what your standard website needs. In this case, I thought we could use “flagging” to do default bookmarks and we could assign global and individualized “markings” on specific pieces of content. 

I thought of using a content type called a request, and then allowing that request to be categorized and assigned to a location. Then I thought through and tested this design, using the Flag module to assign different types of flags on a specific request. 

My thinking was that a user would sign up to the site and create a request, and that request would move through time, going through different statuses—where it would eventually be assigned to a volunteer, and then it would be completed or finalized. All of this activity would be self-reported, so participants could do as much or as little as they needed in terms of requesting or fulfilling. I documented a video walkthrough of my process to help clarify my own thinking.

I have had experience with building websites for clients and customers as an in-house web developer and long-term consultant. Setting up Pantheon and a regular installation of Drupal 9 was easy. One of the judging criteria was to use a New Relic dashboard to gain visibility into the website statistics. I used Pantheon’s default connection inside the hosting control panel to hook that up.

Here’s my bleary-eyed demonstration after wrapping the bulk of the development around 3 a.m. on Wednesday:

On Wednesday mid-morning I did end up purchasing a domain name, communitytech.co,  and forwarding it to the default sandbox from Pantheon. I’ll probably end up formalizing this as an actual website and not just a pilot version. 

Pencils went down at 3 p.m. on Wednesday afternoon, and we submitted inside a Google form: a demo of slides, a demo of the website, and the GitHub repository

Tools used to build Mutual Aid Network

We used the following tools to build our Mutual Aid Network:

  • Terminal for accessing git commands
  • Sublime Text editor
  • Github Desktop for keeping source code up-to-date, and GitHub for the initial repository
  • Google Docs for initial noodling and brainstorming
  • Drupal content management system
  • Pantheon hosting environment (Pantheon offers an easy way to spin up a Drupal or WordPress site in a “sandbox environment” to test out assumptions, like I did. As additional volunteer work, I’m also a Pantheon Hero and am always happy to walk new users through how to use Pantheon.) 
  • Olivero theme for the front-end display of content, and Claro theme for the administrative view of content (what admins view)
  • Standard New Relic One dashboard for observability into the site
  • GoDaddy to purchase a domain name
  • Canva to create a basic logo
Mutual Aid Network logo

Co-creating the future

I am a firm believer that we each have infinite opportunities to solve our own problems and support our own communities with the many tools and resources around us. The open source movement has many available solutions, and companies like New Relic are taking on more and more responsibility for standardizing and making software easy to use for the future that we are each co-creating.

Many thanks to the New Relic team for the opportunity to take the time to work on this project, and I look forward to continuing to make meaningful contributions and a measurable positive difference.