Software development is currently a privilege enjoyed by a small minority of people. For the rest, using a computer or phone translates to using prefabricated experiences created by developers, with little hope for modification. The ability to shape the software you use or create new software from scratch is for most people indistinguishable from magic.
But there is no fundamental reason for software development to be a privilege enjoyed by few. It is merely a failure of design: languages and technologies that are overly complex, opaque, brittle, designed by and for experts, with little regard for the needs and mental models of novices.
Mavo aims to be one step towards demystifying this magic, and to add to the small but growing literature of programming languages and systems designed with HCI principles and methods.
This thesis has presented Mavo, a suite of languages and systems that reduce the barriers novices face today in managing, storing, sharing, and transforming data on the Web, and to facilitate web authoring practices that favor transparency and decentralization.
Mavo consists of three components, which are separate contributions: Mavo HTML, a declarative HTML extension for specifying data-driven web applications; Formula2, a new formula language for operating on hierarchical data in aggregate; and Madata, a decentralized protocol and client library to reduce the complexities of remote data storage down to a single URL and a unified API.
The three components work together synergistically to enable end-users to create high-fidelity web applications with minimal effort. They have been designed with the design principles that made the Web successful in mind: smooth ease-of-use to power curve, and fault-tolerance. The Lifesheets experiment hints that paired with a visual interface, these concepts can become even more powerful and far-reaching.
Taken together, these languages and systems offer new ways of thinking about building and editing software on the Web, and the full potential of these ideas remains to be explored.