CyanogenMod

From Infogalactic: the planetary knowledge core
(Redirected from Cyanogenmod)
Jump to: navigation, search
CyanogenMod
CyanogenMod logo.svg
CyanogenMod 13 homescreen english.png
The default CyanogenMod 13 homescreen, based on Android 6.0 "Marshmallow"
Developer CyanogenMod open-source community[1]
Written in C (core), C++ (some third party libraries), Java (UI)
OS family Unix-like
Working state Current
Source model Open source
Initial release 3.1 (Dream & Magic) July 1, 2009; 15 years ago (2009-07-01)
Latest release 12.1 YOG7D / 17 November 2015; 9 years ago (2015-11-17)
Latest preview 13.0 nightlies / 24 November 2015; 9 years ago (2015-11-24)[2]
Marketing target Firmware replacement for Android Mobile Devices
Available in
Update method Over-the-air (OTA), ROM Flashing
Package manager APK or Google Play Store (if installed)
Platforms ARM
Kernel type Monolithic (Linux kernel)
Default user interface Android Launcher (3, 4)

ADW Launcher (5, 6, 7)

Trebuchet Launcher (9, 10, 11, 12, 13)
License Apache License 2 and GNU GPL v2,[3] with some proprietary libraries[4][5]
Official website cyanogenmod.org

CyanogenMod (pronounced /s.ˈæn..ˌɛn.mɒd/ or sigh-ah-no-gen-mod), usually abbreviated to CM, is an open-source operating system for smartphones and tablet computers, based on the Android mobile platform. It is developed as free and open source software based on the official releases of Android by Google, with added original and third-party code. It is based on a rolling release development model.

CyanogenMod offers features and options not found in the official firmware distributed by mobile device vendors. Features supported by CyanogenMod include native theming support,[6] FLAC audio codec support, a large Access Point Name list, an OpenVPN client, Privacy Guard (per-application permission management application), support for tethering over common interfaces, CPU overclocking and other performance enhancements, unlockable bootloader and root access, soft buttons and other "tablet tweaks", toggles in the notification pull-down (such as Wi-Fi, Bluetooth and GPS), and other interface enhancements. CyanogenMod does not contain spyware or bloatware, according to its developers.[7][8] CyanogenMod is also said to increase performance and reliability compared with official firmware releases.[9]

Although only a subset of total CyanogenMod users elect to report their use of the firmware,[10] as of March 23, 2015, some reports indicate that over 50 million people run CyanogenMod on their phones.[11][12]

In 2013, project founder Steve Kondik announced that venture funding had been obtained to establish Cyanogen Inc. as a commercial enterprise to develop and market the firmware more widely. This announcement has led to controversy within the community, with some developers asserting that rights and licensing issues, acknowledging/compensating past developers and honoring the original ethos of the community project, are not being adequately addressed.[13] These claims were rejected by Kondik, who affirmed support for the community and stated that most CyanogenMod code, as with Android generally, is bound by a non-restrictive Apache license.

History and development

Soon after the introduction of the HTC Dream (named the "T-Mobile G1" in the United States) mobile phone in September 2008, a method was discovered to attain privileged control (termed "root access") within Android's Linux-based subsystem.[14] Having root access, combined with the open source nature of the Android operating system, allowed the phone's stock firmware to be modified and re-installed onto the phone.

In the following year, modified firmwares for the Dream were developed and distributed by Android enthusiasts. One, maintained by a developer named JessFreke, became popular among Dream owners. In August 2009, JessFreke stopped work on his firmware, and suggested users switch to a version of his ROM that had been further enhanced by developer Cyanogen (Steve Kondik) called "CyanogenMod".[15]

CyanogenMod grew in popularity, and a community of developers, called the CyanogenMod Team (and informally "Team Douche"[16]) made contributions. Within a few months, the number of devices and features supported by CyanogenMod blossomed, and CyanogenMod became one of the popular Android firmware distributions.

