Welcoming Fabric to Google
firebase.googleblog.com
firebase.googleblog.com
It's better because:
Instant crash reporting reduces release time anxiety. iTunes and Google analytics need 24 hour collection period.
Fabric can offer Fastlane and Beta -- Toolkits that help deal with distributing builds to testers and releasing apps. Google has nothing to compete with here.
Whatever way Fabric seem to define active users and sessions they seem to produce more accurate reporting while Google numbers integrated with the exact same app produce higher more ego stroking numbers.
The Fabric app makes the crash stats very easily accessible to all the relevant people. You are one tap away from them on your phone.
With GA it takes so much more effort to navigate your way to the crash stats.
As a result you respond to issues much more quickly and decisively with Crashlytics. At least that was our experience.
For instance, there is no way to see all the data! They only give you the first page of top results. I asked them for pagination and they said it was "technically difficult." Whereas with Google Analytics, I could dive as deep as I wanted into the data. Even when I wanted to isolate a unique, rare event out of thousands.
Plus I could search GA, and correlate different events and properties. Fabric only gave the very basic essential graphs. Which might be great for monitoring a giant app like Twitter, where individual events are just noise, but when you're just getting started with 100-1000 users, you want to see everything those users are doing, especially the outliers.
Fabric is one of the top dev tools I use for iOS. I wonder what kind of change is in store...
> Fabric will join Google's Developer Product Group, working with the Firebase team.
[1] https://news.ycombinator.com/item?id=11913828#11914620 [2] https://news.ycombinator.com/item?id=11937756#11942293 [3] https://news.ycombinator.com/item?id=12784274#12784473
I spent the last few months working on getting iOS Support going in Sentry (sentry.io). Would love to hear feedback. Not only do we provide a hosted solution but it's also 100% Open Source which should give you the confidence that it will continue working for you no matter what happens.
> [...] we expect that Crashlytics will become the main crash reporting offering for Firebase [...]
They will be integrating Crashlytics into their core developer offering, Firebase. Looks like if you are just using Fabric's Crashlytics service you will be ok. But there is more room to worry if you are using some of Fabric's other tools.
We plan to stick with Crashlytics at my company.
[1] https://techcrunch.com/2014/10/21/google-acquires-firebase-t...
[2] https://scotch.io/bar-talk/a-look-at-the-new-firebase-a-powe...
Raygun provides Crash Reporting & Real User Monitoring. Across both mobile, backend and desktop (and all mobile, including Xamarin stacks). Love to have you check it out.
We've been picking up a bunch of customers who have been getting nervous with Twitter being in a bad shape and worrying about Fabric previously.
I'm pretty sure that this was the strategic thinking when started to invest to app developer tools (Crashlytics, Fabric, Digits, MoPub). It's interesting to speculate why they are selling Fabric, is their business model focus moving away from mobile ads?
I don't think Fabric was ever used for Twitter ad targeting just by reading their TOS unlike the Google/FB world and their analytics products but I could be wrong. Seems like a case where Twitter didn't realize the full potential of Crashlytics and Answers.
As an alternative, suggesting Countly (open source) - http://github.com/countly/countly-server - with crash reporting, push notifications and analytics.
Quote from the Fabric blog post https://fabric.io/blog/fabric-joins-google
"Fabric has grown to reach 2.5 billion active mobile devices".
For crash reporting the best alternative I found (superior to Crashlytics IMO) is Sentry[0]. It's been awesome so far and allows you to easily federate crash reporting over multiple platforms. I have no association with the company.
[0]: https://sentry.io/
Twitter clearly decided that dev tools were a non-core part of their business. Meanwhile Google has been investing more heavily in becoming a platform company to compete with AWS, and also increasing their investment in mobile through Firebase.
Google has been building a competitor to fabric crash reporting. 6 months ago it was an MVP, but the version unveiled recently is pretty close to fabric.
I am not sure what they are buying here, it seems that google could sherlock everything that fabric does, especially since fabric is not that great in my experience.
Maybe it just illustrates that I am missing some info on why Google would get in such a buyout
It would be a perfect fit if they phased in Twitter Digits as a Firebase authentication provider - I suspect many developers (including myself) already use these 2 services in tandem.
> During the transition period, Digits, the SMS authentication services, will be maintained by Twitter.
but it's unclear what will happen long term
It says so here: As part of this acquisition Digits will be transitioning to Google over the coming months but will be maintained and operated by Twitter in the interim
(I was an employee 2012–2016)
One of the goals in the roadmap is to move part of Fabric's functionality into another library (Invoke), which does have recent activity and supports Python 3.
> to free developers from so much of the complexity associated with modern software development, giving them back more time and energy to focus on innovation
I was thinking Fabric is a nice tool indeed, but what is the connection, and why they want to add cloud messaging and analytics.
They've just kept the website as-is since being acquired by Twitter and integrated into the larger Twitter products portfolio.
It is confusing at first though.
It strikes me as being about as smart as Sears selling off the Craftsman brand. At least, to me, this feels self-defeating.
However, I'm really not looking forward to the eventual Firebase-ifying/Google-ifying of the UI/design. The Firebase/Google Console interfaces are terrible. Just awful. I cringe thinking about what could happen to the Crashlytics UI.
"By default, your Firebase Analytics data will enhance other Firebase features and Google products. You can control how your Firebase Analytics data is shared in your Firebase settings at any time. Link your AdMob app(s) to Firebase and we'll share your data from the free Firebase Analytics tool with AdMob to improve app monetization and user engagement. You understand that this linkage may also allow AdMob Data to be shared with Firebase for enhanced reporting purposes."
I guess it means something like "Link you Admob account to Firebase" but it sounds kind of scary.
1) Lack of in depth analytics on storage and the database. You give us some vague bandwidth and space metrics which aren't that useful.
2) No way to search, filter, or query the database. The database manager is really only a JSON editor which isn't that useful. I'm guessing this is a consequence of the database API being very limited.
3) Editing rules using a JSON or even Bolt becomes unmaintainable once you reach a certain complexity. Specially if you want to create role based permissions. There should be a UI to manage rules. Even better, there should be a role based permissions system built in.
OTOH, once I started using Firebase console, I felt that Google was taking a step in the right direction. That is, my general impression has been that Firebase's console is easier for me to make sense of and there is less needless complexity/confusion.
One example for me was my general impression with setting up Google Cloud Messaging with the old Google Developer Console (a couple of years ago) and more recently setting up Firebase messaging in the Firebase console. It just seemed easier and smoother to set up Firebase messages. There seemed to be less gotchas and dead ends, for what that's worth.
Anyone recommend alternatives for Crashlytics and Digits?
You can use fastlane on Bitrise.io if you want to, and you can use the Bitrise CLI locally (https://www.bitrise.io/cli), similar to fastlane.
Crashlytics is their killer feature. The rest is mediocre. Hopefully Google will improve it. I'm not holding my breath.
It basically makes it so neither the developer nor the tester ever have to worry about UDIDs ever again. Instead you can send a build to a new tester & trust they can immediately install it.
[Disclaimer, I built that feature at buddybuild]
They said "great adoption" but it was actually forced (my previous company held on as long to the old Firebase as we could), from things to poor naming specs on export, base URL structures changing, the live-view able to handle less data points and a number of other small things, it was a bit of a let down.
Hoping this goes better.
Anything specific you'd like to let us know about? Definitely agree that it hasn't been the smoothest transition--it's super hard to provide 24/7 support to hundreds of thousands of developers. Any feedback you can provide will help us refine that process.
For any serious app, you still need to have a backend server on the side and your Firebase service often becomes bloated and inefficient. Sometimes you want to store the Firebase data inside your main DB as well and so you end up with two sources of truth and Firebase ends up becoming a third wheel to your project (just a bloated data transport layer).
It's not surprising that Firebase has been sliding in terms of popularity: http://www.alexa.com/siteinfo/firebase.com
It's good for rapid prototyping/MVC but not for any serious use case.
I think the big lesson in the framework/devtools space is that the more opinionated the tooling is, the less flexible it becomes and the fewer use cases it covers.
Also, searches for firebase have increased, which indicates more interest: https://www.google.com/trends/explore?date=today%2012-m&q=fi...
Yes of course you need a server for most apps, but I don't see a problem with that. Yes, your app might have data in two places, but it's still the simplest way to build a real-time app. My biz has done it several times and the smallest, simplest code base has been with Firebase. Far fewer moving parts too.
A great example of this is [Firebase Storage](https://firebase.google.com/docs/storage/). We've made the 90% of file upload/download use cases easy, while making the 10% of use cases (lifecycle management, object versioning, advanced processing) [accessible through Cloud](https://firebase.google.com/docs/storage/gcp-integration). Stay tuned for more, similar integrations in the future :)
As for the financial costs--you're paying someone else to build and manage your infrastructure, so yes, it will cost more than buying raw infra. Again, this is a tradeoff: is this more valuable to your product/users to answer pages or build features? Depending on where you are in your product lifecycle, YMMV.
(Disclosure: I work on Firebase)
First, 2-3 orders of magnitude more expensive is quite a steep price to pay for the featureset of Firebase.
Second, it’s only a good idea to use Firebase if you don’t plan on ever migrating away – because that will be hell.
And third, Firebase is a massive engineering effort, and I’m surprised that stuff actually works, considering how much work it is to try and replicate the features I need myself.
On the other hand, somehow I feel like Firebase is just an example of the hell we live in, one of the greatest development tools, and all of it is secret, most not even patented, never will be open or free, and just being used to force developers into a closed ecosystem of Google’s Cloud.
It’d be a lot nicer place if projects like this would be open, so people could use it on their own systems (because I certainly won’t trust a company running systems in a country ruled by Trump).
Check Feathers.js if you want realtime on your own system.
I work on Quasseldroid, an android client for the quassel IRC bouncer, and the idea is that you can always access all messages instantly, while the client only buffers a few of them.
This works quite well, and is easy to do with Feathers.js and others, even Firebase...
...if there wasn’t the issue that the average user is in hundreds of channels and gets tenthousands of messages per hour, in some cases, even thousands of messages a second (if the user is in a channel with > 10k other users, for example, and everyone is chatting – such as during eurovision on Quakenet’s #eurovision).
Although users self-host, so we don’t have infrastructure costs, they usually do so on a raspberry pi – and Feathers.js can’t easily handle thousands of changes per minute to its database while running on a raspberry pi, and accurately sync them to multiple clients.
So how did you/are you solving this?
A huge performance boost (reconnection times down from ~2 minutes to ~12 seconds on 64kbps 2G network, using a Nexus 5X) could be accomplished by using Java NIO with non-copying IO for parsing the custom binary protocol, but we’re looking into using flat protobufs for improving performance further.
But then the database layer becomes the bottleneck. SQLite is far too slow to be normally usable, most users use PostgreSQL for the backing database.
Basically, the trick is in "don’t use JSON and JS, do stuff with native code and binary protocols to reduce overhead".
But this makes maintenance basically impossible, and isn’t really ideal either.
DISCLAIMER: I do not speak for the Quassel project, all opinions represented here are solely my own.
I think Firebase is pretty amazing. Have been a fan since I met some of the team (I think it was at the 2011 Launch conference). Like anything, though, there are tradeoffs.
Briefly, I'd say that there's overlap, with Couchbase Mobile tending to shine toward the more complex end (including making the 10% much easier), and also being extremely easy to use as a substitute for SQLite/Core.
(I work for Couchbase.)
That’s likely going to become an issue with my usecase – even currently while using a custom binary format on the net, and decoding with Java NIO, we’re seeing ~80-90% CPU utilization on latest Android phones for ~4-5 seconds during connection to sync the latest tenthousands to hundredthousands of messages.
I doubt using Strings, and specifically JSON, will make that more performant.
(But I’ll definitely look into your code as inspiration for how to continue)
That's not what we have experienced while using Firebase for the last year.
I have no complaints about storage, but the database is so limited that most projects will become impractical or simply impossible for a number of reasons:
1) No remotely decent querying capabilities
2) No search capabilities other than building your own or relying on third party like Elastic
3) No way to reference data, make joins, etc, like Rethink, Mongo, Arango, or others have.
I'd say the vast majority of projects will need one or more of those points which really doesn't fit into your statement.