There are a few interesting things about the application that make it worthwhile to open source:
- The app is using ReactiveCocoa extensively, and so has very little actual state. For example, the pull to refresh control is able to make heavy use of RAC to avoid needing to track any internal view state.
- The app is using an MVVM architecture, instead of the usual MVC architecture found in most iOS apps. We believe this architecture works well with RAC, and allows us to test the application without having to dig into the view layer.
Going forward, we’re going to be making some changes to the app that should be interesting to watch:
- We’d like to start moving the app over to Swift. This will end up being an opportunity to play with Swift to Objective-C interop, and will also allow us to take advantage of some of our other open source libraries such as Runes and Argo.
- After we’re updated to Swift, we can update the app to ReactiveCocoa 3.0. Using 3.0 should be able to greatly improve the readability of the RAC code, due to Swift’s superior type system.
We’re also looking into adding features like a WatchKit extension, background refreshing, and others. If you want to follow along with the planning and discussion about these features, you can check out the Tropos Trello board, which we’re also making publicly viewable today.