Separating UI control from data
As mentioned in #37, the KStars/Ekos build is one large static library. In order to optimize the build duration, one track is to divide that build into smaller steps by the use of intermediate libraries.
Dividing the build into Debug, IndiClient, Fits, OAL, Auxiliary, Ekos, Options, Tools, Extras and KStars shows that UI files are included in nearly all translation units. This makes the dependency tree circular and quite messy. It also allows some direct access to UIs which, while easy to hack quickly, have a serious impact on the maintainability and testability of the project.
Exploration on separating UI (view) from module intelligence (controller) also shows that in terms of MVC methodology, nearly all the values KStars and Ekos manipulate are located in UI gadgets. This makes the data managed by modules very difficult to persist or transfer, sometimes difficult to manage because it depends on presentation, and heavily dependent on the evolution of Qt.