An idea that may or may not be terrible, written down so I can get it out of my head and into someone who can do something about it.

What if we started from scratch with code represented as graphs, not text?

https://functional.computer/blog/starting-from-scratch

Starting from scratch / Ideas for free  ❤︎  samir : coffee → nonsense

@samir I don't think this proposal is a stable point in a design space — as long as medium and short term storage and communication protocols are both oriented around sequences of bytes, I'd posit that something like a text editor is going to be the most stable way to ensure that data is interpretable by humans in different systems.

also, the system you imagine is almost certainly best prototyped as "encode the graphs as pick-your-own-serialization-format and encode the graph that way."

@simrob I think you’re right. Perhaps making a typed graph transfer format/protocol would be a better starting point!

@samir @simrob yes so

this is where we went with our version of it also

which brings you back to the self-describing data problem. the challenge there is that essentially the same thing keeps getting reinvented every five to ten years with superficial changes, which suggests to us that it's solving the wrong problem. we think the right problem is schema formats, the part everyone punts on

@samir @simrob so we specced out a binary schema format for dependently typed object graphs

(it's binary to keep people from having feelings about its unfashionable whitespace and punctuation, once it's no longer new)

@samir @simrob (and it's dependently typed because we've evaluated a lot of schema formats, and basically everyone wants to add idiom features on a case by case basis hoping to keep it small while still meeting everyone's needs, and they universally fail to do either of those things, so we'd rather go straight to Turing-completeness in a deliberate way rather than an accidental one)
@samir @simrob (this means that a schema instance is potentially dangerous and must be subject to trust relationships; we envision them someday being managed by Linux distributions and other heterogenous free-software package sets)
@samir @simrob (notice that it being a schema format that can describe arbitrary binary formats, rather than having a preferred data format, means it can also do adversarial interoperability with every existing data format. and with every existing schema format.)

@ireneista @simrob There is so much right about this that I don't know where to start.

The only worry I have is that it sounds hard for someone else to create a competing implementation, and I think that we need more of that from our protocols (and our compilers).

Regardless, if you ever get the time and energy to write it up, I would really love to read more about it!

@samir @simrob oh wow, thank you so much! that is really great to hear!

agreed about the importance of multiple implementations, and that's why it's a spec first and foremost

(but at present it's a spec that's only readable to us, so, that's unfortunate)

@samir @simrob we'd very much want to publish it as a full-on annotated source code thing. we think it can be made relatively small