# CyanogenMod

CyanogenMod est un système d'exploitation de remplacement sur plus de 70 smartphones et tablettes, construit sur Android. Il offre des fonctionnalités et des options indisponibles sur les versions d’Android distribuées par les vendeurs sur leurs appareils.
Le 24 décembre 2016, il est annoncé que CyanogenMod ne serait plus développé, par suite de l'arrêt des services de Cyanogen Inc., l'entreprise qui portait le projet jusqu'alors. CyanogenMod n'existe plus, mais il est « forké » sous le nom de LineageOS, qui en reprend les grandes lignes. Le 1er janvier 2017, tous les services Cyanogen sont arrêtés.

## Présentation

Les fonctionnalités intégrées nativement dans CyanogenMod sont le choix du thème du système, le placement de toggles (boutons permettant d'activer/désactiver diverses fonctions de l'appareil) dans la barre de notification, ainsi que d'autres modifications de l'interface utilisateur, le support du format audio FLAC, l'accès au protocole de communication Access Point Name, un client OpenVPN, la possibilité de redémarrer son appareil, le support du modem attaché via Wifi, Bluetooth et USB, l'overclocking et le paramétrage avancé du CPU, la gestion (sécurité, permissions) des applications Android. CyanogenMod a aussi pour objectif d'augmenter les performances et la fiabilité comparativement au système d'exploitation officiel.
CyanogenMod est développé sous licence open source, construit sur les versions officielles d'Android créées par Google mais en ajoutant du code tiers. Il contient aussi quelques logiciels propriétaires nécessaires au fonctionnement de CyanogenMod et qui n'ont pas d'équivalent libre (drivers, bibliothèques de communication de Google...). Il ne contient pas les applications Google permettant d'accéder au Play Store ni de logiciels tiers comme sur les distributions des constructeurs. Il est cependant possible d'ajouter, via un package fourni par CyanogenMod ou soi-même, les applications de Google.

## Histoire du développement

Peu après la sortie de l'HTC Dream, premier smartphone sous Android, aux États-Unis en septembre 2008, une méthode est découverte pour acquérir des droits d'utilisateur root grâce au noyau Linux composant le système d'exploitation. Avoir cet accès root permet, grâce à la nature open source d'Android, de modifier le système d'exploitation et d'installer cette nouvelle version sur son appareil.
Dans la même année, plusieurs systèmes d'exploitation modifiés pour le HTC Dream sont développés et distribués via internet. L'un d'eux, maintenu par un développeur nommé JesusFreke, devient rapidement populaire parmi les possesseurs du Dream. En octobre 2009, JesusFreke arrête de travailler sur son système d'exploitation et suggère aux utilisateurs de changer de version pour une ROM, construite sur celle de JesusFreke qui a été renforcée et développée par la développeuse Cyanogen (Stefanie Kondik$^,$), cette version s'appelle « CyanogenMod ». CyanogenMod gagne rapidement en popularité, et une petite communauté de développeurs appelée la CyanogenMod Team contribue à l'agrandissement de ce projet. En quelques mois le nombre d'appareils et de fonctionnalités grandit fortement, faisant de CyanogenMod l'une des distributions d'Android les plus connues.
Comme beaucoup de projets open source, CyanogenMod est développé via une gestion de versions décentralisée, et le code source est disponible sur Github, accessible à tous. Les contributeurs insèrent de nouvelles fonctionnalités ou des corrections de bug en utilisant le système de vérification de code source de Google. Les contributions peuvent être testées par tout le monde, et un vote est fait par les utilisateurs enregistrés avant d'être accepté définitivement par un développeur de CyanogenMod reconnu et intégré au système d'exploitation.

### CyanogenMod 6

Stefanie Kondik sortit CyanogenMod 6, construit sur Android 2.2 alias Froyo, pour le Nexus One, Dream, Magic, Droid (Milestone), Legend, Desire, Evo 4G, Hero, Wildfire, Incredible, HTC Aria et le T-Mobile myTouch 3G Slide. Une version release candidate est devenue disponible le 11 juillet 2010, et la version stable est disponible depuis le 28 octobre 2010.

### CyanogenMod 7

