A dynamic medium heavily inspired by the work over at Dynamicland.
You will have to forgive the odd naming, I enjoy names that make you imagine and thinking of this project as a new kind of air with a choir of harmonizing voices is just the kind of flavour I need.
Aether will function as a sort of live database, programs can connect to tell the aether about the world and in what ways it would wish the world to be different. In exchange the aether tells the programs what they want to know. The end goal is that some of these programs will fulfill wishes, and the collection of these programs can solve more complex problems.
During initial development most of these programs will be entirely contained on the computer, but the goal is to have them live more in the physical world. Like the paper in dynamicland.
The other key here is that eventually this system needs to become more that some black box written by a computer scribe (or programmer if you prefer). I want people to be able to pick this up and make it their own, without having to study programming for years first.
Right now I just want to focus on getting the basic structure, and that centers on 2 things:
The programs need to be able to communicate in some standard and flexible manner. A balance must be found between the complete rigidness of an API and the infinite complexity of understanding arbitrary input.
This will undergo A LOT of iteration, I am by no means an expert here and will be figuring this our for a while. I am to achieve this flexibility through the simplicity of what is being communicated. such that more complex communication can emerge from the creation of collaborating programs for a specific use case.
Bards are programs that interact with some aspect, a file bard can tell you about and modify a filesystem for instance. A video bard would Handle anything with the gpu potentially. See the readmes of the individual bards for more information.
We should try write logic declaratively where possible. A state of claims and wishes should dictate much of the more complicated compositions leaving only the messy ends as imperative. This isn't a rule, just a suggestion to practice programming this way and make the transition easier later on. This experience will also be invaluable when it comes to designing the language for the Aether.