Similar to many open source projects, CyanogenMod is developed using a distributed revision control system with the official repositories being hosted on GitHub.[17] Contributors submit new features or bugfix changes using Gerrit.[18] Contributions may be tested by anyone, voted up or down by registered users, and ultimately accepted into the code by one of a handful of CyanogenMod developers.

A version of ADW.Launcher, an alternative launcher (home screen) for the Android operating system, became the default launcher on CyanogenMod 5.0.8. The launcher provides additional features not provided by the default Android launcher, including more customization abilities (including icon themes, effects, and behavior), the ability to backup and restore configuration settings, and other features.[19][20] As of version 9, CyanogenMod's own launcher, Trebuchet, is included with the firmware.

Initially, CyanogenMod releases were provided on a nightly, milestone, and "stable version" schedule; as of CyanogenMod 11 M6, the "stable" label will no longer be used, having been supplanted by "milestone" M-builds that are part of the CyanogenMod's rolling release development model.[21]

Some unofficial builds for supported devices are listed in CyanogenMod Wiki.[22]

CyanogenMod 7

CyanogenMod 7 firmware is based on Android 2.3 Gingerbread with additional custom code contributed by the CyanogenMod Team. The custom portions of CyanogenMod are primarily written by Cyanogen (Steve Kondik) but include contributions from the xda-developers community (such as an improved launcher tray, dialer, and browser) and code from established open source projects (such as BusyBox in the shell).[23]

CyanogenMod 7 development began when Google released Android 2.3's source code.[24] On 15 February 2011, the first release candidates of CyanogenMod 7 were rolled out on several of the supported devices.[25][26] The fourth release candidate was released on 30 March 2011 and brought increased support for the Nook Color and similar devices as well as many bug fixes.[27] On 11 April 2011, the public version of CyanogenMod 7.0 was released, based on Android 2.3.3.[28] CyanogenMod 7.1 was released on 10 October 2011, based on Android 2.3.4.[29] The latest stable version, CyanogenMod 7.2 was released on 16 June 2012, based on Android 2.3.7,[30] bringing a predictive phone dialer, lock-screen updates, ICS animation backports and many bug fixes.[31]

A Motorola Flipout displaying the CyanogenMod 7.2 (Android 2.3) boot animation.

CyanogenMod 8

CyanogenMod version 8 was planned to be based on Android 3.x Honeycomb. However, as the source code for Honeycomb wasn't provided by Google until it appeared in the source tree history of its successor, Android 4.0 Ice Cream Sandwich, the release schedule advanced from CyanogenMod 7 (Gingerbread) directly to CyanogenMod 9 (Ice Cream Sandwich).

CyanogenMod 9

CyanogenMod 9 is based on Google's Android 4.0 Ice Cream Sandwich and the first version of CyanogenMod to use the Trebuchet launcher.[32] Steve Kondik and his team have announced that they had begun work on the new release after Google released the source code of Android 4.0.1.[33] Development on this release took longer than with previous releases due to the significance of the changes between Android 2.3 "Gingerbread" and 4.0 "Ice Cream Sandwich", and the team took this opportunity to clarify their vision for the ROM and rethink any modifications which were no longer necessary due to improvements within Android.[34]

By the last days of November 2011, some alpha versions had been distributed, in particular for the Samsung mobile phones Nexus S and Galaxy S. On 9 August 2012, after various betas and release candidates, CyanogenMod released the finished version of CyanogenMod 9.[35] Given that the next version of Android, 4.1 "Jelly Bean", had already been released by that point, development moved swiftly on to CyanogenMod 10. On 29 August 2012, CyanogenMod released a minor update, version 9.1.0, bringing bugfixes and an app called SimplyTapp for NFC payments.[36]

On 4 April 2012, during development, CyanogenMod unveiled "Cid" (pronounced /sɪd/), the new CyanogenMod mascot, which replaced the previous mascot, Andy the skateboarding "bugdroid".[37] Designed by user Ciao, Cid (C.I.D.) is an abbreviation of "Cyanogenmod ID".

CyanogenMod 10

