The Tool Chains Project

October 1st 2023

The Problem

Projects that try to build new ways of programming often seem to run into a series of nasty legacy dependencies and arcane details of our computing architecture. Because of this it often feels more productive to give up the search for better a system and just "get something done" with the system that already exists.

If you try to build a new foundation for programming you have two big problems to solve.

First you need to choose an architecture for the new programming. The architecture you choose is like a location in a space of possible architectures. In such a project, if you succeed, the new architecture will become your new context. So choosing an architecture is like choosing the place in architecture space where you want to live.

Second you need a plan for how to get to that point in architecture space from your current starting place. Those nasty legacy dependencies and arcane details that show up to stifle new ways of programming are precisely a failure to have a full plan for traveling through architecture space. Any project which fails to solve this problem never finds out what it would be like to live at the new point in architecture space at all.

This Project

The goal of the tool chains project is to speed up the search for a new home in architecture space.

The first part of the tool chains project is to study and bring to light every aspect of the tool chains we currently rely on for producing software at it's most foundational level. This includes understanding the encoding of programs as source code, object files, and executable files, and the tools that helps us to inspect and edit programs such as text editors, version control, compilers, linkers, debuggers, and operating systems. Essentially, the plan for this part is to gather and organize information that will help with solving the "second" problem.

The second step of the tool chains project is to develop greater mobility for exploring the space of architectures. If it is possible to create greater mobility in architecture space, it would mean explorers could visit more points in architecture space. This means developing techniques and tools that can be applied to solve the "second" problem.

As a major project, this project will include many smaller pieces, likely including development videos, video essays, articles, software, and other reference materials.