• After 15+ years, we've made a big change: Android Forums is now Early Bird Club. Learn more here.

Root A discussion of Android, AOSP, and CyanogenMod project

isaacj87

Android Expert
Dec 17, 2010
1,139
1,793
Dallas, TX
github.com
Hello all,

Sometimes, I get the feeling that some people, mostly newcomers, don't understand Android, AOSP, open-source and the CyanogenMod project. I am in no way an expert on these matters, but I've been around the project for awhile and decided to open up some discussion about it. If anyone of you feel that I've made a mistake or misspoke, please feel free to correct me.

First, I'll start with a brief explanation of open source software. Open source means to be free as in libre, but not always free as in beer. Furthermore, just because software has been released as open source, doesn't mean it has to be distributed. According to Wikipedia, in order to qualify as open source software, the software has to to align with these criteria:

Introduction

Open source doesn't just mean access to the source code.
The distribution terms of open-source software must comply with the following criteria:
1. Free Redistribution
The license shall not restrict any party from selling or giving away the software as a component of an aggregate software distribution containing programs from several different sources. The license shall not require a royalty or other fee for such sale.
2. Source Code
The program must include source code, and must allow distribution in source code as well as compiled form. Where some form of a product is not distributed with source code, there must be a well-publicized means of obtaining the source code for no more than a reasonable reproduction cost preferably, downloading via the Internet without charge. The source code must be the preferred form in which a programmer would modify the program. Deliberately obfuscated source code is not allowed. Intermediate forms such as the output of a preprocessor or translator are not allowed.
3. Derived Works
The license must allow modifications and derived works, and must allow them to be distributed under the same terms as the license of the original software.
4. Integrity of The Author's Source Code
The license may restrict source-code from being distributed in modified form only if the license allows the distribution of "patch files" with the source code for the purpose of modifying the program at build time. The license must explicitly permit distribution of software built from modified source code. The license may require derived works to carry a different name or version number from the original software.
5. No Discrimination Against Persons or Groups
The license must not discriminate against any person or group of persons.
6. No Discrimination Against Fields of Endeavor.
The license must not restrict anyone from making use of the program in a specific field of endeavor. For example, it may not restrict the program from being used in a business, or from being used for genetic research.
7. Distribution of License
The rights attached to the program must apply to all to whom the program is redistributed without the need for execution of an additional license by those parties.
8. License Must Not Be Specific to a Product
The rights attached to the program must not depend on the program's being part of a particular software distribution. If the program is extracted from that distribution and used or distributed within the terms of the program's license, all parties to whom the program is redistributed should have the same rights as those that are granted in conjunction with the original software distribution.
9. License Must Not Restrict Other Software
The license must not place restrictions on other software that is distributed along with the licensed software. For example, the license must not insist that all other programs distributed on the same medium must be open-source software.
10. License Must Be Technology-Neutral
No provision of the license may be predicated on any individual technology or style of interface.

Certain licensing comes into play as well. The way I understand it, OSS has the code available to change at will and, depending on the license, the person/party who changes the software may distribute, sell, set on fire, etc. the software as long as the changes to the original source were made public. So, I can take a piece of code, make some changes to it and never release the product. The changes I've made, in compliance with OSS rules, would make me obligated to release the changes I've made to the source code.

When it comes to Android, which is a Linux-based OS, there is a project called the Android Open Source Project (AOSP). As far as I can tell, AOSP uses a combination of 2 licenses. These licenses are the GPL license for the kernel and Apache for the ROM. Every single version of Android, with the exception of Honeycomb 3.0, has been fully released. When a manufacturer makes a ROM for a phone, they are obligated to release those changes to the kernel and ROM source. For the most part, most manufacturers are pretty good about this. The only company I've seen that does a terrible job of this is Huawei.

Now, where does the CyanogenMod (CM) project come into play in all of this. The CyanogenMod project started off as a small, modded ROM that only worked on a handful of phones. CM took the AOSP source code, the same code used to make any stock ROM, and added tweaks and fixes to it as he saw fit. As the team grew larger and more widespread, the CM project started turning into a customized Android distribution. CM and his team has added particular modifications to the AOSP source code to allow it to be customized and adjusted to run a wide spectrum of phones. The same CM source that can be ran on a lowly device like the Ascend can also run Nexus S. The reason why CM is considered an Android distribution is because a developer can add his/her device to the source, customize it for the phone and build.