CyanogenMod 7 est construit sur Android 2.3 alias Gingerbread, ajoutant du code additionnel fourni par la CyanogenMod Team. Les parties de code customisées ont essentiellement été écrites par Stefanie Kondik mais de nombreuses parties viennent de la communauté XDA developers (le lanceur, le navigateur et autres) et de projets open source comme BusyBox.
Le développement commença quand Google donna le code source d'Android 2.3. Le 15 février 2011, la première release candidate de CyanogenMod 7 fut disponible sur de nombreux appareils$^,$. La quatrième release candidate sortit le 30 mars 2011 et apporta une compatibilité avec le Nook Color et des appareils similaires ainsi que la correction de nombreux bugs. Le 11 avril 2011, la version publique de CyanogenMod 7.0 sortit, construite sur Android 2.3.3. La dernière version stable, CyanogenMod 7.1, est sortie le 10 octobre 2011, construite sur Android 2.3.4.
CyanogenMod 7.2 (construite sur Android 2.3.7) est censée être la dernière mise à jour de la série 7.x. La première release candidate est sortie le 15 mars 2012, apportant la saisie de numéro prédictive, un nouvel écran de déverrouillage, des animations venues d'Ice Cream Sandwich et des corrections de bug. Les efforts de la CyanogenMod Team sont désormais dirigés vers CyanogenMod 9, construit sur Android 4 alias Ice Cream Sandwich. La version stable est arrivée le 18 juin 2012.

### CyanogenMod 8

La version 8 de CyanogenMod était prévue pour être construite sur Android 3 alias Honeycomb. Malheureusement, le code source d'Honeycomb n'a pas été fourni par Google avant l'apparition du code source d'Android 4.0 alias Ice Cream Sandwich. CyanogenMod 8 ne verra donc officiellement jamais le jour, CyanogenMod passant directement de la version 7.x à CyanogenMod 9.

### CyanogenMod 9

CyanogenMod 9 est construit sur le code source de Android Ice Cream Sandwich fourni par Google. Stefanie Kondik et son équipe ont annoncé avoir commencé le travail sur cette nouvelle version après la mise à disposition du code source de Android 4.0.1. En novembre 2011, des versions alpha ont été distribuées, en particulier sur les appareils Samsung comme le Nexus S et le Galaxy S. Le 26 juin 2012, la première Release Candidate de CyanogenMod 9 voit le jour. La version stable est diffusée officiellement le 16 août 2012, l'équipe de développement a souligné que cette version ne serait pas entretenue (contrairement à la branche CyanogenMod 7) sachant que la quasi-totalité des terminaux supportant la version 9 supporteront la version 10.

### CyanogenMod 10/10.1/10.2

CyanogenMod 10 est construit sur le code source de Android Jelly Bean. Le développement a débuté dès la mise en place d'une version stable de CyanogenMod 9. Les premières versions sont disponibles depuis le 18 août 2012 sur une dizaine de terminaux. La version finale de CyanogenMod 10.1 est sortie en version stable le 24 juin 2013 et est disponible pour installation à plus d'une cinquantaine de terminaux, dont tous les terminaux Google Nexus.
CyanogenMod 10.1 est construit sur Android Jelly Bean 4.2.2. Une version 10.1.2 est sortie le 13 juillet 2013 pour combler des failles de sécurité trouvées par les équipes de Google.
CyanogenMod 10.2 est construit sur Android Jelly Bean 4.3. Le développement a commencé le 24 juillet 2013. La version 10.2 RC1 est disponible le 22 novembre 2013. La version finale est disponible depuis le 3 décembre 2013 et est construite sur Android 4.3.1 Jelly Bean.

### CyanogenMod 11

CyanogenMod 11 est construit sur Android 4.4 Kitkat. La première version M1 pour la gamme Nexus a été publiée le 5 décembre 2013.
La version M2 est construite sur Android 4.4.1 KitKat et corrige de nombreux bug.

### CyanogenMod 11s

C'est la version de CyanogenMod qui équipe le OnePlus One, elle est aussi construite sur Android 4.4 Kitkat

### CyanogenMod 12/12.1

CyanogenMod 12 est construit sur le code source d'Android 5.0 Lollipop. La version 12.1 est construite sur le code source d'Android 5.1 Lollipop

### CyanogenMod 12s

C'est la dernière version de Cyanogenmod qui équipe les OnePlus One, disponible en OTA (Over the Air, mise à jour qui se télécharge directement via le réseau mobile, sans action de l'utilisateur) depuis la version 11S. Elle intègre la version 5.0.2 de Android ainsi que les logiciels tiers de OnePlus.

### CyanogenMod 13

Annoncée le 8 octobre 2015, la prochaine version de CyanogenMod est construite sur Android Marshmallow.

### CyanogenMod 14.1

