Limitless: the curious case of the Cydia fork project

Limitless Fork Header

John Coates, the creator of the popular patching platform Flex and a well-respected developer in the jailbreak community, announced this week the first public releases of a new endeavour called Limitless. Currently at Beta 6, this ambitious open project aims to bring newer features to Cydia’s traditional functionality by freeing it from some of the constraints which the stalwart package installer faces, for example, version compatibility reaching through every iOS back to iOS 2.0.

In recent times, increasing numbers of people have claimed that Cydia’s interface and feature-set are becoming antiquated and suggesting aspects that could be added to the application. However, with some notable exceptions, Cydia creator Jay Freeman (Saurik) has largely declined to add these features.

Cydia Homepage Old_New Cydia Install Old_New

Above are a couple of examples of changes which were merged into Cydia on request. The first image shows a before/after of Cydia’s homepage, when it received an updated UI to match the post-iOS 6 aesthetic. The second image is a before/after of the Cydia installation page, showing the same new design language. This second image also shows the evidence of another major change which Saurik made to Cydia: the program running as mobile rather than root. As a result of this, tweaks could be made for the Cydia application itself for the first time. The translucent installation screen seen in the last screenshot is due to the tweak Pheromone. So Cydia’s development has not stood completely still and user requests have on occasion been fulfilled, but in my experience this has been more often the exception than the rule.

Saurik has justified this decision to the community on several occasions on a variety of grounds, the main ones being concerns over preserving the legality of the jailbreaking ecosystem, and the desire to maintain total compatibility for Cydia with all jailbreakable devices simultaneously. Whilst these goals are at first sight admirable and have contributed to the central and enduring role that Cydia has played in jailbreaking, there has been some discussion as to the reasoning in enforcing the former, and the necessity of enforcing the latter.

As discussed, Saurik believes that his self-made toolchain for development of Cydia, which is inherently antiquated with the aim of pre-dating certain Apple software licensing restrictions, avoids violating legal agreements with Apple over the software which would give them grounds for moving against Cydia as an application, and jailbreaking in general. On the other hand, Saurik himself admits that in recent times this ethos has become more ‘in theory’ than ‘in practice’, and that Xcode tools have been used in Cydia development for convenience, so long as they achieve nothing that he could not have done without using them with a little extra work. Coates has also pointed out that since by using your iOS device you agree to the iOS Software License Agreement this reasoning may be moot, as you may already have violated the relevant terms, and that therefore using Xcode to develop makes no further difference to the violation of Apple’s terms. That sums up the state of affairs in their discussion of the legality of Cydia’s development.

As far as this point goes, I personally tend towards the side of Coates’ argument, for the following reasons. As he states, the overarching agreements governing your use of any iOS device already circumscribe the behaviour which Saurik is trying to avoid. In addition, whilst Apple has contested the DMCA exemption status of jailbreaking at every opportunity (losing in each case and ensuring jailbreaking’s basic legality), it has no history of prosecution against any individual who jailbreaks, nor against the developers of any software which facilitates it. It thus seems unlikely that the use of a newer version of their software will constitute the difference between them being legally hamstrung, and being able and willing to suddenly shut the operation down. If Apple truly desired to put an end to Cydia’s development, I believe their legal clout and its existing usages would be enough for them to try, and that Coates’ proposed change of usages would not be the final straw that breaks the camel’s back.

Overall, it seems that a nebulous collection of factors including, but not limited to, Apple’s traditional affinity with home-workshop innovation, its desire not to alienate and attract criticism from some of its most die-hard fans, its repeated porting of jailbreaking ideas to its own stock iOS, the DMCA exemption status of jailbreaking, the value of bug disclosure and subsequent strengthening of the OS brought about by jailbreak releases, and the cost and difficulty of shutting down all the users of jailbroken devices, are enough together to dissuade it from taking this approach. Instead, and for many years now, it seems to have decided to simply patch each jailbreak as it arises and contest its legality when possible at the highest and broadest legal level, instead of taking personal and specific cases to law.

Whilst this is an incredibly complex issue and I am by no means a lawyer, it does seem unlikely to me that this fork of Cydia fundamentally transgresses anything more than the current one does, or that it will affect Apple policy. That said, Saurik has spent a great deal of time and expertise in keeping jailbreaking afloat over the years, and his central point that for the practice to survive Cydia must avoid giving leverage to Apple in terms of being an ‘illegal product’ is, in and of itself, sound. Whether Coates’ amendments really constitute a difference in this regard is where they differ.

