I would be a little cautious with this one due to the CAF code that has been added which has created problems in a number of situations. Since I am pretty sure someone is about to ask what CAF is here is the little I know. Feel free to add to the information or to skip it altogether. CAF is code that isn't in AOSP
. It is from [url="https://www.codeaurora.org/"]Code Aurora
[/url]. CM was originally basing their kernels on AOSP, which made it easier for developers to create kernels for ROMs. Now that CM has switched to CAF things are not as transparent and a number of problems have been reported.
CAF is Qualcomm's open source branch.
CAF's kernel sources are 100% open as required by GPL. Their libraries, however, are under Apache which means you can use them as you see fit, but not all are open (some are strictly proprietary lib files).
For ALL NON-Nexus Qualcomm devices, CAF's kernel + libraries will be the closest to AOSP experience (Even Google's AOSP still depends heavily on these proprietary libraries from various vendors including Qualcom/CAF).
Qualcomm often creates a separate, less optimized version of their proprietary libraries for Google to use on Nexus devices.
Okay, so as you can see there are two distinct branches of libraries, AOSP and CAF versions. Although both were created by CAF there exist some differences between the two. These differences are what creates bugs when someone tries to mix and match libraries and kernel sources.
CM has decided to ditch the less optimized libraries (often considered stock Google, though this is not entirely correct) and opted for CAF's own libraries for the Nexus 7 2013. This created a massive headache for many novice users and developers. If you load an AOSP kernel on a CM ROM, you now have a mismatching kernel / library combination which led to video glitches
and broken Slimport on the Nexus 7 2013.
It looks like for the Nexus 4, CM is slowly doing the same thing by replacing the AOSP libraries with CAF versions. Over time, the AOSP kernel will no longer be 100% compatible with CAF based ROMs. Moving towards using CAF libraries on Nexus devices creates unnecessary (in my opinion) fragmentation and incompatibilities within a Nexus device family!
Also, I don't know anything about the legality of using CAF libraries. Basically, if you build a ROM based on it, you are, I suppose, redistributing the Qualcomm proprietary modules and Qualcomm has very strict redistribution rules on their binaries (basically they need to grant you explicit permissions) where as AOSP is less stringent than Qualcomm. Whenever you deal with proprietary libraries in general, you are in the gray area of legality and you have to tread very carefully. This legal issue was what kept Google from releasing the Nexus 7 2013 factory images for a while, if you recall that little mess. This is also one of the primary reasons that eventually led to JBQ leaving Google
if I understand it correctly.
As I said, I do not know all the issues and concerns but would advise caution, especially for ROM and kernel developers.