CyanogenMod 14.1 est construit sur le code source d'Android 7.1 Nougat.
Les derniers builds sont construits sur la version 7.1.1
CM14.1 apporte les lot de fonctionnalité de Android 7 Nougat. À savoir le nouveau mode multi-fenêtres, sa nouvelle interface, la 3D Touch de Google et un mode Doze modifié. Cependant le CM THEME n'a pas été encore porté.
Le développement est en cours et plusieurs appareils sont ajoutés au fil du temps. Pour l'instant les appareils compatibles sont :
* angler (Nexus 6P)
* bullhead (Nexus 5X)
* cancro (Xiaomi Mi3w et Mi4)
* d855 (LG G3)
* falcon, peregrine, thea et titan (différentes variantes du Moto G)
* h811/h815 (LG G4)
* kite, kitedv, kitespr, kiteusc et kitevzw (Samsung Galaxy S5)
* oneplus3 (OnePlus 3)
* Z00L, Z00T (Zenfone 2)
Mise à jour du 1er décembre 2016 :
* piccolo (BQ Aquaris M5)
* hiaeul (HTC One A9 GSM US
* m8 (HTC One M8)
* m8d (HTC One M8 Dual SIM)
* jagnm (LG G3 Beat)
* jag3gds (LG G3 S)
* armani (Xiaomi Redmi 1S)
* v500 (LG G Pad 8.3)
* tsubasa (Sony Xperia V)
* shamu (Nexus 6)
* r7plus (Oppo R7 Plus)
* r5 (Oppo R5 / R5s)
* P024 (Asus ZenPad 8.0 (Z380KL))
* osprey (Motorola Moto G 2015)
* oneplus2 (OnePlus 2)
* nicki (Sony Xperia M)
* mint (Sony Xperia T)
* mako (Nexus 4)
* klte (Samsung Galaxy S5)
* huashan (Sony Xperia SP)
* hayabusa (Sony Xperia TX)
Mise à jour du 5 décembre 2016 :
* hammerhead (Google Nexus 5)
* ether (Nextbit Robin)
* i9300 (Samsung Galaxy S3)
* clark (Motorola Moto X Pure Edition (2015))
* v410 (LG G Pad 7.0 LTE)
Mise à jour du 9 décembre 2016 :
* t6 (HTC One Max)
* vegetalte (BQ Aquaris E5 4G)
* victara (Motorola Moto X 2014)
* find7 (Oppo Find 7a)
* find7s (Oppo Find 7s)
* n3 (Oppo N3)
* hydrogen (Xiaomi Mi Max)
* kenzo (Xiaomi Redmi Note 3)
* lux (Motorola Moto X Play)
* ido (Xiaomi Redmi 3/Prime)
* huashan (Sony Xperia SP)
* flo (Nexus 7 2013 WiFi)
* acclaim (Nook Tablet)

## Mascotte

Le 4 avril 2012, CyanogenMod révèle « Cid », la nouvelle mascotte de CyanogenMod, remplaçant l'ancienne mascotte, « Andy le Bugdroid skateur ». Conçue par l'utilisateur Ciao, Cid est l’abréviation de « CyanogenMod ID ».
* Ancien logo

## Outils

Le code source de CyanogenMod contient le ClockworkMod Recovery, une « image recovery » entretenue par Koush (Koushik Dutta), qui est utilisée lors de l'installation de CyanogenMod ou d'autres mises à jour du système d'exploitation. Une image recovery est un mode de boot spécial, qui est utilisé pour restaurer l'appareil, le formater ou installer un nouveau système d'exploitation comme CyanogenMod. ClockworkMod Recovery peut être installé automatiquement sur des appareils rootés supportés par CyanogenMod grâce à des applications comme « ROM Manager », disponible sur Google Play, ou être installé directement avec des modes d'amorçage spécifiques aux appareils. Il s'agit pour la plupart du temps du mode Fastboot (Nexus, LG, HTC, Sony, etc.) ou Odin (Samsung), accompagné d'un bootloader déverrouillé.

## Réaction des entreprises

Pendant longtemps, la réponse des constructeurs de smartphones et tablettes était très négative face au développement de systèmes d'exploitation par des tiers. Les constructeurs parlent d'un fonctionnement incorrect sur les appareils fonctionnant via un OS non officiel et entraînant la suppression de la garantie sur l'appareil touché. Les opérateurs en ont aussi une vision négative, CyanogenMod offrant parfois des fonctionnalités disponibles seulement en option chez les opérateurs (comme le tethering). Les constructeurs et les opérateurs ont ainsi mis des obstacles aux utilisateurs en bloquant le bootloader et en limitant l'accès aux permissions de root sur la plupart des appareils.
Toutefois, la communauté autour du logiciel a grandi et est devenue de plus en plus populaire$^,$, entraînant la mise en place d'une déclaration par la bibliothèque du Congrès des États-Unis d'Amérique, autorisant l'usage du root sur les appareils mobiles ; les constructeurs et opérateurs ont donc changé de position autour de CyanogenMod et des autres distributions, comme HTC, Motorola, Samsung$^,$ et Sony Ericsson sont désormais pour le développement de systèmes d'exploitation tels que CyanogenMod.
En 2011, de nombreux utilisateurs d'appareils d'ancienne génération se sont tournés vers CyanogenMod afin de mettre à jour leur téléphone. En effet, les constructeurs (comme HTC), ayant cessé de supporter activement leurs anciennes gammes, ont débloqué les bootloaders pour permettre l'installation d'OS alternatifs. Samsung a même offert des Galaxy S II à la CyanogenMod Team en demandant la mise en place de CyanogenMod sur leurs appareils.Cependant tous les constructeurs ne sont adeptes de cette méthode, par exemple Huawei à partir de 2018 interdit catégoriquement de fournir le code de déverrouillage du chargeur de démarrage (bootloader) afin d'empêcher l'installation de systèmes tiers. Des outils libres peuvent pallier ce manque d'ouverture du fabricant chinois.

## Licence

Depuis la version 4.1.11.1, CyanogenMod inclut plusieurs applications appartenant à Google, comme Gmail, Maps, Play, Talk et YouTube, ainsi que des drivers propriétaires. Ces packages sont inclus avec les versions distribuées d'Android, mais ne sont pas en licence libre. Après que Google a envoyé une ordonnance de cessation et d'abstention à la développeuse en chef de CyanogenMod (Stefanie Kondik), demandant l'arrêt de la distribution des applications mentionnées, le développement fut stoppé durant quelques jours$^,$$^,$$^,$. La réaction de nombreux utilisateurs de CyanogenMod fut hostile, certains affirmant que les menaces juridiques de Google allaient nuire à leur propre intérêt, estimant que Google violait ainsi sa devise « Don't be evil » et le challenge que Google donne à la communauté open source depuis de nombreuses années$^,$$^,$. Après une déclaration de Google clarifiant sa position et une négociation entre Google et Cyanogen, il a été décidé que le projet CyanogenMod pourrait continuer tant que le bundle contenant les composants de la « Google Experience » ne serait pas stocké directement dans la ROM$^,$. Il a également été déterminé que les applications propriétaires de Google pourraient être sauvegardées et réinstallées sur le téléphone à l'installation de CyanogenMod sans violer un quelconque copyright. Cyanogen a aussi prévenu que, bien qu'il n'y ait plus de problème avec Google, il existe un risque d'avoir des problèmes avec des licences ou des sources closes provenant de drivers propriétaires. Cependant, la CyanogenMod Team est en train de reconstruire le code source afin de ne plus avoir de problème avec les licences des drivers. L'équipe reçoit aussi l'assistance d'employés de Google.

## Historique des versions

| Version de CyanogenMod | Version d'Android | Date de sortie | Détails |
| 3.1 | Android 1.5 (Cupcake) | 2009 | |
| 3.2 | Android 1.5 (Cupcake) | 2009 | |
| 3.3.x | Android 1.5 (Cupcake) | 2009 | |
| 3.4.x | Android 1.5 (Cupcake) | 2009 | |
| 3.5.x | Android 1.5 (Cupcake) | 2009 | |
| 3.6.x | Android 1.5 (Cupcake) | 1er juillet 2009 | Construit sur Android 1.5r3 depuis la 3.6.8 |
| 3.9.x | Android 1.5 (Cupcake) | 22 juillet 2009 | Ajout du support du format de fichier FLAC dans la version 3.9.3 |
| 4.0.x | Android 1.6 (Donut) | août 2009 | |
| 4.1.x | Android 1.6 (Donut) | 30 août 2009 | Construit sur Android 1.6 (Donut) depuis la 4.1.4 QuickOffice retiré depuis la 4.1.4 Les logiciels estampillés Google sont proposés séparément depuis la 4.1.99 |
| 4.2.x | Android 1.6 (Donut) | 24 octobre 2009 | Support du partage de connexion USB depuis la 4.2.3 Construit sur Android 1.6r2 depuis la 4.2.6 Ajout du geste pinch-to-zoom pour le navigateur depuis la 4.2.11 Ajout des gestes pinch-to-zoom et swipe pour la galerie depuis la 4.2.11 |
| 5.0.0 | Android 2.0 / 2.1 (Eclair) | 14 février 2010 | |
| 5.0.1 | Android 2.0 / 2.1 (Eclair) | 14 février 2010 | |
| 5.0.2 | Android 2.0 / 2.1 (Eclair) | 14 février 2010 | |
| 5.0.3.x | Android 2.0 / 2.1 (Eclair) | 20 février 2010 | |
| 5.0.4.x | Android 2.0 / 2.1 (Eclair) | 27 février 2010 | |
| 5.0.5.x | Android 2.0 / 2.1 (Eclair) | 19 mars 2010 | |
| 5.0.6 | Android 2.0 / 2.1 (Eclair) | 16 avril 2010 | |
| 5.0.7 | Android 2.0 / 2.1 (Eclair) | 25 mai 2010 | |
| 5.0.8 | Android 2.0 / 2.1 (Eclair) | 19 juillet 2010 | Introduction d'ADWLauncher en tant que launcher par défaut |
| 6.0.x | Android 2.2 (FroYo) | 28 août 2010 | Support de deux caméras à la fois (avant et arrière) Support du Ad hoc en WiFi |
| 6.1.x | Android 2.2 (FroYo) | 6 décembre 2010 | Construit sur Android 2.2.1 |
| 7.0 | Android 2.3 (Gingerbread) | 11 avril 2011 | Construit sur Android 2.3.3 La barre de notification est pourvue de « toggles » (interrupteurs du WiFi, Bluetooth, etc.) |
| 7.0.1 | Android 2.3 (Gingerbread) | 25 avril 2011 | |
| 7.0.2 | Android 2.3 (Gingerbread) | 25 avril 2011 | |
| 7.0.3 | Android 2.3 (Gingerbread) | 6 mai 2011 | |
| 7.1.x | Android 2.3 (Gingerbread) | 10 octobre 2011 | Construit sur Android 2.3.7 Partage de connexion via Bluetooth |
| 7.2.x | Android 2.3 (Gingerbread) | 16 juin 2012 | Correction de nombreux bugs (en particulier, grâce à l'utilisation des sources d'Ice Cream Sandwich) |
| 8.x | Android 3.x (Honeycomb) | Non développé | Cette version n'a jamais été développée en raison de la non-distribution du code source d'Android 3.0. Elle a été distribuée que bien plus tard. |
| 9.0.x | Android 4.0.4 (Ice Cream Sandwich) | 9 août 2012 | Ajout du Trebuchet launcher : semblable à l'officiel, il propose des options en plus (nombre de pages, dimension des widgets, etc.) |
| 9.1.x | Android 4.0.4 (Ice Cream Sandwich) | 29 août 2012 | Ajout de SimplyTapp |
| 10 | Android 4.1 (Jelly Bean) | 13 novembre 2012 | Combine les améliorations de Jelly Bean avec CyanogenMod9, l'application Google Chrome n'est pas présente nativement (sauf pour les nouveaux appareils de la famille « Nexus » de Google). |
| 10.1 | Android 4.2 (Jelly Bean) | 20 janvier 2013 | Ajout des nouveautés d'Android 4.2 |
| 10.1.1 | Android 4.2 (Jelly Bean) | 10 juillet 2013 | Correction de la faille « Master Key » |
| 10.1.2 | Android 4.2 (Jelly Bean) | 12 juillet 2013 | Correction |
| 10.1.3 | Android 4.2 (Jelly Bean) | 28 août 2013 | Correction |
| 10.2 | Android 4.3 (Jelly Bean) | 2 décembre 2013 | Ajout des nouveautés d'Android 4.3, CMAccount |
| 10.2.1 | Android 4.3 (Jelly Bean) | 31 janvier 2014 | Corrections de bugs, nouvelles fonctionnalités, support de nouveaux terminaux |
| 11 | Android 4.4 (KitKat) | 12 décembre 2013 | Ajout des nouveautés d'Android 4.4, Trebuchet Launcher pour Android 4.4 |
| 11s | Android 4.4 (KitKat) | Juin 2014 | Version installée nativement sur le Oneplus One (global version) |
| 12 | Android 5.0.2 (Lollipop) | 6 janvier 2015 | Ajout des nouveautés d'Android Lollipop, versions officielles nightly disponibles. |
| 12.1 | Android 5.1 (Lollipop) | Mars 2015 | Construit sur Android 5.1 |
| 13 | Android 6.0 (Marshmallow) | 24 novembre 2015 | Construit sur Android 6.0 |
| 14 | Android 7.0 (Nougat) | Non développé | |
| 14.1 | Android 7.1 (Nougat) | 9 novembre 2016 | Construit sur Android 7.1 |