The second point, regarding Cydia’s all-encompassing compatibility, is far simpler to understand and amounts to little more than a difference of opinion. Saurik prefers that Cydia be monolithic and run one version on all devices back to iOS 2.0. This curtails its feature-set on newer iOS versions and devices. Requests for features which necessarily prevent this such as 3D Touch support for the application have thus traditionally fallen on deaf ears. It is interesting to note that Saurik has stressed Cydia is capable of making use of new APIs, and that his toolchain based on the iOS 2.0 SDK is not the limiting factor in the lack of newer features being added, but whatever the case, the fact remains that support for these features has not been included in Cydia’s roadmap. An increasing number of people believe that Cydia ought to be prepared to fragment, perhaps retaining a legacy version for obsolete iOS versions and allowing a newer edition supporting only the most recent iOS releases to continue to grow, with richer features, an updated UI and a retooled backend.

It is in this spirit that Limitless has been started. Coates has set out the project’s goals on its GitHub page and they are as follows:

  • Bring in features requested by the community.
  • Develop a vision for the future of the jailbreak community, and execute based on that vision.
  • Clean up the Cydia codebase.
  • Backport features for Cydia that make sense to be integrated.

Note that at this time, Coates is attempting to realise these ideas very carefully in relation to the existing Cydia. His aim is to stimulate Cydia’s development by making the process more accessible and then to backport any successful features to Cydia, if and only if Saurik gives his permission. He seems also to have invited Saurik to take an active role in the development as a way to address the concerns that he has made public, which were mentioned above. However, at present this seems unlikely as Saurik has given no indication that he wishes to condone or take part in the project. He has alleged that Coates has recruited several developers which Saurik has had disagreements with in the past, and seems to view this as a personal affront. Whilst Saurik may not work with anyone he doesn’t want to, I am not sure that this is a fair criticism of Coates. As he himself has stated, the project is open to all who wish to contribute, there is no recruitment involved, and he has gone to great lengths to avoid stepping on Saurik’s toes throughout the process. It is also possible that the developers with whom Saurik has disagreed in the past are precisely those that relish an opportunity to work on a revamp of Cydia, and that is why they have disagreed.

The position is a difficult one; Saurik has had to endure a lot of ungrateful treatment from the community over the years, and has been careful to keep Cydia in a strong legal position throughout it. The outcome has been that he has been simultaneously sole hero and scapegoat of the ecosystem, and this seems to have made him somewhat wary of other contributors and weary of the community as a whole. However, Coates’ motives at present seem helpful and well-meaning, his approach deferential and courteous, and his aims modest. It would be a shame if a level of co-operation between the two parties could not be reached, rather than focussing on the personal histories of developers involved. My hope is that the situation will resolve itself into some equilibrium without any rancor, if only to a basic level at which Limitless proceeds unimpeded, and Saurik perhaps accepts any backports of value without having to provide any outlay or responsibility.

Limitless’ current design goals are to finish a code refactor into a more modern style whilst reaching feature parity with Cydia. It will then look into adding features, of which the only available mention at present is 3D Touch support and a UI redesign. Features can be requested on the GitHub issues page and currently show an interesting array of requests. You may also contribute directly to the coding of the project on the same GitHub page. A chat group can be joined here.

If you would like to check out the latest release of Limitless, the beta is available for download now on Coates’ repository, and I will be documenting its progress as any significant developments occur. At present the application appears visually identical to Cydia, but the betas are being issued fairly regularly, so stay tuned for developments.

Limitless Install Screenshot

I am excited to see what Limitless could bring to the jailbreaking experience as I think it is more promising than the other similar ventures we have seen over the years. The perennially-in-progress iMods and the paid subscription app Extensify do not seem to have gained traction, and I can see why. In some respects, the model for Cydia which Saurik created is hard to beat. The Debian-based package installer system is flexible and open, and allows the adding of any repository that any developer cares to host. It is this which I believe to be at the heart of Cydia’s success, and it is this which Limitless (naturally, as a fork of Cydia) shares which the others do not, and in fact aim to remove. By keeping this core functionality but moving the development forward away from legacy devices, I hope that Limitless can do some interesting things with the jailbreak concept, and create a more modern and powerful user experience. Only time will tell.

What do you think of Limitless’ aims, and have you tried it yet? Let me know your thoughts on this development project in the comments below.