Nimbus is an iOS framework whose feature set grows only as fast as its documentation.
By focusing on documentation first and features second, Nimbus hopes to be a framework that accelerates the development process of any application by being easy to use and simple to understand.
- Start by exploring the "Getting Started" example applications.
- Follow Nimbus' development through its version history.
- See the latest API diffs.
- Read the Three20 Migration Guide.
Nimbus has been built with much inspiration from the Three20 framework. That being said, there are a number of fundamental problems with Three20 that Nimbus works very hard to avoid. Among them:
- Poor documentation.
- Spaghetti dependencies.
- Suffering from a "kitchen sink" complex.
- A complex build structure.
- An enormous number of difficult-to-solve bugs.
- Next-to-zero test coverage.
For its weaknesses, Three20 does provide a good deal of value through its feature set. It is used in over 100 apps in the app store by companies such as Facebook, LinkedIn, Posterous, Meetup, and SCVNGR.
Nimbus hopes to one day provide as much value as Three20 does on a feature-by-feature comparison, but with the invaluable benefit of sublime documentation and test coverage.
Nimbus' Development Roadmap
I'm a strong believer in shipping early, shipping fast, and shipping often. Any other way of being genuinely frustrates me so I hope to apply this to Nimbus.
I plan to tackle Nimbus by first building a strong foundation in the Nimbus Core. From there I will branch out and tackle migrating a variety of features over from Three20. Some features on my immediate horizon in increasing order of difficulty:
- The Launcher (done!)
- Network images (done!)
- TTNavigator (in progress)
I will use a MAJOR.MINOR.INCREMENTAL versioning system.
Major version numbers will be reserved for major milestones in the project (completing a large set of features, for example).
Minor version numbers will be reserved for minor milestones in the project (completing a small set of features, for example).
Incremental version numbers will be reserved for stable cuts of Nimbus after individual tasks are completed (fully implementing the Launcher, for example).
I'd like to treat the incremental version number like points from a video game. Finishing an individual task will increase the score for a particular major release, so version 1.130.2 indicates "the first major release of Nimbus, 130 tasks tackled, and 2 incremental builds for bugfixes and daily progress since the 130th task was finished". Perhaps there may be some merit in allowing people who complete tasks to earn these points in some sense as well to encourage some friendly competition.
Who's working on Nimbus?
Nimbus was started by me (Jeff Verkoeyen) in June of 2011. My background includes over 10 years of software development and experience at Google and Facebook designing software and building user interfaces. I took over the Three20 project in 2009 after its original creator, Joe Hewitt, moved on to other projects. Over the proceeding 6 months much time was invested in splitting the framework apart and attempting to clobber its spaghetti dependencies while improving the project's documentation.
In early May of 2010, my life was completely shaken up: my mother suddenly passed away at age 42 due to a pulmonary embolism. This is relevant because for the following year I checked out of life and, as a direct result, little progress was made with Three20. Over the last year I've found that shedding baggage is not only an emotionally satisfying process, but also a necessary one. So I am shedding Three20's baggage and out of the remaining bits building Nimbus. I learned a great deal from working with an open source project and community and sincerely hope to carry much of this knowledge over to Nimbus.
What's happening to Three20?
My goal with Nimbus is to eventually provide a feature set that overlaps Three20's. I sincerely hope to make it easy for anyone using Three20 to transition to Nimbus. In the meantime, Three20 will likely stay in a bug-fixing state. The library is stable as it stands so I have every bit of confidence in the community to tackle any bugs as necessary.