Comment by derefr

7 years ago

How about, instead of creating applications that are on all levels a compromise between the two, just create applications that work hard to decouple their UIs (view/presentation layer) from their business logic; and then, for each application, write a small touch UI, a large touch UI, and a desktop UI, as separate view layers, all living together in a monorepo.

Or, in other words, do what any third-party app developer who ships apps for iOS+macOS from a single XCode project source does—but build your whole OS like that.

As well, ideally, the view layer would be modular enough that it could be unloaded and reloaded at runtime, such that you'd be able to dock your phone to an external display and have all your running applications switch to their desktop UI view-layers without losing state.

This is precisely why I really like react and redux. There are times I track the window size and use different components to render. The state logic stays the same.

If you are writing an IDE, it seems foolish to spend time on a small touch UI that will be used by almost nobody. If you can't do something well, don't do.