So, no. CyanogenMod was not hacked on the Ascend or any other phone for this matter. CM was not made specifically for one phone or device because AOSP is the same software that runs on all phones/devices.

That's all I can think for now. If I made any mistakes, let me know. I don't want to spread misinformation.

Oh, and just my 2 cents here, don't go around bashing any developers or their respective ROMs. I hate it when I see people talking crap about Cyanogenmod, his team, other developers, etc. The same people who talk crap are the same people running the ROMs free of no charge. Basically, in my book, it goes like this: Put up or shut up. The source is available. If you think you can do something better, by all means, go ahead and do so. If not...well, you know.
 
Hello all,

Sometimes, I get the feeling that some people, mostly newcomers, don't understand Android, AOSP, open-source and the CyanogenMod project. I am in no way an expert on these matters, but I've been around the project for awhile and decided to open up some discussion about it. If anyone of you feel that I've made a mistake or misspoke, please feel free to correct me.

First, I'll start with a brief explanation of open source software. Open source means to be free as in libre, but not always free as in beer. Furthermore, just because software has been released as open source, doesn't mean it has to be distributed. According to Wikipedia, in order to qualify as open source software, the software has to to align with these criteria:



Certain licensing comes into play as well. The way I understand it, OSS has the code available to change at will and, depending on the license, the person/party who changes the software may distribute, sell, set on fire, etc. the software as long as the changes to the original source were made public. So, I can take a piece of code, make some changes to it and never release the product. The changes I've made, in compliance with OSS rules, would make me obligated to release the changes I've made to the source code.

When it comes to Android, which is a Linux-based OS, there is a project called the Android Open Source Project (AOSP). As far as I can tell, AOSP uses a combination of 2 licenses. These licenses are the GPL license for the kernel and Apache for the ROM. Every single version of Android, with the exception of Honeycomb 3.0, has been fully released. When a manufacturer makes a ROM for a phone, they are obligated to release those changes to the kernel and ROM source. For the most part, most manufacturers are pretty good about this. The only company I've seen that does a terrible job of this is Huawei.

Now, where does the CyanogenMod (CM) project come into play in all of this. The CyanogenMod project started off as a small, modded ROM that only worked on a handful of phones. CM took the AOSP source code, the same code used to make any stock ROM, and added tweaks and fixes to it as he saw fit. As the team grew larger and more widespread, the CM project started turning into a customized Android distribution. CM and his team has added particular modifications to the AOSP source code to allow it to be customized and adjusted to run a wide spectrum of phones. The same CM source that can be ran on a lowly device like the Ascend can also run Nexus S. The reason why CM is considered an Android distribution is because a developer can add his/her device to the source, customize it for the phone and build.

So, no. CyanogenMod was not hacked on the Ascend or any other phone for this matter. CM was not made specifically for one phone or device because AOSP is the same software that runs on all phones/devices.

That's all I can think for now. If I made any mistakes, let me know. I don't want to spread misinformation.

Oh, and just my 2 cents here, don't go around bashing any developers or their respective ROMs. I hate it when I see people talking crap about Cyanogenmod, his team, other developers, etc. The same people who talk crap are the same people running the ROMs free of no charge. Basically, in my book, it goes like this: Put up or shut up. The source is available. If you think you can do something better, by all means, go ahead and do so. If not...well, you know.

I for one appreciate all your hard effort in this, I haft to say in no way is cm6 or cm7 crap. I am running the current build of cm7 and haft to say that its 100 times better than the crap the phone came with. Thank you for the insightful post isaac.:)
 
  • Like
Reactions: isaacj87 and pip2kk
Upvote 0
Oh, I forgot to mention something important. The reason why the CyanogenMod project is so useful and relevant to people like us is because of their support for "legacy" devices. Not only does CM and company go through the trouble of grabbing the latest version of Android, they also backport deprecated code and fixes so that CM will run on lower end devices. I've never looked at pure AOSP 2.3 Gingerbread, but I'm going to assume that I wouldn't be able to port pure AOSP GB to the Ascend. At least not very easily.

So, basically they're like, "Hey, I have a bleeding edge version of Android for you to use on your old as hell device. Enjoy."

