CyanogenMod (pronounced /saɪ.'æn.oʊ.dʒɛn.mɒd/) is an enhanced open source firmware distribution for smartphones and tablet computers based on the Android mobile operating system. It offers features and options not found in the official firmware distributed by vendors of these devices.
Features supported by CyanogenMod include native theming support, FLAC audio codec support, a large Access Point Name list, an OpenVPN client, an enhanced reboot menu, support for Wi-Fi, Bluetooth, and USB tethering, CPU overclocking and other performance enhancements, soft buttons and other "tablet tweaks", toggles in the notification pull-down (such as wi-fi, Bluetooth and GPS), app permissions management, as well as other interface enhancements. CyanogenMod does not contain spyware or bloatware. In many cases, CyanogenMod may increase performance and reliability compared with official firmware releases.
What's a "firmware", anyway?
Okay, here's a little history:
In the past, many simple appliances and electronics-- everything ranging from advanced toasters to microwaves to industrial machines ran on "embedded", limited-purpose computer chips (micro-controllers and such) to control their operations and user interfaces. Those embedded systems would require miniature, specialized software to, say, let someone program the VCR or to receive input from a remote control to change a TV's channel.
Traditionally, this software would be written on small-capacity memory chips, usually to be written once during manufacturing and never upgraded during the life of the product. This embedded software was known as "firmware" (halfway between software and hardware), and it still exists on many electronic products, containing the programming/logic stuff that makes much of the electronic gizmos you own work. Sometimes this firmware can be updated and new functions or bug fixes may be added. For something like a refrigerator or microwave, updating the firmware is usually a torturous process, and for most electronic things, it isn't necessary.
In the case of Android phones and tablets, as well as iOS devices-- despite the fact that they may appear simply to be a phone that can run apps, what you actually have in your hand is a full-fledged, general-purpose computer. So while in the past, the "firmware" was just the simple software to make a mobile phone work, the name "firmware" has stuck to describe the software you load onto your phone, much like you'd load any operating system onto a computer.
So to be clear-- today, your Android devices are in fact very similar to your laptop and desktop computers. Because they are now based on so-called SoCs, or "system on a chip"s, modern Android devices are effectively tiny, low-power laptops, only with touch screens instead of keyboards. CyanogenMod, based on Android, is a full-fledged operating system, just like Windows, OS X, or Linux are on laptop computers. In fact, Android runs on a version of the Linux kernel, and you can even run a full Linux desktop on many Android devices just as you would on a regular laptop.
The term "firmware", then, is just a legacy terminology to refer to the software you put on your handheld devices. But speaking realistically, you may as well think of it as "software, particularly an operating system and apps, that can be put on my device."
Hope that helps.
But wait-- is the right term "ROM" or "firmware" or what?
The term "ROM" has multiple definitions. Technically, ROM stands for Read-Only Memory, which means you cannot write to it; it is read-only, like a DVD.
Device manufacturers traditionally referred to a cell phone's included operating system as "ROMs" because they did not intend for you, the user, to replace it. And so, modders would use "ROM" as a shorthand for "ROM image" to describe what it was they were replacing. So today the files that you put in the system partition are also referred to as a ROM sometimes. You'll hear people say "flashing a ROM".
Whether you call CyanogenMod a "ROM" or a "firmware" or an "operating system" or a "distribution", it all amounts to the same thing. The ambiguous terminology is just the result of a decade-long transition from simple, non-replaceable software on hand-held devices to full-fledged, updatable operating systems on a small, portable computers that fits in the palm of your hand.
And what about the "open-source" part? What's that mean, and more importantly, why should I care?
Generally speaking, most programs (and even entire operating systems) are written from source code, a human-readable set of instructions that are compiled (or "built") into files that your computer (or in this case, your phone or tablet) can understand and run. In the case of operating systems such as MacOS X and Windows, many of the instructions that become the operating system are kept hidden from the public. With Android, this code is made public and are licensed in such a way that anyone can reuse the code if they like.
One major advantage to having an open-source-based operating system is that many people can scrutinize the source code, looking for bugs ranging from security holes to inefficiencies to missing features and pass fixes and features and translations into new languages back to be incorporated into the next version. CyanogenMod tries to build a new, fresh "nightly" version every 24 hours for each of the devices it supports, which includes the most up-to-date changes to the source code, provided from all over the Internet. Of course, the nightly builds may also contain newly-introduced bugs, but hey- if you feel adventurous, you can help make CyanogenMod better by trying these experimental builds and reporting back bugs to the developers.
So what is the difference between Android and CyanogenMod?
About 1-2 times a year, the vanilla Android operating system (known as AOSP, or the Android Open Source Project) is internally developed, then released to the public, by Google. They provide the source code to anyone who wants to download it. The CyanogenMod community, comprised of unpaid volunteers and enthusiasts from around the world, takes this newest Android code and "ports" it to dozens of new and older (aka "legacy") devices. At the same time, other CyanogenMod developers start adding features, fixes, and improvements that Google didn't include to the CyanogenMod code, which benefits all the devices. The CyanogenMod community has a whole infrastructure for people to build and test experimental versions, report bugs, and contribute back to the source code.
Sometimes features that started in CyanogenMod have appeared in newer version of "official" Android. And every time Android does a new "code dump" of their latest version, CyanogenMod benefits from Google's changes.
In this way, CyanogenMod is one (but not the only) community distribution of what started as vanilla AOSP. The Android community is vibrant, with numerous "modders" and "themers" and "performance enhancers" taking the source code and doing incredible things to it. Generally, there is a spirit of sharing knowledge and empowering people to experiment with controlling their devices, often giving old phones new life, and hopefully having fun in the process.
What does it all mean to me?
CM is an alternative operating system intended to replace the one pre-installed on your smart phones and tablets. If you've got an older device that isn't getting updates anymore, or if your device seems unusually slow, or maybe you're sick of spyware, adware, and other unwanted garbage on your phone that you can't remove... Maybe your device is missing features or has been otherwise artificially limited in functionality. Perhaps you just could use a boost in performance... Or maybe you'd like to be more confident that your operating system has included some of the latest bug fixes...
If so, CM might be for you.
Who Uses CyanogenMod?
We've set up a page for users to talk generally about why they use CM and why you might too.
Go on, read the Testimonials and add your own!
There are a lot (and we mean a lot, as in millions) of CM users. In fact, check out the real-time stats showing those who elected to report their usage of CyanogenMod.