Saturday, September 24, 2011

Outside looking in, or inside looking out?

So as most of you know I work with the CyanogenMod (CM) team to get and maintain CM running on a couple different devices.  Since I have joined the group, I have paid more attention to what people say and how people react to different things related to CM, and more importantly how people perceive the CM team as a whole.
**I want to note this post is my own personal view and interpretation and is in no way the combined opinion of the CM Project as a whole.**

When I first started working with android projects I had no real programming experience (still dont really). I read all the guides and various information outlets for themeing and changing aspects of ROMs.  After a few failed attempts, and hours upon hours of reading online, it hit me.  Why go through the trouble of decompiling/unzipping, running files through various editors and recompiling/zipping files, when I could do it all from source?  I quickly realized how powerful the android build environment could be after reading a post about build overlays from koush.

This got me into my first couple of themes, and doing some personal edits of my own.  My biggest downfall as a themer is that I am not a graphic designer.  I realized that after trying to get the whole theme look to really get together.  I stopped on the theming but still enjoyed doing my own "nightly" builds with my own look and overlay.  I remember thinking to myself how awesome the open source aspect of android is, and how awesome it was for this great group of devs (CM) to add to and put the code out there for everyone.  After a few months and getting more and more comfortable with the code and gerrit etc, I started submitting patches to CM.  Nothing major, just little bug fixes or updates here and there.  And then it happened, Gingerbread had came out, and koush no longer had a DINC to get GB fully going on.  So he asked me if I wanted to join the team and keep CM alive in the DINC.  I gladly accepted.
Now I am still no star developer.  The core of the CM team really makes things happen.  All I have done is attempted to take the devices I have in hand, and make then as stable and feature rich as possible with the assistance of the CM team.  And so far, I think its worked out well.

Lets get on to the purpose of the post.  Back when I first started with android, if it weren't due to CM and the availability of the code, and the device workarounds they came up with, I would not be doing this today.  I have always looked up to these guys and their amazing work and dedication to the CM project.  Now that I am a small part of the team, I look up to them even more.  I have a major respect for everyone in the team and all the contributors.

Now recently between sitting idle in various IRC channels, or reading through forum posts, I see a small percentage of people saying things like "CM guys are elitist ass holes." or "The CM guys are total dicks." and "the CM team is just to full of itself, get over it".  As i see things like this it makes me read the context and get the picture of why people are expressing these opinions.  I want to explore a few of these and see if we can clear some things up.

1.  "I pm'd <insert-nick-here> and they never replied.  Guess I am not good enough for them to answer my questions."
     This is a great one.  First, how many pm's do you think CM team members get? 5? 10? 100?  Who knows, but I guarantee you its a huge number.  They may have not seen it, or have the time to answer it.
     Also, maybe they are not at the computer.  Amazingly enough we have lives outside of android/CM that includes jobs, spouses, kids, car accidents, flooding and anything else that YOU are subject to.
    This one, I am especially keen to.  Maybe the answer to your question is a simple google search away.  I have had no formal training whatsoever when it comes to programming, and code.  EVERYTHING I have learned has been through reading, trial and error, and examples of other open source code.  If you can't take the time to do a google search, why should I search it and link it to you?

2.  "CM attacked <insert-random-aosp-rom-here> for kanging, whats the friggin problem, its open source?"
     This is another good one.  People are absolutely right.  The code is there and for the taking.  Where the biggest issue comes from is the taking of code and people attempting to pass it off as their own.  Now to some this may seem petty, but lets spin it this way. You just spent all night with no sleep getting X new feature working, with no help from anyone else.  It took reverse engineering and  some guessing and hours of log reading to get it right.  You clean up the code, make it a bit better, and then you post it to gerrit for other CM team members to verify it works for the various devices and that it causes no issues.  Then after getting a couple hours of sleep you wake up to a link to a forum post, for "Super awesome double XX 2 AOSP built from source rom, NOW WITH FEATURE X!!!" and as you read the post there is no mention of your name, or work, or where the source came from.  Then you notice there are posts that imply this particular dev came up with it.  How would that make you feel?  The bottom line is that the CM team has put in countless hours of sleepless nights to make CM work so well, with all the features, and for it to cover so many devices with only a single repo to build from.  They DESERVE the credit and simple human respect for the work they have done.  So many don't want to admit where the code came from.  So many want to act like they did not use CM in their ROM whatsoever, and too many want to misrepresent what work they actually did. I may be wrong, but other than CVPCS and his ccroms I can not think of a single "AOSP" Rom that didnt start with a download of the CM source.  This is the exact reason, that ROMs like Ultimate Droid (or Blackdroid) did not release their source.  They did not want it in the public eye that it was mostly CM code with some themed elements and strings changed.  And for those that do release the source, if you look back far enough you will find commits that look like:
- "CyanogenMod"
+ "My super elite god rom"
If you use an "AOSP" Rom I will pretty much guarantee that you are running some aspect of CM code.
     The other side of this, is that people who do use the CM source rarely ever submit upstream patches for fixes.  If you are going to use the code, the least you can do is submit bug fixes back to the original source.

3.  "CM wont release their source when I want it.  They are NOT open source"
     This one is fairly new.  This is really stemming from the rash of people who started building "nightlies" for devices before CM did.  although there is nothing wrong with that, some people were attempting to use this for monetary gain, which is not liked.  Also, there were several other ROM "devs" that were pulling CM commits and patches and releasing ROMs to be "first", to take credit for the work, and to make it seem like CM was taking their code.  I just want to keep people honest.  Also, other than the kernel that falls under the GPL, android source code is not required to be released at all (aka manufactures, and other roms like MIUI)  If we choose to sit on code until we are ready to release it, we can do that, and still support Open source.  Every device that is fully supported and that is in a nightly status has all the source code released.

That about covers my feelings for now.  Remember that if you use an AOSP based rom on a Phone/Tablet there is a very good chance that it stemmed from CM.  Think about all the time and effort that the CM team has put into the project, and give them a little thanks too.  We are people too, not just "wizards behind the curtain"

I want to once again mention these are MY personal views, and not the representation of the CM team as a whole.