CyanogenMod 10.0
In early July 2012, the CyanogenMod team announced, via its Google+ account, that CyanogenMod 10 would be based on Android 4.1 Jelly Bean.[38] Nightly builds of CyanogenMod 10 were made available for many devices supported by CyanogenMod 9.[39][40] Starting with the September 2012 M1 build, the CyanogenMod team began monthly "M-series" releases. At the beginning of each month, a soft freeze of the CyanogenMod codebase is put into effect; once the team deems a build stable enough for daily use, it is released under the milestone or "M" series.[41]
On 13 November 2012, final stable builds were released for several devices.[42]
CyanogenMod 10.1
CyanogenMod 10.1 is based on Android 4.2 Jelly Bean.[43] Nightly versions are currently being released for an array of devices, along with M Snapshots (Monthly Snapshots) which are being released for select devices.
On 24 June 2013, the CyanogenMod 10.1.0 codebase (based on Android version 4.2.2) was moved to "stable" status, with a majority of currently-supported devices receiving stable builds on the same day.[44][45] CyanogenMod's developers have indicated that they will continue the Monthly Snapshot schedule to incorporate new features until the next Cyanogenmod release. Unfortunately, many devices utilizing Samsung Exynos and Nvidia Tegra 2 SoC's were not part of the initial release.
CyanogenMod 10.2
The first nightly release of CyanogenMod 10.2, which is based on Android 4.3 Jelly Bean, began rolling out for a selected number of devices on 14 August 2013.[46] It brings in some new enhancements to the system, such as Bluetooth Low Energy and OpenGL ES 3.0 support, a renewed Phone app, 4K resolution support as well as many security and stability improvements.

CyanogenMod 11

CyanogenMod 11

On 6 November 2013 the CyanogenMod team started pushing the code of CyanogenMod 11, based on Android 4.4 KitKat, to GitHub.[47] The first nightly release of CyanogenMod 11.0 began rolling out for a selected number of devices on 5 December 2013.[48] Since then, M-builds have been released every month for supported devices, offering a more stable experience than nightlies. With build M6 it was clarified that CyanogenMod would no longer be releasing final builds specially tagged "stable", but instead would utilize the rolling release model with M-builds representing a stable channel.[21]

The global OnePlus One is shipped with a variant of CyanogenMod 11 M9 known as "CyanogenMod 11S". The latest version of CyanogenMod 11S for the One is 11.0-XNPH05Q, based on CyanogenMod 11 M11 and Android 4.4.4 "KitKat", and was released as an over-the-air (OTA) update in February 2015.[citation needed]

CyanogenMod 12

The first nightly release of CyanogenMod 12, based on Android 5.0 Lollipop, began rolling out for a selected number of devices on 6 January 2015. A stable snapshot was released on 25 June 2015 and a security patch snapshot was released on 1 September 2015.[49]

Cyanogen OS 12, a variant of CyanogenMod 12 for the OnePlus One and Yu Yureka was released in April 2015. Yu Yuphoria got Cyanogen OS 12 out-of-the-box when it was launched in May 2015.[50]

CyanogenMod 12.1

The first nightly release of CyanogenMod 12.1, based on Android 5.1, was announced on 16 April 2015.[51] A stable snapshot build was released on 1 September 2015 but nightly builds continue to roll out every day.

Lenovo ZUK Z1, Wileyfox Swift and Storm got Cyanogen OS 12.1 out-of-the-box when it was launched in September 2015.[52][53] YU's Yureka and Yureka Plus got a Cyanogen OS 12.1 OTA update.[54]

Cyanogenmod 13

The first nightly release of CyanogenMod 13.0, based on Android 6.0, was released on 23 November 2015 for a small number of devices, but was gradually developed for other devices.[2]

A few weeks later, CyanogenMod was given a minor update, and was based on Android 6.0.1.

Cyanogen Inc.

Cyanogen logo from March 2015
Cyanogen logo from April 2014

Cyanogen Inc. is a venture funded company with offices in Seattle and Palo Alto, California, announced officially in September 2013, which aims to commercialize CyanogenMod.[55][56]

The funding was led by Mitch Lasky of Benchmark and raised $7 million.[57]

