Software has been in crisis since its beginning. Software is unreliable, slow and clunky, both for users and programmers, and has been since its beginning.
Our biggest moral failing as an industry is that we have favoured software engineering approaches that suit our highly trained priesthood, rather than ones that democratise computing. Where are all the bicycles for the mind?
The reasons for all this are cultural and economic, not technological. Folks have been developing better ways of writing software since the beginning, but as an industry, we have adopted them at a glacial pace.
FREST is a punk architecture. It rejects the culture and economics that produced the crisis, in favour of a radically simpler way.
For the user, it means access to computing without having to go wallet in hand humbly to the engineering priesthood. Regular folk will be able to tie together the working abstractions programmers employ ever day, simply and directly. Much as the spreadsheet democratised functional programming, and Access and FileMaker freed ordinary folks to employ relations, FREST is a general architecture for presenting abstractions in a GUI.
For the programmer, the tedium that is the day to day of programming work will fade away. Most of that tedium is replaced by the direct manipulation of abstractions. No more hand-rolling HTML. Much less writing code to adapt this library to that library.
FREST selects the most productive programming abstractions, and supports manipulating them at a very high level, both through code and through a GUI. Manipulating data and its user interface also en passant constructs an API. In FREST, the API and the user interface are two sides of the same thing.
On this substack, I will write short pieces that explain the various parts of this vision:
analysis of the cultural and economic issues that have led us astray;
identification of the dead ends and failures that software perpetuates that should be discarded;
identification of the technologies that get it right, that form the foundation of FREST; and
the design of FREST, from its user interface to the engineering approaches that make it possible.