The Digital Grove Project
On the Digital Grove project—my media, community, and codebase to build an alternative computing foundation in favor of computing freedom, design, simplicity, performance, privacy, and ownership.
The modern age is ironic to the point of being disorienting. In some ways, humanity feels far ahead, as if it has progressed more than ever. In other ways, the reverse seems obvious: that we’re as primal, tribal, naïve, and degenerate as ever. In one moment, the world today is the pinnacle of cultural, social, moral, and technological progress. In the next, it’s as broken, foolish, and corrupt as any other generation’s.
The computing world is no exception. Programmers today have been offered an opportunity unlike any other in history—at our fingertips are the most technologically advanced devices in history, capable of communicating unfathomably large amounts of data across the world within milliseconds, and generating sophisticated, real-time interactive experiences that update 60, 120, 144, even 240 times per second. Virtually every person carries what would’ve been considered an extraterrestrial-like supercomputer 60 years ago in their backpack, pocket, or on their wrist.
And indeed, with a good approach, computers—from smart watches, to home devices, to phones, to tablets, to laptops, to workstations—could feel like magic supercomputers—nearly instantaneous and seamless—at nearly all times. They could trivially work together in real-time with no centralized server facilitating the process, such that moving data from one trusted machine to another requires no user intervention. They could be simple, easy-to-use, beautiful, and well-designed. They could take advantage of a user’s real-world context, and provide contextually-relevant tools. They could provide transparent, general-purpose computing abilities ubiquitously, providing all sufficiently-interested users the ability to automate, create, search, and organize information. They could offer complete privacy and security. They could allow the user to communicate with whomever they wanted with no oversight.
But so far, programmers have blown this opportunity. Software coasts only on inertia. It’s often mere patchwork, grafted onto old-but-successful ideas generated in decades past. The software industry, broadly, no longer runs on a class of inventors and dedicated craftsman engineers pursuing a labor of love to bring value—things they love—to people; but instead on cushy, bureaucratic, cubicle-filled corporate offices, in which decisions are made by H.R. departments and mediocrities with managerial (and sometimes technical) degrees, and the paramount pursuit is the reanimation of a once-great company’s dead corpse. The magic that spontaneously arose from small, creative teams is long gone—risk is to be minimized; the bottom line is to be maintained.
Following with the software industry’s spiritual death, corporate entities turn not to good-faith, creative endeavors which provide value to their customers—such pursuits are not in the nature of managerial bureaucrats. Instead, they turn to exploitative coercion. To them, users are cattle. Shut up, idiot, and install the update. You’re not allowed to run software of which we don’t approve. No is not an option—this is our computer, not yours.
And make no mistake—programmers are not held hostage by the managerial elite, for their own technical practices have voluntarily followed suit. Indeed, the corporate philosophy has informed the academic philosophy. Programmers are trained in universities to become replaceable, conformist widgets, blindly cooperating with the corporatist’s schedule. As a result, programmers by-and-large are afraid of the machines which they program. They don’t care to know how it works; they don’t care to write new systems from scratch; they have no guts to throw away an old “working” system and begin anew from first principles. They care more about their own comfort than the experience of the user. At its core, modern programming culture is anti-accountability, anti-risk, and anti-creativity.
As a result, the deepest and most integral parts of the dominant computing systems are old, poorly-designed (given the information now easily obtainable), yet irreplaceable to programmers. Building a new operating system, a new code generator, or even a custom file format, or even a file format parser is nuts—you’d basically need to be God to do that! Don’t reinvent the wheel!
It’s easy to look at this situation and become pessimistic. But the only correct—and perhaps the only viable—path, to me, is hope: to identify the problems responsible—at the most fundamental level possible—and improve myself such that I produce alternatives offering a path to a better computing world.
Digital Grove is the name I’m giving to my personal work on alternatives. It will be my best shot at making today’s computers closer to those which I described at the beginning of this post.
The overarching mission I have for Digital Grove is a revitalization of at least a small corner of the computing world. This will come about through media (which I’ve already been producing here), community, and a codebase, with its own body of to-be-announced consumer software (eventually, because I am an employed full-time programmer, and intend to stay as one for the foreseeable future).
The organizing principle for all parts of the project is concrete, not abstract—it is not merely about “software betterment”, because there are uncountably-many valid paths to that, and it doesn’t appropriately encapsulate the true underlying issues. Instead, it’s about “software betterment” as well as cultural betterment, through the Digital Grove codebase and approach.
Importantly, I believe in not just saying, but doing. Communities which have organized themselves around the principle of “software betterment” have come and gone, and I think they largely fail to have any wider impact because they organize themselves around abstract, milquetoast, watered-down principles. Members of those communities will debate about deciding amongst programming languages; whether or not immediate-mode user interfaces are legitimately an improvement over retained-mode user interfaces; whether arenas are a reasonable default approach to memory management, or if they’re merely a useful trick in special circumstances. Indeed, members of those communities may even debate the very definition of the community’s underlying purpose.
Within the Digital Grove project, the answers to such questions are decided and self-evident, to the point that there is a concrete codebase built with the answers to such decisions in mind. This maximizes the ability for followers or participants of the Digital Grove project to learn, collaborate, and communicate more effectively, because there is a larger body of shared understanding, and—naturally—concrete projects from which one can learn, and a concrete codebase with which they can develop a project. In communities without a concrete and well-defined purpose, the shared social fabric is nonexistent, and so it becomes difficult to find likeminded individuals who are even willing to approach “software betterment” or “cultural betterment” in a way complementary to one’s own. The community fragments—it may become a group of friends who enjoy speaking, but that’s all it can ever be, because everyone resorts to their own individual lone-wolf work. This is not to say that other approaches are invalid, nor to say they won’t be effective—they’re just not mine.
I’ve written many posts as part of this project already, and I’ve been lucky enough that some have been extremely helpful to others. I’ve received messages about how such posts have instantly cleared up a number of major roadblocks for people. In every such post—from that on arenas, to those on user interfaces—my perspective while writing was to embrace context, rather than reject context. I did X this way, for these reasons, with theses results—in spite of all of the relevant anti-productive Internet programming debates. This is why I am making Digital Grove a context-driven project. It is not to be a culturally-indifferent project, nor an apolitical project, nor a technically-agnostic project. Computers are important for philosophical, politically-sensitive reasons. We want to concretely preserve and improve them. This is what we mean by improvement. Here are a set of technical ideas, leading to a concrete codebase and set of products, to try to make that happen.
The Digital Grove project’s media initiative has begun with my set of posts here. Parts of the codebase to which I refer is partly available to paid supporters through the Code Depot (as it matures, more will become available). The community mainly exists on the small Discord server, primarily in the portion for paid subscribers (though there is also a public area). In the future, I’ll announce more with regards to other initiatives, some of which I hinted at in this post. For now, if you are likeminded and want to support, join, or participate in the Digital Grove project, please consider subscribing and heading over to the Discord server. If you choose to become a paid subscriber, remember to read this post.
With that, I hope this post was interesting, and made it worth looking forward to the days ahead! Thanks for reading.
-Ryan