You just can't beat that. You hear that Huawei? You guys need to step your game up...
 
Upvote 0
Great discussion bro, and I for one also really appreciate all your time and efforts, along with pip's and all the other dev's out that that make cool ROMs possible!.

A little education goes a LONG way. I see a lot of people new to Android, new to the tech community, and lacking some degree of understanding of what they have in their hand. Most people see coding as more science than art, incorrect in my view, and have no understanding of the work involved in creating something like Icarus or Cyanogenmod. The problem is that the same group has no problem complaining or taking issue with a Dev when things don't work, or don't work to their expectations. I don't say this to be rude or mean, but to make a point. If things are unclear, educate yourself. There is a wealth of information in these forums, on Wiki, and around the internet in general. Use it. If you want to try ROM flashing, read the instructions. If it reads like hieroglyphics, STOP and learn about what you are doing BEFORE you attempt it. IF you do it and something goes wrong, be nice, don't blame the software, chances are it was something you did wrong, but you can fix it. Jazz said it best in her How to post for Icarus 1.1 (my first flashed ROM.)

WARNING!!!!! The river is WIDE, the river is DEEP! The FAINTHEARTED may not make it! ~ Jazziette
 
  • Like
Reactions: isaacj87 and pip2kk
Upvote 0
A little education goes a LONG way. I see a lot of people new to Android, new to the tech community, and lacking some degree of understanding of what they have in their hand. Most people see coding as more science than art, incorrect in my view, and have no understanding of the work involved in creating something like Icarus or Cyanogenmod. The problem is that the same group has no problem complaining or taking issue with a Dev when things don't work, or don't work to their expectations. I don't say this to be rude or mean, but to make a point. If things are unclear, educate yourself. There is a wealth of information in these forums, on Wiki, and around the internet in general. Use it. If you want to try ROM flashing, read the instructions. If it reads like hieroglyphics, STOP and learn about what you are doing BEFORE you attempt it. IF you do it and something goes wrong, be nice, don't blame the software, chances are it was something you did wrong, but you can fix it. Jazz said it best in her How to post for Icarus 1.1 (my first flashed ROM.)

WARNING!!!!! The river is WIDE, the river is DEEP! The FAINTHEARTED may not make it! ~ Jazziette

I'm glad somebody mentioned this. The way I see it, there are 3 different types of people in this Android community:

End-Users <--------------> Higher-level developers <----------------> Lower-level developers

End-users: The people who consume the final products. This is the group that takes the ROMs and uses them on a daily basis.

Higher-level devs: These are the people that port AOSP, CM, whatever to individual devices.

Lower-level devs: These are the people that actually modify the code to be used on phones/devices. For example, the AOSP developers team or Cyanogenmod.

I think most of the friction comes from the end-users and high-level devs. That's because end-users are in most communication with the high-level devs. The only person I've EVER talked to from the CM project was Koush. Even then, I didn't say much to him (it was only a couple emails back and forth).

I don't think developers (either high or low) expect end-users to really fix anything or understand Android, but they do want end-users to educate themselves as much as possible. I think if you want to use custom ROMs, end-users need to understand 3 things:

1) We're doing this for free. I don't work for anyone and I do this as hobby to entertain myself. My ROMs (or ports) are my party. If you don't like my party, you can go and join someone else's (use a different ROM).

2) Use the community. Somewhere, even far out there, somebody has the same problem as you. Like DSanders said, read the wikis, guides, documentation, etc. out there. Get familiar with watching bug trackers and code reviews. You might actually see a fix to a problem that you have. If I know about it, I can merge the changes into my code and fix it.

EDIT:
3) Devs aren't super-human. We're talking about millions of lines of code. There maybe some problems that we just can't fix. Hell, I know there are a lot of things I can't fix in CM7. However, I go talk to the low-level devs, look at their bug trackers, etc. and see if I can't find a fix to my problem. Also, there are some problems (MMS is good example) of things we don't care about fixing. If USB mounting is broken, do you really think I care about MMS?

EDIT 2: I also want to mention that devs want end-users to enjoy certain luxuries they wouldn't normally have. I realize that my other points make devs (myself included) sound a bit jaded. That's the furthest from the truth. I remembering reading an article about Steve Kondik (Cyanogen) in which he said that people using his ROMs is the coolest thing in the world. It made him feel good to know that people really enjoyed using his work. I don't want to give developers the false reputation of being elitists.
 
