Recently I received a phone call from Apple. They asked me to remove the ability to download and install modules from the internet in iCab Mobile. So as of iCab Mobile 4.6, the ability to download and install modules is no longer working.

But the modules feature is not gone. I’ve simply included all modules which could be downloaded before from my server directly in iCab Mobile, so all the modules are automatically available without downloading them before. So for most users nothing serious has changed.

The only problem is with the modules (written by users) which I don’t know of. Users can no longer write and share their own modules themselves. If you know of such a module or if you still want to write a module, please contact me. I can add these modules to the next updates of iCab Mobile and this way the modules can be still shared with all iCab Mobile users.

I really can’t say that I like Apple’s decision, and technically it doesn’t make much sense. “Modules” for iCab Mobile are simply a more comfortable variation of bookmarklets, and these are still allowed by Apple (and I assume Apple can not forbid that the user will save and use bookmarklets). Maybe if I would have called the modules “smart bookmarks” and would have made installing them much more complicated, Apple would have never asked to remove the ability to download them from the internet. The great user experience of installing modules has probably created a suspicion that these modules are more than just a piece of JavaScript code. From a pure technical point of view, if Apple does not allow to download modules (JavaScript code), Apple would also have to disallow to load web pages in general, because these do also contain JavaScript code.

I think the current solution in shipping all modules together with iCab Mobile should be fine for all users and should not cause much trouble. Hopefully one day Apple will rethink their decision and will allow module downloads and also some other stuff again.

64 Responses

@Oleb Lechim, @Ed
Nothing has changed for YouTube on the iCab side, but there was a change on the Youtube site many months(!) ago. Since then you need to start the video inline (so it only works on the iPad, not on the iPhone) in order to get the iOS expose the video URL so that iCab can actually download it via contextual menu.

@Jan
I fear Apple has not changed the policy regarding interpreted languages, to least made them not more relaxing.

When iCab introduced the modules, there was no restriction which has forbidden to download them. And because the modules were pure JavaScript that is interpreted by UIWebView, they were allowed as “interpreting language” (otherwise almost all Apps using the UIWebView would have be pulled from the AppStore). And Apple accepted this for many many iCab Mobile updates.

When they called me to remove the modules or at least remove the “download” feature, there was no public rule for this. This rule came some time later, after they called me. So they changed their guidelines sometime, but have not published it immediately, noticed that iCab now violates one of the new “secret” rules and called me. And this made this call so “strange”: The guy at the phone could or would not tell me which of the rules was violated by iCab Mobile.

It went a little bit like this:
Apple: “Your App violates rules of the AppStore guidelines, so you have to change feature X”.
Me: “Which rules are those?”
Apple: “I can not tell!”
Me: “If you can’t tell me what’s wrong, how should I suppose to know what I need to change?”
Apple: “I can not tell!”

In fact “I can not tell” was a response I heard almost all the time when I tried to ask something.

In any case: Interpreted stuff is not allowed to be downloaded at all. It seems that Apple wants to review everything that is code and is not entered by the user of the App himself. I think this is why downloads are forbidden now.

On the other hand interpreters in general seems to be no longer limited to the ones that are built-in into the iOS (which means JavaScript). There’s an App Codea/Codify, which implemented an interpreter for the “Lua” programming language, looks really great and is in the AppStore. But again: download and sharing your own “Lua” programs via Internet is not possible or very complicated.

As I understand Modules is a plaintext, JS-only stuff. So why don’t you like to provide a textbox, so user could “type” a module by his hands (or by copy-paste)? Meta-information (such as name, copyright, description, options) could be specified in Module’s text via comment-area.
Did not read documentation on Modules yet, but I suppose they are something like UserScripts with some UI.

@Denis
Though this would be possible, it would be not very comfortable or practical. A typical Module is relatively large, because it also contains an icon (base64 encoded). So typing it in manually won’t be a real option. Also copy & paste could be a challenge.

At least it is a way to satisfy a sophisticated users like me, haha ^__^
Not sure why do you think it could be a challenge (I’m just a regular user on iOS and know no restrictions of the platform), but even if I would shall to perform a copy-paste by splitting a module’s text into several blocks of text, that would be a better solution than waiting for a next release of the software.

@Tank
If you don’t want to reinvent the wheel, you should search for “http server cocoa” or “http server ios” or something similar at google. There are several open source frameworks available in the web which implement a HTTP server for Cocoa and which can be used in iOS apps.

Did you think of adding a new module-feature? There is a plugin in Chrome that is great to create presentations that cycling through different websites at time intervals. We use it to have several google analytics tabs and then the plugin pass from a tab to another each X seconds, and it reloads every tab every Y seconds. Do you think it’s possible to add this kind of module in your browser?

I’m one of the first users of your great App. And the fact that they don’t allow it to add modules from internet it’s something bad… but as long as you can add all modules as you say in the post, it’s ok for your users. I’m sure of it.

@Juan Carlos
In general the modules for iCab can only live within a single Tab and web page, so modules are not able to switch tabs or control other web pages. Modules are just Javascript code that is injected in the current web page and so they can only do what a web page could do.

If I understand your use case correctly, you need something that controls the whole browser. This is something the modules can’t do.

But I guess you can achieve something similar by writing a small wrapper page using HTML and JavaScript yourself. Within this page you can add some iframes and with the JavaScript code
you can load/reload different pages within these iframes and switch between them.

I am a registered user of iCab desktop and only recently discovered the Modules feature. Your Modules Manager is brilliant. I just wish Apple would be more professional in explaining the rules to you and developers in general. If I get an iPhone, I would surely use iCab mobile. Kudos!

Thanks a bunch for creating iCab mobile. Being able to download video and other files for use in iPad apps is priceless!

I just adore the iPad and think it’s an incredible platform, and while I can understand Apple wanting to ensure that no malicious code enters the walled garden, I really think they need to make the rules and the approval process much more transparent and consistent if they really want the platform to evolve and thrive.

Thanks for all your hard work and good luck with any future development!