Commercialization controversy

Rumors of plans to commercialize CyanogenMod as well as the subsequent announcement of Cyanogen Inc. has led to a certain level of discord within the CyanogenMod community. Several CyanogenMod developers have raised concerns that developers who had provided their work in the past were not being appropriately acknowledged or compensated for their free work on what was now a commercial project, further that the original ethos of the community project was being undermined and that these concerns were not being adequately addressed by Cyanogen Inc.[13] Examples include "The "Focal" camera app developer Guillaume Lesniak ("'xplodwild') whose app was withdrawn from CyanogenMod allegedly following demands by the new company to adopt closed-source modifications and licensing.[13][58][59]

In response, Steve Kondik affirmed commitment to the community, stating that the majority of CyanogenMod historically did not use GPL but the Apache licence (the same license used by Google for Android), and dual licensing was being proposed in order to offer "a stronger degree of protection for contributors... while still offering CM some of the freedoms that the Apache license offers":[60]

<templatestyles src="Template:Blockquote/styles.css" />

Google has gone to great lengths to avoid the GPL by building their own low level components such as Dalvik and Bionic. In CM, the only GPL component that currently comes to mind that we’ve added is our Torch app (originally called Nexus One Torch) [...] The Apache license specifically ALLOWS precisely what you suggest it doesn’t. A dual-license would do the same, but also protect contributors by forcing unaffiliated entities to contribute back if they use the software in a commercial context. It’s not so that CM can close the source and still ship it to our users. Again, we don’t have any plans to change licenses.

Focal is a special case– it has to be GPL because [...] Focal uses a number of GPL components under the hood [...] I proposed the dual-license extension as a way to work around some of the inherent problems with the GPL and give a greater degree of freedom to both him and CM as an organization. This is a very common licensing model in the open-source world.

But none of this matters. We’re not closing the source or changing the license of any code that has been contributed to the project.

Developer Entropy512 also observed that CyanogenMod was legally bound by its position to make some of the firmware changes, because of the Android license and marketing conditions ("CTS terms") which specify what apps may and may not do, and these were raised in part by Android developers at Google informally speculatively as a result of perceptions of CyanogenMod’s high profile in the market.[61]

In his 2013 blog post on Cyanogen's funding, venture funder Mitch Lasky stated:[57]

<templatestyles src="Template:Blockquote/styles.css" />

Benchmark has a long history of supporting open source projects intent on becoming successful enterprises. Our open source history includes Red Hat, MySQL, SpringSource, JBoss, Eucalyptus, Zimbra, Elasticsearch, HortonWorks, and now Cyanogen. We’ve been behind many of the most successful open source software companies in the world. We have a deep respect for the special needs of these businesses, and how to build companies while preserving the transparency and vigor of the open source communities.

In January 2015, it was reported that Microsoft had invested in Cyanogen, and that this might be part of a strategy to create an Android version that worked well with Microsoft platforms.[62][63] In April 2015, Cyanogen announced a strategic partnership with Microsoft, to integrate Microsoft apps and services into Cyanogen OS.[64] In Janurary 2016, Cyanogen rolled out an update that started advertising Microsoft applications when a user attempts to open certain file types on Cyanogen OS phones.[65]

Industry reaction

<templatestyles src="Module:Hatnote/styles.css"></templatestyles>

Early responses of tablet and smartphone manufacturers and mobile carriers were typically unsupportive of third-party firmware development such as CyanogenMod. Manufacturers expressed concern about improper functioning of devices running unofficial software and the related support costs.[66] Moreover, modified firmwares such as CyanogenMod sometimes offer features for which carriers would otherwise charge a premium (e.g., tethering). As a result, technical obstacles including locked bootloaders and restricted access to root permissions were common in many devices.

