One more clarification about the motivation.
Most end-user systems and programming models are still shaped by a
personal-computing assumption: one user, one machine, one isolated
environment.
It is normal for one individual nowadays to operate across 3 to 5 computers and
devices (for example a laptop, phone, tablet, and nearby or embedded
machines), and in many real situations several people and many computers
coexist in the same physical and social space. Computing is increasingly situated, shared and continuous,
rather than isolated.
At the same time, software built around personal computing makes it
cumbersome to actually use this abundance of devices and computers
together, or to let them meaningfully participate in the space and
situation we are physically inside in an infrastructural level.
What I am interested in is this question:
what would it look like if we built a programming language that provides a
single, shared and persistent environment across multiple peers?
Therefore this is an attempt to build such an environment as an infrastructure, and
to use it as a foundation for experimenting with different ways of
building, sharing and coordinating software in multi-device and social
settings.
Sounds like a great motivation; and aligns very much with what I did for my master thesis geertroumen.nl/portfolio/index.php?page=action bringing devices people data and things together in the physical environment. I'm curious what your thoughts are on making the actual writing of the software also more multi-dimensional. In the example you showed it still remains typing in terminals; which is very individual and single device (even though the actions might connect to other devices).
📝 Arduino Action
A collaborative tool for physical computing in education
Nice — I really liked your master thesis. I think it opens a very interesting angle on personal computation, especially how people, devices, data and physical situations become one shared computational environment. That connects very directly to what I’m trying to do.
Just to clarify one small detail about the demo video:
it is actually three independent peers, each running its own local instance and synchronised via Gun. It can scale to many peers in a LAN or across multiple devices. I only showed it on one machine because it’s much easier to demonstrate in a short video.
About your question on making the writing of software more multi-dimensional — that is exactly where my current focus is.
The terminal is only a temporary surface. What I’m really working on is the semantic layer.
In the same way that map / filter / reduce gave us a language to think about data transformation, and high-level languages let us describe computation without thinking about machine details, my goal is to build a higher-level language to describe distributed / decentralised computation itself — things like partial information, multi-directional dependencies, and cross-peer synchronisation as first-class concepts.
My hope is that once this layer is solid, genuinely multi-dimensional authoring interfaces (spatial, relational, multi-view) can grow naturally on top of it.