I want to build a modern user-agent. for now it's a user agent just for me, automation designed to make my life easier, built using elixir, phoenix, and fairly expensive SQL queries. the full vision, a distributed operating system for my life, could take a decade to complete, a culmination of My Hypergoals, and is best expressed in user-stories which describe a life i want to be able to live. an Arcology.
An arcology aims to be self sustaining, as entropically neutral as it can be compared to the spacetime around it.
in The Water Knife's climate dystopia these toweres recycle their own water, have their own power and food cycles, their own weather. they are oases rising from the dust of a failed Ecology. they are closed-loop systems catering to a closed-loop caste society. they use AI and pervasive surveillance towards both good and bad ends.
in the ideal vision, arcologies are communities. arcologies are designed to minimise the impact of humans on the local ecosystem. they are designed to be efficient, joyful places for humans to live and allow the world to wild just a bit more than it otherwise could, the humans benefitting from a vast frontier with an innate local connection to it, far from the African Safari adventures or the jungles of Bornio we dream of through our televisions or vacations.
the real world is probably somewhere in the middle. we have the climate dystopia, we have the technocratic caste system, we even have the pandemic in COVID-19. We have access to great comfort but the effect of out-sourcing our happiness to cheap algorithms is that the costs of happiness can be manipulated.
The fundamentals are clear: a metadata graph, an object store, a phoenix web application, a set of query semantics, and a scoring system. different applications running on that same set of fundamental pieces, interoperable in general and where made specific. Upon that, I can re-implement this website and a searchable CMS to replace my personal "resume"-style site. I can create quick throwaway pages and upload text or markdown to the web via a simple API.
Upon that, i can build a task management engine, i can set alarms on tasks and build calendars. I can build a smart RSS and News reader and single-click re-share an item via the web, activitypub, twitter, email, or SMS. It's my Pocket and my Mail client, my Twitter and my Trello. It replaces Spotify and wraps youtube. It is social software.
Eventually, federation or replication of the graph database will unlock the ability to have local instances of the application deployed to endpoints. devices communicate over wireguard, database is replicated and files are synced using Syncthing. CAS is layered between a cloud blobstore like B2 or S3, to the local FS, to in-memory object.
Uniform UX across multiple devices, offline. i connect my tablet to the cluster before my plane flight, read my email and feeds, compose and draft replies and shares. upon landing, my shares are synced to the instance which my public web presence runs on, emails and tweets are sent, references are archived. upon arriving at my hotel, i connect my laptop to the cluster and finish those emails and send them.
a current-generation librem5 with custom-built OTAs which have wireguard and Arcology preinstalled, search integrated in to the phone search. icons which opens various subsystems as applications, pointed at a localhost alias
a hardy laptop like a thinkpad t-series or 2013 macbook pro with fedora rpm-ostree (silverblue), configured identically.
an epaper tablet which always has up to date news, articles, and books on it, and can sync annotations bookmarks and progress with the arcology.
a mycroft-equivalent self-hosted voice assistant which can run reports and queries, read the news to me, play music from my library (based on score and scrobbling!)
a web clipping tool which saves directly to arcology, publish a share after adding a note.
an emacs configuration and customizable web-browser which is designed primarily around developing arcology and managing instances of the web-browser.
then a native application can be built. once the BEAM is running locally everywhere, anywhere that we can spawn a window we can start to build a local native application UI written in scenic, coordinating itself and a web-browser using a programmable X-11 window manager off-the-shelf.
self-hosting. the system can build itself. an arcology node is set up which gets objects federated to it that are the code for arcology. Code for arcology is migrated in to the system, code can even be hot-reloaded in a terribly unsafe fashion. client-programming could be done in LFE for the lisp nerds. When the objects are updated by another client and synced to the build node, it synthesizes a build environment for the BEAM application, builds a deployment artifact for it, and shoves it in to os-tree updates for the librem and the thinkpad.
building accessible self-hosted software is incredibly difficult. building accessible power-user software is incredibly difficult.
What is the purpose of an "emacs for the web" to normal people? What about to my family? How does this make the world a better place? What does this software look like when a user has to trust an operator? a model where federation rules can be configured in a pretty reasonable UI, a set of circles which can have certain objects shared with them. If the system is a fully-connected mesh, metadata can be federated directly between "trusted" endpoints, objects federated encrypted to the family server otherwise. must think this through
powerful software can be a productivity tool for professionals, and grow in to personally useful tools. the canonical examples of this are trello, excel spreadsheets, google docs collaboration. but can powerful software grow from solving personal usecases? will someone whose life doesn't revolve around computers learn a query language? is this anachronistic when already people are building social spaces around live stream chats, shared page-template documents and proprietary realtime chat plugins?