It has come to my attention that a few people have been misunderstanding a few recent posts by myself. This is post is to clear the waters up a bit and to explain my position as a developer here on XDA.
As many of you guys know, we're probably the most lively "dead" device on XDA. At least in my opinion that is. We have been through a lot as a community but we still manage to survive. But recently things have been getting a little tense.
I received this device last summer like most of you have. When I got it, I immediately started figuring out how to get CM7 on it. Problem is that it was my first Android phone and with all the ways that Motorola locked it down I had a lot to learn and no time to learn it. After I learned off and on how to get things working on the X2 during the NO free time I had last fall I cranked out a pretty much solid CM7 in a week.
Now for the explanation for CM9/ICS. Most people probably think that since I could crank out CM7 so fast that I would be able to do the same with CM9 and make it just as good and amazing as CM7. Although I had it booted on the first build, it was FULL of errors and the touch screen didn't even work. ICS and CM9 is definitely not as easy as CM7. CM7 was already a year and a half in the making and had most of the problems worked out on all the devices that when it finally came time for us, it would just as smooth as butter as soon as it was booted. CM9 hasn't had time to develop into a "smooth" ROM for most devices; especially non-official like ours. The code for the touchscreen to work wasn't even in CM9 on my first build, for example. The problems for CM9/ICS can be narrowed down to a few things:
Graphics Memory and No Official ICS: Due to the way that ICS handles the way it puts stuff on our screen we run into Video RAM (VRAM) problems on our device. Basically the routines that control it are expecting the memory to be mapped (stored) in a certain way in VRAM. On a device that has ICS officially, this isn't as big as a problem as the proprietary files (props) are coded to respond to those requests and mappings and as such run smoother. If a device doesn't have ICS, most it usually has a similar device in which props can be pulled and ran accordingly.
This is not the case for Tegra 2 phones as no Tegra 2 device has official ICS. In fact the Tegra kernel (just looked this up) is only at 2.6.34-rc3 officially and have a 3.1.10 kernel in developement (Motorola can update it again to .35 if they wish to do so like for the ATRIX). Because of the lack of an official Tegra 2 kernel for Linux 3.X, and likewise the props for such kernel, we can't have props that handle the requests the system is asking for. And even if another phone gets updated, we're locked and stuck, so It doesn't matter either way. This means that VRAM problems will probably always be there and that there is nothing that I can do for it. Best thing I can hope for (and this is slowly making it's way through CM9) is that the code in CM9 is updated to allow us to handle the VRAM differently like in CM7/GB.
Kernel Improvements: The kernel (that's supposed to be) for ICS is 3.0 or higher. This includes changes in memory as stated above, touchscreen handling, device interaction with the kernel and many others. That being said, we don't have those improvements thus causing problems. These include memory as stated above, touchscreen not working (obviously fixed), data usage not working, data monitoring not working, and a few various ways other routines to draw to the screen and handle other things (such as why Chrome is picky). Some of these can be backported (downgraded) to our kernel with mixed results.
Problem is they have to be complied with our kernel and must match the kernel version in every way. That is why the kernel check is in CM7 and CM9. I can slowly work through implementing these routines through drivers known as kernel modules (mods). I have made mods for data usage (with a few issues) and another one (which not sure what it's supposed to do yet). I cannot (as in it's impossible) write them to change the memory handling. If I could even build them the kernel won't let me load them due to routines of same name fighting for control.
Think of it like the phone is a car and you and your friend are in the front (the kernel routines) and you have the exact same name. Meanwhile, you have another friend in the back (the OS). The OS says, "Hey Routines Named the Same, grab the wheel and turn turn left!" You would turn it to your left, but your friend (the other routine) has a different view of what left is and instead wants to go to your right. Obviously some problems arise.
Regarding the Soft Keys Issue: I know a few of you guys are a little upset regrading the fact that I won't add the soft keys in there by default. I have a justifiable reason behind not adding them: our phone already has buttons.
Our phone was designed to have hardware buttons that separate from the screen. Adding more buttons to the screen for buttons that already exist is not advantageous. It also unnecessarily takes up screen space that makes our phone our phone. Now you may be thinking, "Well the GNex has the soft keys on the screen..." You are correct. But the screen itself has actually been extended (as in a non-standard physical height) to accommodate for the soft keys and also has no hardware buttons for the menu and home, etc. In fact! The Nexus S (a still HIGHLY developed for, supported device and previous "Google Phone") doesn't even have the soft keys enabled from the software directly available from Google themselves.
With that being said, XDA user csking33 has made the option of softkeys available to the public should you choose to enable it. He has it working on the current Alpha 4 and I look forward to him getting them working on Alpha 5 when I release it. You can download it here: http://xdaforums.com/showthread.php?t=1727680.
That is just a short (believe me when I say it's short) explanation as to why ICS is just a FUN FUN FUN thing to work with.
Personal Problems (I have a lot): This is not meant to be a whine-a-thon, more of an explanation of why I can't be as dedicated as I'd like to be. I have explained why ICS is a pain, I'm here to give you a brief rundown as to why I (personally) can't just make things work. I am a student studying Aerospace Engineering (not Computer Science or whatever else). It has kept me so insanely busy that I can't even begin to describe how much little time I have. I spend all day at school and all night doing the homework for it. I was lucky (once) when my Flight Structures II homework only took 5 hours to do. With so many long homework assignments and group projects it's a miracle I even survive. Next semester will be worse because now I have to actually design and build a model plane from scratch that does whatever my professors says it has to do. This is includes the whole design, approval process, building, testing, breaking, fixing, getting approved again, get it flown, doing it's mission and presenting our project. All that on top of the homework I have to do.
Whenever I do get free time during the day, I try to spend it with my girlfriend and/or friends or (if it's a few days) I go to visit my family (this weekend I am, for example). Family and friends have always a top priority of mine since forever and I won't let a phone be the reason why I don't see them IF I see them. In fact the donation money you guys have supported me with is going to get new tires for my car before I go visit my family. It has also bought me spare batteries and cables for when I really mess things up.
After all this is said and done, I stay up to 4 am working on the phone so that you guys can have a semi-legitimate Android experience. I do it because I want to and because we as a community deserve it.
It saddens me to know that I'm (essentially) the only one left working on the X2. Others pop their head in every once and awhile to help or to do what they want and that is GREAT. I love it. I'm always more than willing to help others out if they ask. And all they have to do is ask. PM me here on XDA, join me in the IRC or tweet me on Twitter. I'll be sure to get to it eventually.
TL;DR:
As many of you guys know, we're probably the most lively "dead" device on XDA. At least in my opinion that is. We have been through a lot as a community but we still manage to survive. But recently things have been getting a little tense.
I received this device last summer like most of you have. When I got it, I immediately started figuring out how to get CM7 on it. Problem is that it was my first Android phone and with all the ways that Motorola locked it down I had a lot to learn and no time to learn it. After I learned off and on how to get things working on the X2 during the NO free time I had last fall I cranked out a pretty much solid CM7 in a week.
Now for the explanation for CM9/ICS. Most people probably think that since I could crank out CM7 so fast that I would be able to do the same with CM9 and make it just as good and amazing as CM7. Although I had it booted on the first build, it was FULL of errors and the touch screen didn't even work. ICS and CM9 is definitely not as easy as CM7. CM7 was already a year and a half in the making and had most of the problems worked out on all the devices that when it finally came time for us, it would just as smooth as butter as soon as it was booted. CM9 hasn't had time to develop into a "smooth" ROM for most devices; especially non-official like ours. The code for the touchscreen to work wasn't even in CM9 on my first build, for example. The problems for CM9/ICS can be narrowed down to a few things:
- Graphics Memory
- No Official ICS
- Kernel Improvements
Graphics Memory and No Official ICS: Due to the way that ICS handles the way it puts stuff on our screen we run into Video RAM (VRAM) problems on our device. Basically the routines that control it are expecting the memory to be mapped (stored) in a certain way in VRAM. On a device that has ICS officially, this isn't as big as a problem as the proprietary files (props) are coded to respond to those requests and mappings and as such run smoother. If a device doesn't have ICS, most it usually has a similar device in which props can be pulled and ran accordingly.
This is not the case for Tegra 2 phones as no Tegra 2 device has official ICS. In fact the Tegra kernel (just looked this up) is only at 2.6.34-rc3 officially and have a 3.1.10 kernel in developement (Motorola can update it again to .35 if they wish to do so like for the ATRIX). Because of the lack of an official Tegra 2 kernel for Linux 3.X, and likewise the props for such kernel, we can't have props that handle the requests the system is asking for. And even if another phone gets updated, we're locked and stuck, so It doesn't matter either way. This means that VRAM problems will probably always be there and that there is nothing that I can do for it. Best thing I can hope for (and this is slowly making it's way through CM9) is that the code in CM9 is updated to allow us to handle the VRAM differently like in CM7/GB.
Kernel Improvements: The kernel (that's supposed to be) for ICS is 3.0 or higher. This includes changes in memory as stated above, touchscreen handling, device interaction with the kernel and many others. That being said, we don't have those improvements thus causing problems. These include memory as stated above, touchscreen not working (obviously fixed), data usage not working, data monitoring not working, and a few various ways other routines to draw to the screen and handle other things (such as why Chrome is picky). Some of these can be backported (downgraded) to our kernel with mixed results.
Problem is they have to be complied with our kernel and must match the kernel version in every way. That is why the kernel check is in CM7 and CM9. I can slowly work through implementing these routines through drivers known as kernel modules (mods). I have made mods for data usage (with a few issues) and another one (which not sure what it's supposed to do yet). I cannot (as in it's impossible) write them to change the memory handling. If I could even build them the kernel won't let me load them due to routines of same name fighting for control.
Think of it like the phone is a car and you and your friend are in the front (the kernel routines) and you have the exact same name. Meanwhile, you have another friend in the back (the OS). The OS says, "Hey Routines Named the Same, grab the wheel and turn turn left!" You would turn it to your left, but your friend (the other routine) has a different view of what left is and instead wants to go to your right. Obviously some problems arise.
Regarding the Soft Keys Issue: I know a few of you guys are a little upset regrading the fact that I won't add the soft keys in there by default. I have a justifiable reason behind not adding them: our phone already has buttons.
Our phone was designed to have hardware buttons that separate from the screen. Adding more buttons to the screen for buttons that already exist is not advantageous. It also unnecessarily takes up screen space that makes our phone our phone. Now you may be thinking, "Well the GNex has the soft keys on the screen..." You are correct. But the screen itself has actually been extended (as in a non-standard physical height) to accommodate for the soft keys and also has no hardware buttons for the menu and home, etc. In fact! The Nexus S (a still HIGHLY developed for, supported device and previous "Google Phone") doesn't even have the soft keys enabled from the software directly available from Google themselves.
With that being said, XDA user csking33 has made the option of softkeys available to the public should you choose to enable it. He has it working on the current Alpha 4 and I look forward to him getting them working on Alpha 5 when I release it. You can download it here: http://xdaforums.com/showthread.php?t=1727680.
That is just a short (believe me when I say it's short) explanation as to why ICS is just a FUN FUN FUN thing to work with.
Personal Problems (I have a lot): This is not meant to be a whine-a-thon, more of an explanation of why I can't be as dedicated as I'd like to be. I have explained why ICS is a pain, I'm here to give you a brief rundown as to why I (personally) can't just make things work. I am a student studying Aerospace Engineering (not Computer Science or whatever else). It has kept me so insanely busy that I can't even begin to describe how much little time I have. I spend all day at school and all night doing the homework for it. I was lucky (once) when my Flight Structures II homework only took 5 hours to do. With so many long homework assignments and group projects it's a miracle I even survive. Next semester will be worse because now I have to actually design and build a model plane from scratch that does whatever my professors says it has to do. This is includes the whole design, approval process, building, testing, breaking, fixing, getting approved again, get it flown, doing it's mission and presenting our project. All that on top of the homework I have to do.
Whenever I do get free time during the day, I try to spend it with my girlfriend and/or friends or (if it's a few days) I go to visit my family (this weekend I am, for example). Family and friends have always a top priority of mine since forever and I won't let a phone be the reason why I don't see them IF I see them. In fact the donation money you guys have supported me with is going to get new tires for my car before I go visit my family. It has also bought me spare batteries and cables for when I really mess things up.
After all this is said and done, I stay up to 4 am working on the phone so that you guys can have a semi-legitimate Android experience. I do it because I want to and because we as a community deserve it.
It saddens me to know that I'm (essentially) the only one left working on the X2. Others pop their head in every once and awhile to help or to do what they want and that is GREAT. I love it. I'm always more than willing to help others out if they ask. And all they have to do is ask. PM me here on XDA, join me in the IRC or tweet me on Twitter. I'll be sure to get to it eventually.
TL;DR:
- CM9/ICS will be unstable for as long as I can see in the future. There is not much I can do.
- No I won't enable soft keys, there is no point in a default build. See the post if you wish to enable them.
- I'm a really, really busy man but I do what I can. You guys have helped tremendously in supporting my work and helping me live a little easier
Last edited: