Originally Posted by MikeEx
let's see If I can get this right...
Our phone is a bit confusing because the developers couldn't agree on one name.
The official names from the stock ROM build.prop:
Just before Team CodeFire unlocked the many Optimus G variants, the first new name the they came up with for our device was "geebus".
And then many names followed...
Example from CM11 updater script:
assert(getprop("ro.product.device") == "geebus" || getprop("ro.build.product") == "geebus" ||
getprop("ro.product.device") == "geebusc" || getprop("ro.build.product") == "geebusc" ||
getprop("ro.product.device") == "geehrc" || getprop("ro.build.product") == "geehrc" ||
getprop("ro.product.device") == "geehrc4g" || getprop("ro.build.product") == "geehrc4g" ||
getprop("ro.product.device") == "gee_sp" || getprop("ro.build.product") == "gee_sp" ||
getprop("ro.product.device") == "geehrc_sp" || getprop("ro.build.product") == "geehrc_sp" ||
getprop("ro.product.device") == "geehrc4g_spr_us" || getprop("ro.build.product") == "geehrc4g_spr_us" ||
getprop("ro.product.device") == "ls970" || getprop("ro.build.product") == "ls970" ||
getprop("ro.product.device") == "jeebus" || getprop("ro.build.product") == "jeebus" ||
getprop("ro.product.device") == "jeebusc" || getprop("ro.build.product") == "jeebusc"
The confusion behind "gee" and "ls970" is because there are two
main ANDROID bases for us and they are incompatible with each other.
While Team CodeFire were rolling with the "geebus" name, early attempts to port AOSP and CyanogenMOD to the many Optimus G variants used the Nexus 4 (Mako) ROM & kernel as a base with optimus g stuff mixed in.
Since we were the odd man out with the 13MP camera, our name had to change to be more specific; back to "geehrc4g" and then "geespr".
The "hybrid Mako" base was a little unstable and camera auto-focus was not working for us.
CyanogenMOD requires that everything works to become OFFICIALLY supported.
The "gproj" team working on OFFICIAL CyanogenMOD status for the international variant (e975) used their own device as a base and was the first to become officially supported by several months.
Team CodeFire followed suit and scratched (but not abandoned) the hybrid mako base and used our own device (ls970) as a starting point for the remaining variants.
We also changed name from "geespr" to "ls970" because CyanogenMOD requires you to use your device's model name (or because the code base change, IDK).
While things became rock stable we were still having the camera auto-focus problem (but was not a stopping issue).
ls970 and e970 became officially supported by CyanogenMOD with the "ls970-common" base.
The e975 variant has the same camera as we do and their auto-focus works.
We moved to the "gproj" base while still keeping a few device specific things separated for the other variants (like camera drivers).
Some developers use the CM/gproj base to port ROMs to our device and usually refer to "ls970"
Some developers also used the hybrid Mako base to port ROMs to our device and and usually refer to "geespr" (and now "gee")
The hybrid Mako base (still not abandoned) has become rock stable and has the auto-focus problem fixed.
More recently the hybrid Mako base developers have unified the code for some of the variants and now we are "gee".
Mostly correct, but there's a couple things I'd like to point out. #1: Geebus was not used on ROMs; it was only used by Tyler on the first recoveries. Also, Team Codefire is really only relevant for the recovery and bootloader unlock; Device sources were made primarily by synergy, Shelnutt2, rlasalle15, houst0nn, chadouming, and I. The first ROMs based on the stock kernel were geehrc_sp or geehrc4g_spr_us. Soon after this, the Canadians (chadouming, Houst0nn, and Thracky) found that mako kernels booted and worked fairly well on their phones, but along with dvhexer, they had to change some things for our device, such as NFC. Unfortunately for the US variants, our firmware was too different for this to work. Using Canadian firmware did work, but flashing partitions isn't always the safest. Luckily, LG's JB firmware fixed this issue and allowed us to use mako-based kernels. Everything was going well, until we found that people had EFS issues. Seth made a script that would backup EFS and allow you to restore and also created a workaround telephony framework. After that, the only major issue was autofocus. At this point, there were four device repos: Canada, Sprint, AT&T, and International). Meanwhile, Ricardo at CM created a hybrid of stock and the current mako sources (4.2) for the International variant (e975). A couple months later, Seth rebased to his sources, still 4 device sources, but this time named based on model numbers (e973, e970, e975, and ls970) Around this time, I created TeamPlaceholder, with houst0nn, chadouming, and bbelos to create a kernel and device sources based on the latest Qualcomm CodeAurora jb_2.5 sources. Performance was awesome, however, we never got 13MP camera to work, so none of these builds were widely released, however, this is where I created the names for geeb and geespr, mainly out of laziness because having to type geehrc4g_spr_us every time I wanted to build was a pain. As a team, we were also able to merge the AT&T and Canadian variants by enabling SD support for both, since it doesn't negatively impact anything and is the only difference, is just less general maintenance. and meant we only needed to make 3 builds. Eventually, Google also rebased to jb_2.5 for their 4.3 mako kernel, so we scrapped TPH and worked on that, adding only the necessary hardware specific changes from stock (as opposed to all of LG's stock changes, which GPROJ did). Performance was just as good as TPH, everything worked (except autofocus, which was fixed a few months ago by faust93), all was well. Throughout this time, we have updated to the most recent AOSP, since it is fairly easy because we did not deviate much from it, however, gproj did not rebase to jb_2.5 or the AOSP 4.3 kernel, so they are a bit behind us in terms of optimizations. Google did a much better job on the 4.3 kernel than 4.2, so as such, mako-based ROMs should have a bit better performance and are generally more up to date. KitKat was fairly easy to merge into our sources, so we did so fairly quickly. At this point, Chadouming, houst0nn, and I maintained mako based sources, however, both of them jumped ship, leaving me in charge of most source maintenance. In this time, I became the official Vanir maintainer and have made some kernels. Eventually, I noticed that if the Nexus 5 could run GSM or CDMA on the same sources, we could too, so a month ago, I decided to merge our device and the International variant (geehrc) into one device: gee, using the Nexus 5 sources as reference, meaning that there are only two device sources now on our device: gee and geeb, so all variants can run one of two builds
This means that it takes no extra work for someone on AT&T to maintain a ROM for the Canadian variant and vice-versa, same goes for the International and Sprint variants. It has led to great collaboration between the variants and all of you have benefited.
TL;DR: There are two different paths you can take: One closer to stock, but based on an older Nexus 4 4.2 kernel (Gproj) or one with the latest and greatest Nexus 4 4.4.2 sources with only the bare essentials of stock (camera, NFC, etc.)
If you choose stock and Nexus 4 4.2 based, you pick the ls970 ROM.
If you choose Nexus 4 4.4.2 based, you pick the gee ROM.
EDIT: One thing to note: This is the history of the Sprint variant; there are other great devs for the AT&T and International variants, such as arcardinal and dvhexer, but they did not work across all variants, so it's not quite as relevant to us.