It has been a couple of years since I ditched the official Google ROM for my Galaxy Nexus and I thought I’d offer up some thoughts on this. The overall take-away for me is that the FOSS (Free and Open Source Software) community is great!
The last Google supported release for my Galaxy Nexus (Maguro) was Jelly Bean (v4.3). I went to KitKat (v4.4) with CyanogenMod (CM). Later, I noticed that the official maintainer for CM had his own private distribution of Lollipop (v5.1.1) he was calling ZMoD which I liked even better.
TI, the original chip set manufacturer, decided to get out of the business and apparently they have been either releasing or leaking technical details of the old product line which as allowed the open source community to provide better support for these old phones than ever before. A number of pretty talented people have pooled their efforts to build up a generic OMAP4 AOSP base which is being used for both OmniRom and CyanogenMod releases for these phones. But if you are happy with pretty stock Android Open Source Project (AOSP) features, you can just use the generic build.
This build is marvelous in that with better knowledge of the internal workings of the formerly proprietary details, they have been able to reduce the memory that was locked up for dedicated uses. There is now more general purpose memory available than ever before for better performance.
At present I am making my own ROM using the OMAP4 AOSP code base but adding the patches needed to support the microG project’s new GmsCore.
So with a phone which the manufacturer stopped providing releases for years ago, I have been able to keep up with newer operating systems and am currently running the lastest software with the latest security updates. The phone is as or more responsive than it was ever before and with the power optimizations in v6 Marshmallow my battery life, even with the original battery, is better than I ever remember.
Like I said, the FOSS community is great.
The microG project has matured considerably and now has a GmsCore package that implements the most used APIs in Google’s Play Services. This means that many apps that expect things like push notifications and the newer maps APIs to be present on the phone now work properly. It works well enough that there are reports of people using the latest versions of Google’s YouTube and Play Store apps on their phones without actually having Google’s official services. This is big because there are apps you may wish to use that are FOSS and available on places like F-Droid that rely on this part of the Google infrastructure.
Installation may still be a bit fiddly with the several pieces of software that need to be installed but some are packaging them into a ZIP file that can be installed through recovery much the same as gapps is installed for CyanogenMod release.
To pull off the stunt of looking like Google to other apps, GmsCore needs the ROM to support ‘signature faking’. Putting this in a ROM requires one of three things:
- The ROM developer needs to apply a patch (which is why I build my own ROM).
- You use a Xposed module to provide the functionality.
- You patch the ROM after installation using some fancy scripts.
Since the only mainstream ROM which offers this is OmniRom, and most people probably aren’t building their own ROMs, you are probably going to go with option 2 or 3. Still, if you can follow instructions it is not too difficult to do.
As a bonus, many people who have moved from using the official Google Play Services to GmsCore say that their phone is faster and more responsive. Apparently the official Play Services package is a resource hog that can bog down old or slower phones.
GmsCore uses the same plug-in unified Network Location Provider (NLP) as the old UnifiedNLP and the backend plug-ins are available through the normal F-Droid repository.
Again, the FOSS community is great!
Other Bits And Pieces
Of course there is more to Google’s Play Services than just the core map and push notifications. It helps that I’ve run my own mail server since the 1990s and was able to setup a CardDav and CalDav server to keep my calendar and contacts synced. But that is getting easier for people nowadays with projects like OwnCloud,which I don’t actually use. (I use Davical on the server side and DavDroid to sync contact and calendars. And I use SyncThing to share files between my phone and various computers.)
Can I say it again? The FOSS community is great!
cheap frugal, I will run my smartphone as long as it works and can be kept upto date with security fixes. And at this point the phone is actually still pretty much what I would want if I were looking for a new replacement: This physical size is good, it has sufficient speed and storage. About the only thing it is lacking is LTE support which is not a problem yet as most areas I am in have pretty good 3G data (which I only use when traveling anyway, most of the time I am on WiFi).