We consider simplicity an objective measurement: Minimal complexity. Easy and hard are relative terms (e.g. German might be easy for you and hard for me). We derive this standpoint both from our collective experience and from Rich Hickey's wonderful expression of it in his talk Simple Made Easy. Hard is something you can address on a personal or team level through training and time. Complexity is, well, complex! Looking at problems from different angles can often reveal simplifications, but eventually you'll arrive at the simplest possible solution (yet found). To us, hard is about the ability to reason. It is about not knowing what happens because of out-of-order execution. It is about having to write and understand dependency injection for every artifact in a system. It's about work and thought that just gets in the way of solving your problem.

Untangled Core Concepts

Untangled leverages a lot of things that were pioneered in Om 1.0 by David Nolen, and adds its own layers of simplification and opinion. The things you need to understand in order to build a simple application are:

The client database format

How UI queries work

Basic mutations/transactions that update the database

It's that simple! Om deals with the rendering story. You model your data in a very simple-to-understand graph database format, write some queries and mutations, and you're well on your way to done!

Om keeps the UI up-to-date (with some nicely abstracted help from you). Untangled adds in the networking, testing, unhappy path considerations, temporary ID handling, predictable server data merging, sequential semantics, i18n, and more.

Extending that to a server requires you know almost nothing new! The same code structure for mutation is used there, with very slight augmentation for dealing with temporary IDs. The one additional server requirement is that you learn how to handle data queries from Om.