Many software developers think that it is much easier to build command line tools than GUI apps, or even text-user interface (TUI) apps. Here's an interesting thought experiment. In data-centric apps, much of the complexity of building and modifying the app comes from managing and propagating state. ITunes is a representative example of a data-centric app. We think that there are millions of these “data-centric” apps that don’t exist because they are too hard to build relative to the size of their audience. However, the conceptual simplicity of the UI doesn’t mean that the app is actually easy to build. The core user interface is simple: it manages a music collection and displays a variety of custom views organized by various properties like the album, artist, or genre. We think that it should be possible to make app development radically more accessible to experts and novices alike. Skilled technical computer users, including scientists and systems programmers, struggle to make simple apps, while less technical end-users are disempowered entirely. Today, building interactive apps is so hard that it’s a specialized skill even among software developers. While we’ve only scratched the surface so far, we think that a framework based on these ideas would be both possible to build and radically simpler to use. We sketch a vision for thinking of every layer of an app, from the event log to the pixels on the screen, as pieces of a single large query.įurthermore, we believe that the key components for building such a system already exist, in tools developed for incremental view maintenance and fine-grained provenance tracking. Together, our ideas and experiments suggest that we could take this frame even further. We’ve also learned hard lessons about the limitations of SQL and the performance challenges of the web platform. We’ve learned a lot from trying to apply our big vision to a real app this essay shares some of what we’ve learned and where we want to take the project next.Įven in our limited prototype, we’ve found thinking of apps as queries to be a powerful frame, opening up new approaches to debugging, persistence, and cross-app interoperability. Instead of imperatively fetching data from the database, the user writes reactive queries that update with fresh results whenever their dependencies change.Īs an initial prototype, we have built a reactive layer around SQLite that populates data in a React app, and used it to build a music library app. We’re exploring a new way to manage data in apps by storing all app state-including the state of the UI-in a single reactive database. We think that a lot of what makes app development hard is managing state: reacting and propagating changes as the user takes actions. Even skilled programmers who don’t specialize in app development struggle to build simple interactive tools.
0 Comments
Leave a Reply. |