However, as community-developed software has grown more popular[67][68] and following a statement by the U.S. Library of Congress that permits "jailbreaking" mobile devices,[69] manufacturers and carriers have softened their position regarding CyanogenMod and other unofficial firmware distributions, with some, including HTC,[70] Motorola,[71] Samsung[72][73] and Sony Ericsson,[74] providing support and encouraging development. As a result of this, in 2011 the need to circumvent hardware restrictions to install unofficial firmware lessened as an increasing number of devices shipped with unlocked or unlockable bootloaders, similar to the Nexus series of phones. Device manufacturers HTC[66] and Motorola announced that they would support aftermarket software developers by making the bootloaders of all new devices unlockable, although this still violates a device's warranty. Samsung sent several Galaxy S II phones to the CyanogenMod team with the express purpose of bringing CyanogenMod to the device,[73] and mobile carrier T-Mobile USA voiced its support for the CyanogenMod project, tweeting "CM7 is great!".[75]

Phone manufacturers have also taken to releasing "developer editions" of phones that are unlocked.[76]

Licensing

Until version 4.1.11.1, CyanogenMod included proprietary software applications provided by Google, such as Gmail, Maps, Android Market (now known as Play Store), Talk (now Hangouts), and YouTube, as well as proprietary hardware drivers. These packages were included with the vendor distributions of Android, but not licensed for free distribution. After Google sent a cease and desist letter to CyanogenMod's chief developer, Steve Kondik, in late September 2009 demanding he stop distributing the aforementioned applications, development ceased for a few days.[77][78][79][80] The reaction from many CyanogenMod users towards Google was hostile, with some claiming that Google's legal threats hurt their own interests, violated their informal corporate motto "Don't be evil" and was a challenge to the open-source community Google claimed to embrace.[81][82][83]

Following a statement from Google clarifying its position[84] and a subsequent negotiation between Google and Cyanogen, it was resolved that the CyanogenMod project would continue, in a form that did not directly bundle in the proprietary "Google Experience" components.[85][86] It was determined that the proprietary Google apps may be backed-up from the Google-supplied firmware on the phone and then re-installed onto CyanogenMod releases without infringing copyright.

On 28 September 2009, Cyanogen warned that while issues no longer remain with Google, there were still potential licensing problems regarding proprietary, closed-source device drivers.[87] On 30 September 2009, Cyanogen posted an update on the matter. Kondik wrote he was rebuilding the source tree, and that he believed the licensing issues with drivers could be worked out. He added that he was also receiving assistance from Google employees.[88] On 16 June 2012, the CyanogenMod 7.2 release announcement stated, "CyanogenMod does still include various hardware-specific code, which is also slowly being open-sourced anyway."[citation needed]

There is a CyanogenMod fork called Replicant that removes all proprietary software and drivers and thus avoids all these legal issues. On the other hand, it does not support devices which depend on proprietary drivers which is most phones in 2016.

Version history

<templatestyles src="Module:Hatnote/styles.css"></templatestyles>