Upvote 0
I have to say if it were not for the devs working for FREE none of us cheap ascend users would be very happy. It does personally irritate me when someone complains or bashes the rom. My wife is taking IT and learning coding and I gotta say it is a tremendous amount of work. So my hats off to all the devs who work FREE to give us these great roms!!!! If I werent so broke I would donate hundreds of dollars, just cause I have an idea how much time and effort you folks have put into this. I am very new to android and never once have I complained. There is a wealth of information on these forums. I dont understand alot of the techy stuff but im learning. TO SUM IT UP I WANT TO JUST SAY THANK YOU!!!!!! THANK YOU TO ALL DEVS ESPECIALLY ISAAC AND PIP FOR ALL YOUR HARD WORK!!!!!!!!

And for those who complain dont download the rom!!!!!!!:D
 
Upvote 0
I have to say if it were not for the devs working for FREE none of us cheap ascend users would be very happy. It does personally irritate me when someone complains or bashes the rom. My wife is taking IT and learning coding and I gotta say it is a tremendous amount of work. So my hats off to all the devs who work FREE to give us these great roms!!!! If I werent so broke I would donate hundreds of dollars, just cause I have an idea how much time and effort you folks have put into this. I am very new to android and never once have I complained. There is a wealth of information on these forums. I dont understand alot of the techy stuff but im learning. TO SUM IT UP I WANT TO JUST SAY THANK YOU!!!!!! THANK YOU TO ALL DEVS ESPECIALLY ISAAC AND PIP FOR ALL YOUR HARD WORK!!!!!!!!

And for those who complain dont download the rom!!!!!!!:D
You don't have to donate hundreds of dollars. Just a dollar is still more than nothing. Showing your appreciation can be in small or in big ways. Each time you thank them, Or you donate a small amount of money, You are showing this. Gratitude is always worth it, be it in a gynormous or minuscule package.

I can completely understand how you feel though. I too, Always feel I could give more! :]
 
  • Like
Reactions: newbytodroid
Upvote 0
You don't have to donate hundreds of dollars. Just a dollar is still more than nothing. Showing your appreciation can be in small or in big ways. Each time you thank them, Or you donate a small amount of money, You are showing this. Gratitude is always worth it, be it in a big or small package.

I can completely understand how you feel though. I too, Always feel I could give more! :]


I know...Lol But I would still give hundreds if I could....Lol!:D

And hey Thank you also... you have been very informative... I apprecaite that!!!!
 
Upvote 0
You don't have to donate hundreds of dollars. Just a dollar is still more than nothing. Showing your appreciation can be in small or in big ways. Each time you thank them, Or you donate a small amount of money, You are showing this. Gratitude is always worth it, be it in a gynormous or minuscule package.

I can completely understand how you feel though. I too, Always feel I could give more! :]

And also a big thanks you would be accepted for all the countless hours and flashing that the devs and testers do for the new comers, that way we can provide support for any problem and try to get it working for you...
 
Upvote 0
Hi, i would like to know something that i would like to have clear, if a company is developing some kind of equipment, and the equipment will run Android built from AOSP, does the company have to pay some kind of license or something like that if the equipment is going to be launched to the market???
Android is open source, so basically anyone can use as long as they obied by the GPL. Its if they include google apps they have to pay a license fee to google for. ;)

If you mean you publish app to the Play Store, you have to pay a $25 fee to be able to access the dev section to upload your apps.
 
Upvote 0
Android is open source, so basically anyone can use as long as they obied by the GPL. Its if they include google apps they have to pay a license fee to google for. ;)

If you mean you publish app to the Play Store, you have to pay a $25 fee to be able to access the dev section to upload your apps.


Thank you very much for the reply, i actually mean a new device that the company will launch to the market and it will run the Android OS built from AOSP sources, that's my main concern. and about the apps, where do i go to pay it or how is the procedure?, thanks in advanced.
 
Upvote 0

BEST TECH IN 2023

We've been tracking upcoming products and ranking the best tech since 2007. Thanks for trusting our opinion: we get rewarded through affiliate links that earn us a commission and we invite you to learn more about us.

Smartphones