---
title: Open Sourcing Tropos, Our iOS Weather App
teaser: We launched Tropos back in March. Today, we're making it available as an open
  source project.
tags: news,ios,open source,tropos
author: Gordon Fontenot
published_on: 2015-06-22
---

[Back in March][tropos-announcement], we announced the release of our weather
app for humans, [Tropos]. Today, we're excited to announce that we're making
the source code [available on GitHub][github].

[tropos-announcement]: https://thoughtbot.com/blog/tropos-phrase-based-weather-conditions
[Tropos]: http://troposweather.com/
[github]: https://github.com/thoughtbot/Tropos

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][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.

[refresh-control]: https://github.com/thoughtbot/Tropos/blob/master/Tropos/Sources/Views/TRRefreshControl.m
[ReactiveCocoa]: https://github.com/ReactiveCocoa/ReactiveCocoa
[MVVM]: https://en.wikipedia.org/wiki/Model_View_ViewModel
[MVC]: https://en.wikipedia.org/wiki/Model%E2%80%93view%E2%80%93controller

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.

[Runes]: https://github.com/thoughtbot/Runes
[Argo]: https://github.com/thoughtbot/Argo

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][trello], which we're also making publicly viewable today.

[trello]: https://trello.com/b/lHTGvUOA/tropos

[Download][Tropos] or [check out][github] Tropos today!