CyanogenMod Main Version Android version Last or Major Release Recommended Build Release Date Notable changes[89]
Old version, no longer supported: 3 Android 1.5
(Cupcake)
Old version, no longer supported: 3.6.8.1 1 July 2009[90][better source needed] 3.6.8 onwards based on Android 1.5r3
Old version, no longer supported: 3.9.3 22 July 2009[91][better source needed] 3.9.3 onwards has FLAC support
Old version, no longer supported: 4 Android 1.5/1.6
(Cupcake/Donut)
Old version, no longer supported: 4.1.4 30 August 2009[92] 4.1.4 onwards based on Android 1.6 (Donut); QuickOffice removed from 4.1.4 onwards; Google proprietary software separated due to cease and desist from 4.1.99 onwards
Old version, no longer supported: 4.2.15.1 24 October 2009[93] 4.2.3 onwards has USB tethering support; 4.2.6 onwards based on Android 1.6r2; 4.2.11 onwards added pinch zoom for Browser, pinch zoom and swipe for Gallery.
Old version, no longer supported: 5 Android 2.0/2.1
(Eclair)
Old version, no longer supported: 5.0.8 19 July 2010[20] Introduced ADW.Launcher as the default launcher.
Old version, no longer supported: 6 Android 2.2
(Froyo)
Old version, no longer supported: 6.0.0 28 August 2010[94] Introduced dual camera and ad hoc Wi-Fi support, Just-in-time (JIT) compiler for more performance
Old version, no longer supported: 6.1.3 6 December 2010[95] 6.1.0 onwards based on Android 2.2.1.
Old version, no longer supported: 7 Android 2.3
(Gingerbread)
Old version, no longer supported: 7.0.3 10 April 2011[28] 7.0.0 onwards based on Android 2.3.3
Old version, no longer supported: 7.1.0 10 October 2011[96] Based on Android 2.3.7[31]
Old version, no longer supported: 7.2.0 16 June 2012[97] New devices, updated translations, predictive phone dialer, ability to control haptic feedback in quiet hours, lockscreen updates, ICS animation backports, ability to configure the battery status bar icon, many bug fixes[31]
8 Android 3.x
(Honeycomb)
N/A N/A CyanogenMod 8 was never released due to Google not releasing the source code for Android 3.0 Honeycomb.
Old version, no longer supported: 9 Android 4.0
(Ice Cream Sandwich)
Old version, no longer supported: 9.1 29 August 2012[36] Advanced security: deactivated root usage by default.[98] Added support for SimplyTapp.
Introduced Cyanogen's own launcher, Trebuchet.
Old version, no longer supported: 10 Android 4.1
(Jelly Bean)
Old version, no longer supported: 10.0.0 13 November 2012[99] Expandable desktop mode. Built-in, root-enabled file manager.
Android 4.2
(Jelly Bean)
Old version, no longer supported: 10.1.3 24 June 2013[100]
Android 4.3
(Jelly Bean)
Old version, no longer supported: 10.2.1 31 January 2014[100] Phone: Blacklist-Feature added.
Older version, yet still supported: 11 Android 4.4
(KitKat)
Older version, yet still supported: 11.0 XNG3C 31 August 2015[101] WhisperPush: Integration of TextSecure's (now Signal's) end-to-end encryption protocol as an opt-in feature. Enables sending encrypted instant messages to other users of CM and Signal.[102][103]

CyanogenMod ThemeEngine: new powerful theme engine that let user apply and mix custom themes that can edit resources file[104]

Current stable version: 12 Android 5.0
(Lollipop)
Older version, yet still supported: 12.0 YNG4N 1 September 2015[101] LiveDisplay: advanced display management tool, with features such as color, gamma, saturation and temperature calibration

Updates to theme engine: allows now separate theming for packages (used on CyanogenMod for NavigationBar and StatusBar, on CyanogenOS for AppThemer, which allows you to apply a different theme for each app) UI Revamp: all applications have been updated to the material theme AudioFX and Eleven: two new audio-related apps (Equalizer and Player)

Android 5.1
(Lollipop)
Current stable version: 12.1 YOG7D 17 November 2015 CyanogenPlatform SDK: allows third-party developers to add custom APIs to integrate their app with CyanogenMod
Latest preview version of a future release: 13 Android 6.0
(Marshmallow)
Latest preview version of a future release: 13.0 Nightly 24 November 2015[2] Multi-page Quick Settings menu.

Live Lockscreen: Allows entire lockscreen to be animated.

Legend:
Old version
Older version, still supported
Latest version
Latest preview version
Future release

Cyanogen OS

Cyanogen commercially develops operating systems pre-installed on some devices (OnePlus One, YU Yureka, YU Yuphoria, Andromax Q, Lenovo ZUK Z1, Wileyfox Swift, Wileyfox Storm) based upon the CyanogenMod source code.

Initially distinguished with the suffix -S (CyanogenMod 11S), with version 12 Cyanogen rebranded the custom offering as Cyanogen OS.

Differences between CyanogenMod and Cyanogen OS

Name Stock or replacement firmware? Based on: Pre-installed or manual installation required? Root access (Superuser)? Developers:
Cyanogen OS Stock firmware pre-installed on some smartphones. Android Open Source Project. Comes pre-installed on some devices. No Cyanogen
CyanogenMod Replacement firmware for devices with Android pre-installed. Manual installation required Yes The CyanogenMod community

