[E 2015 Q&A, Help & Troubleshooting] gameSTICKER:
First of all, thanks for your contributions towards the device and the community, Moto E is an underdog but potent device which can really use a helping hand from enthusiasts like us :)

Stock vs Custom ROMs (CM in my case)

My device originally came with Android 5.0, but by that time CM 12.1 (5.1 based) was already available. The jump from Stock 5.0 to CM 12.1 was NOT very exciting. There was an immediate performance drop at the cost of added features. I moved back and forth between Stock and CM just to realise that CM 12.1 RAM usage was way higher than Stock 5.0 RAM usage. I stuck to CM 12.1 due to the extra features and over time, learnet to live with the performance drop.

A few months back, I thought of giving Stock ROM another try, and by that time Stock 5.1 had arrived. Going back to Stock 5.1, to my surprise, I found that the snappiness of Stock 5.0 was gone. I realised that between 5.0 and 5.1, something fundamental changed at Stock ROM/Kernel level and now the Stock 5.1 RAM usage was equal to CM 12.1 RAM usage. That also explained my initial experience, where CM 12.1 RAM overhead was simply because of AOSP 5.1 changes, and not CM additions. At this point, it was only sensible to stick to CM 12.1 as performance drop from Stock 5.1 was minimal.

Recently I tried Stock 6.0, but IMHO it feels rushed, it exists only for the sake of existing. Moreover, I can not believe Motorola/Lenovo can be serious about the software of their lowest-end nearing-end-of-life phone. They had to release 6.0 only to avoid lawsuits for false update promises (made in advertising and on retail boxes).

A final point: I'd prefer CM over Stock any given day simply because of community involvement in development, testing and bug fixing. Being Open Source and hugely popular, CM bugs are reported and fixed much much faster than AOSP bugs. You might say that AOSP is also Open Source, but it's only one way. You can fork, but they don't accept changes back. Overall, I have HUGE trust in CM community than AOSP/OEMs which are only concerned about making more and more money.

Choosing between various Custom ROMs

Most Custom ROMs are developed only in following 2 ways:

AOSP/CAF based

CM based (which is itself AOSP/CAF based)

Type 1 ROMs simply can not match the community involvement and release frequency of CM. Most ROMs I've seen fade away after 1-2 months of updates/support while CM keeps going forever. I see added features only as extra bits that has to be maintained. Moreover, most of the extra features of Type 1 ROMs are already in CM, or available as Xposed modules, or available as root-supported apps. So these ROMs don't bring anything extra to table.

Type 2 ROMs also fail to match the release frequency and long time updates/support offered by CM. Moreover, the added features are also questionable for the same reasons as stated above.

A valid point for considering any custom ROM except CM would either be totally reskinned ROMs, or the ones which are based on other AOSP forks (MIUI etc.). Personally, I fail to see the point of reskinned ROMs. Once you start installing Play Store Apps, you'll quickly realise that Play Store Apps are based on Material (AOSP) UI guidelines. Hence, you'll end up with a system where user apps looks/behave completely different from System apps. That's too much of an eyesore for me.

Some say that ROM X is much faster that CM, but I'm yet to see such a ROM. Benchmarks aside, I've tried almost all ROMs available in our forums and their real world performance is more of the same. For a ROM X claiming to be faster than CM, I'd be very interested to see which code changes have resulted in such a gain and if so, why they haven't been added to CM already.

---

So that's what I think. Let me know what do you guys think. Thanks for raising such a discussion :)

---------- Post added at 04:21 PM ---------- Previous post was at 04:15 PM ----------

https://download.cyanogenmod.org/?device=surnia only shows last 5 builds, where can I download this one? I'm still on 0324 build :(