Andrew Reece
02/18/2021, 3:56 PMNick Smith
02/19/2021, 1:23 AMOk, so my conclusion after reading the 18 page Infra paper (a condensation of the thesis): there is nothing I can learn/steal from Infra. It doesn't seem to have many new innovations: it's a mishmash of a structured editor, binary format, and programming-by-example system, all of which have traditionally been addressed as separate research areas. It doesn't make a substantial contribution in any of those areas, IMO.
Andrew Reece
02/19/2021, 12:40 PMall of which have traditionally been addressed as separate research areasThis jarred for me slightly: siloed research presumably has some benefits for investigating orthogonal concepts, but surely at some point the lessons need to be synthesized for real-world use-cases. In order to have a structured editor or programming-by-example system you need to have some format, and a binary format with the above-described benefits doesn't seem like a bad choice. (I'm open to being corrected here btw)
Andrew Reece
02/19/2021, 12:53 PMVijay Chakravarthy
02/19/2021, 3:21 PMNick Smith
02/20/2021, 12:05 AMIn order to have a structured editor or programming-by-example system you need to have some format, and a binary format with the above-described benefits doesn't seem like a bad choice.A structured editor (by definition) presents and allows manipulation of the abstract structure of a document (usually, we talk about ASTs). An abstract structure is a format for a human to consume. This is orthogonal to a serialization ("binary") format, which is a format for hardware to consume. A binary format's only purpose is to instruct the computer how to encode data in its transistors, capacitors, electrons and photons. Only low-level engineers (ideally: OS engineers) need to concern themselves with binary formats, and that's why I consider them orthogonal to structured editing. My conclusion: they are best researched separately. If you are making a product, aimed at allowing low-level engineers to manipulate binary formats using structured editors, then that's all well-and-good, but it's not research unless you're doing HCI. (I'd extend my argument to include programming-by-example but this is getting quite wordy.)
Garth Goldwater
02/20/2021, 1:44 AMGarth Goldwater
02/20/2021, 1:45 AMGarth Goldwater
02/20/2021, 1:49 AMGarth Goldwater
02/20/2021, 1:49 AMGarth Goldwater
02/20/2021, 1:50 AMAndrew Reece
02/21/2021, 10:38 PMI agree, if you're looking at Infra as a product, then you might determine it has practical utility. However, I'm only interested in Infra as a research artifact, and from that perspective I personally don't find it very interesting.👍
i’m definitely on the “infra is an important piece of work from a research perspective” sidere: how novel Infra is from a research perspective: I don't really consider myself versed enough in the current research landscape to have an informed opinion.
An abstract structure is a format for a human to consume. This is orthogonal to a serialization ("binary") format, which is a format for hardware to consumeI would partially disagree. I would suggest that they are correlated insofar as you need the binary format to be capable of (efficiently) representing the concepts invoked by the abstract structure. You need to be able to map your intent into something the machine can actually do, and the strength of this mapping matters.
Only low-level engineers (ideally: OS engineers) need to concern themselves with binary formatsThis requires there to be a better higher-level format that other people can work with instead. This seems to be what Infra is aiming to provide.
If you are making a product, aimed at allowing low-level engineers to manipulate binary formats using structured editors then that's all well-and-goodI wouldn't describe either the format or the editor (or the use of either) that way. If you're referring to the editor as the product, I would describe it as aimed at allowing users of a variety of proficiency-levels to view & describe their data in a structured way. The format is the same, but for allowing programmers to create programs that users in turn use to create & browse this structured data. I can't tell if we disagree on the significance of binary formats in general. As I see it, everything on a computer is based on a binary format plus some layers of abstraction/indirection/meaning, so at some level Infra has to be represented in binary. All other things being equal (which of course they tend not to be! 😛), fewer layers is normally better.
binary format is just the logical bottom☝️
Andrew Reece
02/21/2021, 10:54 PMwould love to talk to him if he’s availableI'll let you know if he responds to the email I sent
Andrew Reece
02/21/2021, 11:17 PMI’m seeing a lot of parallels between this and what we are working on
i’m implementing something adjacentAwesome! Links please 😄
Andrew Reece
02/21/2021, 11:19 PMNick Smith
02/22/2021, 1:34 AM[Abstracting over binary formats] requires there to be a better higher-level format that other people can work with instead. This seems to be what Infra is aiming to provide.Infra doesn't achieve this abstraction. It allows you to define "unallocated memory regions" in your data structure to enable more efficient modification of the serialized data. In other words, users will still be thinking about the serialization process -- it's not managed by the OS. That's why I describe it as "a structured editor for manipulating binary formats".
As I see it, everything on a computer is based on a binary format plus some layers of abstraction/indirection/meaning, so at some level Infra has to be represented in binary.Everything on a computer is based on silicon wafers doped with boron and arsenic. We don't need to think about that when we're manipulating data, and we shouldn't need to think about binary formats either -- serialization to binary should be handled by the OS. The only exceptions are when you're doing very low-level software engineering like developing a cryptosystem, a compression format, or a network protocol. Infra can try to be an OS, or it can try to be a data editor, but it should clearly delineate those goals (keeping them as separate layers), or it won't do well at either. At the moment it's asking users to think about binary formats whilst they edit their data.
Andrew Reece
02/23/2021, 7:37 PMunallocated memory regionsWithout creating a new OS, AFAIU the "file" abstraction assumes/requires a single linear block of space. Given that constraint, the option of having blank sections is a useful concession to performance. Hall mentions conceptual layers for Infra in his dissertation (attached image), although I don't think he does in the Onward! paper. The free sections are only significant at the encoding layer, which end users aren't intended to interact with. The tree & graph layers are more abstract.
Andrew Reece
02/23/2021, 7:38 PMNick Smith
02/23/2021, 9:58 PMNick Smith
02/23/2021, 9:59 PMNick Smith
02/23/2021, 10:09 PMWithout creating a new OS, AFAIU the "file" abstraction assumes/requires a single linear block of spaceThe file abstraction needs to burn and die 🙂 That can happen either at the OS level, or via a "pseudo-OS" that sits on top (ala Smalltalk, or web browsers, both of which can be considered OS's).
Andrew Reece
02/24/2021, 5:20 PMThe file abstraction needs to burn and die 🙂haha that could indeed be the solution re layers, yeah I think he's just distinguishing between logical structure & "physical" file layout. I agree it would benefit from some more exposition around this. It's also a little frustrating that a number of the pages on the website that should be describing the format have no content...
Andrew Reece
02/24/2021, 9:33 PM