- binary metaformat,
- structure editor,
- programming language,
- Text-Field UI widgets.
- scripting languages.
- HTML / The DOM.
- Web Browsers.
- Web servers.
- textual transfer formats.
- Text Editors.
- binary transfer formats.
- visual debuggers.
- compression formats.
- runtime memory heaps.
- command-line shells.
- File Browsers.
Infra is Binary-Encoded and Human-Readable
Before Infra, developers had to either choose a human-readable format for their data, and forgo processing simplicity and efficiency, or choose a binary format and forgo human readability. With Infra, developers can have both.
Infra's encoding is more compact than Protocol Buffers, yet directly authorable like JSON. Analogous to the fact that Text Editors are necessary to view and edit purely-textual formats, Infra is edited using a new type of freeform editor. This new kind of editor can closely resemble Text Editors under basic use cases, and resemble Web Browsers, spreadsheets, or IDEs under richer use cases.
With first-class recursive metadata, any element can be given arbitrary amounts of context or qualification. This can include providing IDs to support referencing values by name, style markup to assist presentation in an editor, or schema/type info to constrain or validate data.
Because Infra-encoded information can include regions of unallocated memory, individual edits to a large file can be performed in constant time, without always needing to shift memory to make room or to close the gap. Infra can even serve as the encoding for a runtime's dynamic memory heap / free list.
This refers to Infra's Patch concept. Fully-general information structures can be encoded. The computational quality of Infra's reference model enables any portion of data to be derived or dynamic. Infra's effect system allows untrusted Patches to have access to general computation without having to also allow them to alter the state of the system.
The Big Picture
There have been three revolutions in the fundamental building-blocks of end-user media throughout computing history: the intermediate representation of text, rooting interaction in graphical user-interfaces, and the platform-independent interactive documents of The Web.
|1940s - Wires||1960s - Text||1980s - GUIs||1990s - Web DOM|
Each of the resulting modalities are critical to computing, but exist in different frames of reference. Now, Infra aims to address the incompleteness of each and the complexities of their interrelations, by providing a unified medium going forward. Infra brings software's capacity for structure and abstraction to the end-user realm of text, while bringing text's malleability and transparency to the realm of user interfaces.
In the long term, a capacity for structure, metadata, and computation can become an ambient part of everyday computer usage. This would allow any routine interaction with software to spontaneously become a springboard for curious and resourceful end-users to acquire, or apply, advanced programming literacies.
Infra was presented at SPLASH 2017 in Vancouver, October 22-27 (ACM SIGPLAN conference on Systems, Programming, Languages, and Applications: Software for Humanity). Early concepts for Infra were first presented at OOPSLA's doctoral symposium in 2014 and received the John Vlissides grant. An early prototype first appeared at SPLASH's Future Programming workshop in 2015. This year, a full overview will be included as part of Onward! Papers.
About the Author
Infra was developed as part of Christopher Hall's PhD thesis at the University of California, Santa Barbara.