1. I didn't like how Firebase is explicitly injected into and referred to in the controllers. I don't want my controllers to be so tightly coupled to Firebase.
2. There was no support for associations. If you want to have object associations, which most non-trivial apps require, you need to manage all that complexity in your controllers using AngularFire. I wanted a solution that handled it implicitly, ala ActiveRecord.
3. I wanted additional features handled for me by the wrapper like timestamps, save/create/delete/init callbacks, collecting resources into stores to be used across controllers, etc.
4. AngularFire leans pretty heavily on Firebase as the place data is stored. I wanted to instead have my data stored in memory and automatically synced to Firebase without me having to worry about it. That way, if I ever switched away from Firebase I don't need to change any of my controller code.
5. Pagination is something that becomes very important as you start to build more complex apps, and it's not the most pleasant thing to deal with in Firebase at present. I wanted a wrapper that managed all those details for me.
Angular and Firebase are a great match, and AngularFire is a good way to get going quickly, but it lacks the features and depth required to make a truly complex application IMO. I had been meaning to throw my wrapper up on Github for a while so I suppose now is as good a time as any:
Examples and tests forthcoming.
I'd note that it is possible to wrap angularFireCollection into its own service if you'd like to keep that stuff out of your controller, for example: https://gist.github.com/jaredwilli/5472340
We went with an API that is easy to get started with, but are certainly committed to making sure its also usable by complex apps.
That been said, in around 2-3 weeks, I've managed to incorporate AngularFire/Firebase into an MVC4 web app (which handles user accounts more securely) and allows Firebase to do what it does best - real-time updates to the users' UI.
All that being said, I am aware that there are shortcomings with AngularFire/Firebase; however, let's face it... simplicity will always result in functionality shortcomings. Personally, I'd rather spend my time painting the canvas as opposed to stretching it myself.
The annotated regions pass thru angularfire as geojson. Put 3 screens side by side. As soon as someone adds an annotation on one of them it pops up instantly on the others. This was < 20 lines of bad-I'm-new-to-angular code. Firebase is cool.
The good thing is that firebase and angular are good enough that I was able to hand-wire things in like 5 lines.
I urge you to give the new version a spin, and I really look forward to your feedback!