A few minutes ago, Cydia lead developer Jay Freeman tweeted that Cydia 1.1 had hit the repos.  For more of what is in Cydia 1.1, Saurik gave the following details to iPhoneDownloadBlog:

Features of Cydia 1.1 will include:

  • the ability to run and operate Activator, libstatusbar, and SimulatedKeyEvents while Cydia is running
  • an overall speed improvement, including the “Loading Changes” dialog
  • “much less” memory usage
  • a more advanced search mechanism with a new relevancy algorithm
  • better management of broken repositories

Here’s everything saurik had to tell us about Cydia:

Multitasking

Leaving Mobile Substrate On When Cydia is Open

Better Looking Interface and Backup Option

Confusion With the Term “Changes”

Speed

Loading Times

Memory Usage

Error Messages

“Rate” and “Review” Sections

Improved Compatibility Listings

Removal of Dead Content

Clarified Install Requirements

(Tags saying if installation of apps/tweaks, etc. need a springboard refresh or if the device needs to reboot)

Now, this is something that /can/ be remedied, and is something that I’ve been thinking of how to do for a long time, but all the obvious ways people like to bring up for making Cydia’s GUI run as mobile with only small parts running as root would make Cydia run slower, and speed is something that is primary on everyone’s minds when they are using Cydia. Luckily, there are things I’ve figured out that may make this more reasonably possible, but certainly not for this release.”

Therefore, with this release of Cydia, I’ve gone through the “big ticket items”–which seem to come down to Activator (what starts SBSettings), libstatusbar (adds notification items to the status bar), and SimulatedKeyEvents (injection of key events from Veency)–to verify with their developers that they will work correctly in an environment running as root. These extensions (plus WinterBoard, which doesn’t work on root on 4.x but is harmless, and will be fixed in a future release) are what are available from inside of Cydia until Cydia is modified to run as mobile.”

As for a “better looking interface”, I try hard to maintain something that competes with Apple’s products. A few things rotted on 4.x (the positions and sizes of some buttons), and the various “black” interfaces (the black bar and the black screen) get mixed reports, but otherwise the main problem users have with Cydia is not Cydia: it is with repositories. Every time I’ve gotten actual feedback “this specific thing is bad”, where that thing isn’t something that Apple themselves do in their iTunes or App Store applications (which should be taken as the “intuitive model”), it is in areas of the interface I simply do not have any control over: the content shown for a package by the repository.”

In contrast, Cydia has some of the fastest technology in existence with regards to handling this data, whether it be custom algorithms (Cydia includes a locale-aware string comparison radix sort, which AFAIK is the fastest sorting algorithm in any iOS application) or special on-disk data structures (new in 1.1 is “Cytore”, a new way to store local metadata on packages that can be loaded nearly instantaneously from flash; for those out there who are technically minded, it is an on-disk memory mapped hashtable, which drastically beats out alternatives people like to try to bring up such as SQLite).”

That said, the amount of memory on even reasonably modern devices (anything past the iPhone 3G) available for running applications (not in total, but available after Apple’s system applications get their share), is an order of magnitude greater: whereas on an iPhone 3G you were working with maybe 20MB of available memory, on an iPhone 3G[S] you have 150MB, and an on iPhone 4 you have 400MB available. So, despite Cydia 1.1 actually needing less memory to operate than Cydia 1.0, the pressure on memory is pretty much gone, and will not affect future users thanks to hardware upgrades.”

What would really be needed to have a truly amazing search experience is to not do searching on the client: to instead handle it on my servers. This is how products like the App Store, Kindle, or Netflix work: it is not at all common for services users are used to to attempt to manage the entire database /on the device/, doing local searching, rather than having the data and computation for that existing in offline-indexed search structures on a massive server in the cloud.

Unfortunately, the reason people use Cydia are varied, and many people are using Cydia with repositories that frankly they shouldn’t be: whether the repository contains software that is dangerous (a niche community with tweaks receiving minimal testing, or using bad practices like on-disk file patching) or downright illegal (there are things you are allowed to do in your country that I cannot in mine), I am certainly not going to be acting as the centralized storage and indexing gateway for people to find and manage this content.

Instead, what keeps people coming back to Cydia is the fact that it acts as the fundamental alternative: that rather going to Apple, with their carefully curated set of centralized experiences, you go to Cydia, “the wild west of software”, where software modifies other software in a kind of reckless abandon that is going to lead to pain even in the best possible scenarios, and in the worst possible worlds is going to lead to things that you will not be able to list on a default repository, and which Cydia may even warn you about installing, but which you should still be able to access and even search for using Cydia’s search mechanisms.”

Given these issues, I attempted to put together a vision of how comments and ratings could work in Cydia, and even made a trial implementation (screenshots were even handed out at some points, and I did demos at a few conferences), but when word came up that I was even considering releasing it, I received strong pushback from some of the best developers in the ecosystem–the people you are most likely to want to give mega-good reviews to–that if I continued with that they would give up on the ecosystem, due to the issues from before.

And, to be honest, I am not certain that I would have solved those problems, and given subsequent experiences from alternative products, and looking at how people used the ratings, what people said in the comments, and how things finally got rated, I no longer believe that I would have: I believe the concept of the off-the-shelf “comments and ratings” to be a fundamentally flawed system that inherently leads to abuse.

Now, not all rating systems need to be “off-the-shelf”, so something truly innovating and “actually solving the problem” is what I hope to one day provide for Cydia. In the meantime, however, I always do my best to avoid injecting seriously suboptimal tradeoffs into our ecosystem.”

  • a mechanism to specify firmware compatibility on packages (packages can Depends: specific firmware revisions).
  • the Cydia Store lets vendors block purchases for specific firmwares (any paid product can register its compatibility with its repository, and then I will filter it to users who can use it).
  • the firmware version is sent as part of the user-agent to the web pages for each product, allowing developers to display their own warnings.
  • compatibility is even more specially able to be done by feature detection, allowing packages to say “I need voiceover support on a device with a camera running an armv7 CPU and a retina screen”.

In essence, there is very little excuse for packages, repositories, products, or anything else in the Cydia ecosystem to be poorly specified in terms of firmware compatibility. That said, almost no packages in the ecosystem, and even very few products (where one would imagine this to be the most important), have this information included at any of these levels, which is rather disappointing.

So, Cydia 1.1 is not going to attempt to improve on any of these mechanisms, as Cydia 1.0 already has more than enough of them: the real onus is now on the developers and artists of specific items.”

Repo Management

Saurik’s closing comment,

Therefore, specifying this as static tags on a package would increase the number of reboots a user has to perform needlessly. That said, for packages where it is not obvious (extensions are going to require a reload, and MobileSubstrate is going to require a reboot), such as cases of MMS clients that require a reboot, it should certainly be best practice for the developer to put this information on their package information screen. This is even easier for the developer/vendor than modifying the package, and even then is very uncommonly specified: adding the tag therefore won’t even change how often it is reported.”

(Due to some of these complexities, it is Cydia policy going forward that no repositories will be installable from default repositories via packages, and the existing ones under More Sources will be transitioned to a new mechanism for handling these that has been added that will allow more direct, simpler, and safer manipulation of repositories using a soon-to-be-revamped More Sources page.)”