Supported devices

CyanogenMod officially supports a large number of devices, including most Nexus and Google Play Edition devices. It provides SNAPSHOT (stable) and NIGHTLY (beta) builds for more than 150 devices (on the current development branch).[105]

See also

<templatestyles src="Div col/styles.css"/>

References

  1. Lua error in package.lua at line 80: module 'strict' not found.
  2. 2.0 2.1 2.2 Lua error in package.lua at line 80: module 'strict' not found.
  3. Lua error in package.lua at line 80: module 'strict' not found.
  4. Explaining Why We Don't Endorse Other Systems - CyanogenMod gnu.org
  5. freecyngn - Removing proprietary userspace parts from CM10+ xda-developers
  6. Lua error in package.lua at line 80: module 'strict' not found.
  7. Lua error in package.lua at line 80: module 'strict' not found.
  8. Lua error in package.lua at line 80: module 'strict' not found.
  9. Lua error in package.lua at line 80: module 'strict' not found.
  10. Lua error in package.lua at line 80: module 'strict' not found.
  11. Lua error in package.lua at line 80: module 'strict' not found.
  12. Lua error in package.lua at line 80: module 'strict' not found.
  13. 13.0 13.1 13.2 Guillaume Lesniak - Developer of "Focal" Camera App, Google+ post 2013-09-20 - covers licensing and dispute controversy with Cyanogen Inc.
  14. Lua error in package.lua at line 80: module 'strict' not found.
  15. Lua error in package.lua at line 80: module 'strict' not found.
  16. Lua error in package.lua at line 80: module 'strict' not found.
  17. Lua error in package.lua at line 80: module 'strict' not found.
  18. Lua error in package.lua at line 80: module 'strict' not found.
  19. Lua error in package.lua at line 80: module 'strict' not found.
  20. 20.0 20.1 Lua error in package.lua at line 80: module 'strict' not found.
  21. 21.0 21.1 Lua error in package.lua at line 80: module 'strict' not found.
  22. Unofficial Ports, CyanogenMod Wiki.
  23. development thread.
  24. Lua error in package.lua at line 80: module 'strict' not found.
  25. Lua error in package.lua at line 80: module 'strict' not found.
  26. Lua error in package.lua at line 80: module 'strict' not found.
  27. Lua error in package.lua at line 80: module 'strict' not found.
  28. 28.0 28.1 Lua error in package.lua at line 80: module 'strict' not found.
  29. Lua error in package.lua at line 80: module 'strict' not found.
  30. Lua error in package.lua at line 80: module 'strict' not found.
  31. 31.0 31.1 31.2 Lua error in package.lua at line 80: module 'strict' not found.
  32. Lua error in package.lua at line 80: module 'strict' not found.
  33. @cyanogen cyanogen ..and we're off. check back in 2 months :) #cm9 #ics, 2011/11/15, Twitter
  34. Lua error in package.lua at line 80: module 'strict' not found.
  35. Lua error in package.lua at line 80: module 'strict' not found.
  36. 36.0 36.1 Lua error in package.lua at line 80: module 'strict' not found.
  37. Lua error in package.lua at line 80: module 'strict' not found.
  38. Lua error in package.lua at line 80: module 'strict' not found.
  39. Lua error in package.lua at line 80: module 'strict' not found.
  40. Lua error in package.lua at line 80: module 'strict' not found.
  41. Lua error in package.lua at line 80: module 'strict' not found.
  42. Lua error in package.lua at line 80: module 'strict' not found.
  43. Lua error in package.lua at line 80: module 'strict' not found.
  44. Lua error in package.lua at line 80: module 'strict' not found.
  45. Lua error in package.lua at line 80: module 'strict' not found.
  46. Lua error in package.lua at line 80: module 'strict' not found.
  47. Lua error in package.lua at line 80: module 'strict' not found.
  48. Lua error in package.lua at line 80: module 'strict' not found.
  49. Lua error in package.lua at line 80: module 'strict' not found.
  50. Lua error in package.lua at line 80: module 'strict' not found.
  51. Lua error in package.lua at line 80: module 'strict' not found.
  52. http://www.zdnet.com/article/300-cyanogen-powered-zuk-1-coming-to-europe-us-in-september/
  53. http://www.ibtimes.co.uk/wileyfox-pins-smartphone-hopes-cyanogen-software-budget-pricing-1516999
  54. http://www.ibtimes.co.uk/cyanogen-12-1-os-update-finally-available-yu-yureka-yureka-plus-phones-1526888
  55. Lua error in package.lua at line 80: module 'strict' not found..
  56. Lua error in package.lua at line 80: module 'strict' not found..
  57. 57.0 57.1 Lua error in package.lua at line 80: module 'strict' not found.
  58. Lua error in package.lua at line 80: module 'strict' not found.
  59. Lua error in package.lua at line 80: module 'strict' not found.
  60. Lua error in package.lua at line 80: module 'strict' not found..
  61. Lua error in package.lua at line 80: module 'strict' not found.
  62. Lua error in package.lua at line 80: module 'strict' not found..
  63. Lua error in package.lua at line 80: module 'strict' not found.
  64. Cyanogen Announces Strategic Partnership with Microsoft
  65. http://www.androidpolice.com/2016/01/07/cyanogen-os-12-1-1-on-the-oneplus-one-is-promoting-microsoft-apps-via-the-open-with-dialog/
  66. 66.0 66.1 Lua error in package.lua at line 80: module 'strict' not found.
  67. Lua error in package.lua at line 80: module 'strict' not found.
  68. Lua error in package.lua at line 80: module 'strict' not found.
  69. Lua error in package.lua at line 80: module 'strict' not found.
  70. Lua error in package.lua at line 80: module 'strict' not found.
  71. Lua error in package.lua at line 80: module 'strict' not found.
  72. Lua error in package.lua at line 80: module 'strict' not found.
  73. 73.0 73.1 Lua error in package.lua at line 80: module 'strict' not found.
  74. Lua error in package.lua at line 80: module 'strict' not found.
  75. Lua error in package.lua at line 80: module 'strict' not found.
  76. Lua error in package.lua at line 80: module 'strict' not found.
  77. Lua error in package.lua at line 80: module 'strict' not found.
  78. Lua error in package.lua at line 80: module 'strict' not found.
  79. Lua error in package.lua at line 80: module 'strict' not found.
  80. Lua error in package.lua at line 80: module 'strict' not found.
  81. One of many forum discussions on the Google C&D.
  82. Reaction to C&D on Google's own discussion forum.
  83. Another thread on Google's Android forum.
  84. Lua error in package.lua at line 80: module 'strict' not found.
  85. Cyanogen updates users on licensing controversy.
  86. Lua error in package.lua at line 80: module 'strict' not found.
  87. Cyanogen's tweet about the driver issue.
  88. Quick Update from Cyanogen.
  89. Lua error in package.lua at line 80: module 'strict' not found.
  90. Lua error in package.lua at line 80: module 'strict' not found.
  91. Lua error in package.lua at line 80: module 'strict' not found.
  92. Lua error in package.lua at line 80: module 'strict' not found.
  93. Lua error in package.lua at line 80: module 'strict' not found.
  94. Lua error in package.lua at line 80: module 'strict' not found.
  95. Lua error in package.lua at line 80: module 'strict' not found.
  96. Lua error in package.lua at line 80: module 'strict' not found.
  97. Lua error in package.lua at line 80: module 'strict' not found.
  98. Lua error in package.lua at line 80: module 'strict' not found.
  99. Lua error in package.lua at line 80: module 'strict' not found.
  100. 100.0 100.1 Lua error in package.lua at line 80: module 'strict' not found.
  101. 101.0 101.1 Lua error in package.lua at line 80: module 'strict' not found.
  102. Lua error in package.lua at line 80: module 'strict' not found.
  103. Lua error in package.lua at line 80: module 'strict' not found.
  104. Lua error in package.lua at line 80: module 'strict' not found.
  105. Lua error in package.lua at line 80: module 'strict' not found.

External links