As many of you know, here at XDA we have strict policy regarding GPL v2. What you may not understand is what that means and what effects it may have on you. Simply put "The GNU GPL is a software license agreement, under which parts of the Android operating system are licensed. The majority of Android is licensed under the Apache license, but the Linux Kernel (which is present in every running Android ROM in some shape or form) is licensed under the GPL (version 2)".
So what does this mean for the average user?
To keep things simple, this license is one of the reasons Android exists in the open source capacity that it does. It requires developers to keep their kernel source open and has created the community sharing programs that have made Android so wonderful.
If you are a developer what does this mean for you?
It doesn't matter if you are creating a whole rom or just the kernel, the process of being GPL compliant is a very simple one to explain. Basically, we expect you to either link the source that you have chosen to use or upload the source you have created into a format that can be viewed by everyone and anyone. Below are the 3 most common situations that developers run into when needing to stay GPL compliant under XDA rules.
1. If you are using a stock kernel you MUST mention where you obtained your source. Also, having a link leading to where the manufacture has uploaded their source is always helpful.
2. If you are using a community driven source build (e.g. CyanogenMod, AOSP, or Parandroid) or a singular developer's source you MUST link directly to the repository that contains the kernel for that specific device. If you are only linking to another thread or to a general repository, this will not be considered as being GPL compliant unless the code has not been modified.
3. If you are forking a repository that is similar to the examples listed above in #2, you MUST publish and link your entire kernel source. This includes any and all changes that you have made. Two of the most common ways developers publish their source on XDA is either with Gerrit, or GitHub. While these two methods are recommend, they are not the only routes you can choose to accomplish this. All that is required is that the source can be viewed and downloaded by anyone who wishes to do so. When releasing an update, your repository must be updated the moment you release your kernel on XDA. If you can post your update to XDA, there should be no reason as to why you cannot release your source.
What if the manufacture for my device has not released their kernel source?
In a perfect world this would not happen but unfortunately this is not the case. Pulser-G2 recently wrote a portal article explaining a certain situation that has come across our desks.
With all of that being said I will leave you with this...
By posting your work on XDA-Developers, you are agreeing that it complies with relevant licensing conditions. As such, by posting a kernel or other work containing GPL code, you are confirming to us that you have made this source code available publicly under the GPL. Failure to follow this policy will result in the closure of your thread and the removal of the download links.