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).

Many of the amazing developers at XDA create custom kernels, which feature many improvements and changes over the “stock” kernels released by OEMs, including performance and stability tweaks. This is exactly what the GPL is designed to protect, by ensuring that anyone can get access to the original source code used to build the kernel. Given a suitably configured computer, it should be possible for anyone to reproduce a released kernel using the provided source code.

Recently it has come to our attention that a number of users have been neglecting to follow XDA's GPL regulations, which amount to posting the sources for any kernel you build from source to share with others.

As a result, we would like to clarify our position on the GPL, and users’ obligations to this effect. 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, and should highlight this in your thread with a link. (Plenty of respected and trusted sites will host the code for you free of charge, such as GitHub and BitBucket.)

By posting open sourced work on XDA, you are also ensuring that your available sources are up-to-date with the work you have released. This means that if you update your kernel to add a new feature, for example, your sources should be updated to include this change. If they are not, this means you are not complying with the GPL.

There is no provision in the GPL to withhold access to sources based on time or other conditions, so please don’t attempt this, as it will only earn yourself a formal GPL request. If you do not provide the correct, accurate, and up-to-date sources (and keep them up-to-date), you will be non-compliant with the GPL.

In order to be fully GPL compliant, your sources must:

  • Successfully build and produce a valid output file, which is the same format as provided in the binary
  • Contain all source code, interface definition files, scripts used to control compilation and installation of the executable (it is not required to include the actual compiler/toolchain, but sufficient information should be made available to obtain the SAME configuration, including compiler flags, as used to build the binary version as released)

The GPL is a legally enforceable license agreement, and while it offers users freedoms to copy and redistribute code, that permission is conditional upon all changes which are released being made publicly available. If you require further advice on this matter, we suggest you review the license itself or consult a lawyer.