Firefox for iOS on GitHub
github.com
github.com
Coincidentally I submitted a new version of my own browser app to the AppStore, on the same day they made the announcement. I added support for the new Firfox sync protocol - it took me forever to get it working and now it's kind of redundant :-/
Anyway, if someone is interested in the source: https://github.com/graetzer/Foxbrowser
You will have to install this from source to get the latest version
Also I hope the dev of iCab reads HN and can get some benefit from your code - he's not added support for new FF sync yet.
https://github.com/graetzer/Foxbrowser/commit/a5ab03e91c06e1...
This is on an iPhone 5S running iOS 8.1.1, with about 200 bookmarks. If there are any crash logs I can provide, let me know.
That said.. As far as I understand the 'real meat', the engine, is now webkit. Which defeats the process for me. The UI was always what Firefox was lacking in and even the very latest design decisions are - well - not quite my cup of tea at least and potentially questionable.
I would like to understand what Mozilla gains here (if this is mostly a 'skin' around webkit/a web view control) and why iOS users would install it (I'm on Android - dipping my toes into FirefoxOS every couple of weeks).
Edit: Thanks for reminding me of Sync as a great use case for a Firefox browser, even if it's using a different engine.
On iOS you use WebKit or you don't make a browser. They don't have a choice. As for why you would install it, probably sync. If you use Firefox on desktop presumably you can now access your bookmarks, history etc on iOS.
The restriction is that you must use WebKit as the rendering engine for content that contains JavaScript.
Right. So, a browser. You just proved my point. Apple allows exactly one browser on iOS. Theirs.
And this matters, because the main features that browsers compete on is speed and new features (in HTML5 and Javascript). This is what made people switch to Chrome, making it gain a whooping 40% (or is it 50%) in market share. This is also what made Firefox gain market share from IExplorer.
And if your browser is slower than the default one, then you cannot compete with that default. If your browser cannot be a platform (for add-ons or apps, like what Firefox is doing on Android), then you cannot compete with the default. Chrome on iOS is only a shadow of what it is on the desktop.
And Firefox on Android is the only one that allows me to use useful add-ons, such as AdBlock Plus, HTTPS Everywhere and LastPass. Do you know how awesome that is? And this doesn't work on iOS (i.e. having add-ons) because of Apple's restrictions.
And yes, I'm even rooting for Gekko (instead of WebKit), because it is Firefox that brought us Asm.js [1], I even bought the Humble Mozilla Bundle [2] and they made everybody optimize for it, including Microsoft. And now they are working on SIMD.js as well [3].
I received an iPhone 6 as a gift 3 weeks ago and I sold it - yes it's nice, but it doesn't run Firefox and apparently Apple kicked VLC out of the app store as well. And personally I couldn't picture myself living with such restrictions so I sold it - now I'm waiting for my Nexus 6 to arrive :-)
[2] https://blog.mozilla.org/blog/2014/10/14/play-awesome-indie-...
All this talk of anti-competitive restrictions doesn't reflect the reality of engineering for security.
Realistically, Apple is about as anti-competitive as they come behavior-wise. And the 'engineering for security' bit has more to do with their marketing than their actual technology.
The difference is that Apple is willing to recognize this and protect their customers from the shortcomings.
Android's million node botnets and thousands of pieces of malware are not Apple's marketing. They are the reality of what Apple's policy has succeeded in protecting it's customers from.
There was only one very large botnet ('up to' a million nodes) on Android and it wasn't on proper Android. It was on Android in China. So, no Google Play store and proper Android setup like you get on every phone in the US, Europe, etc. The botnet spread through... you guessed it... stolen games on unofficial 'app stores' of pirated software.
Comparing Apples to Apples, Google Play Android devices and un-jailbroken iOS devices, malware is virtually non-existent.
If you are pretending that the level or risk of malware on iOS is comparable to that on Android, you are either misinformed or dishonest.
Android is open by design. Alternative app-stores are part of that. If you discount the malware that results from people taking advantage of Android's openness, you must also discount any advantages you claim a lack of restriction would bring to iOS, or you are guilty of misrepresentation.
The simple fact it, both Android and iOS, when used as shipped an intended, don't get malware for the average consumer. They both pass the 'mom test'.
There are 3rd party app stores available for Android that include malware infected pirated apps. These app stores are not sanctioned or approved by Google.
There are 3rd party app stores available for iOS that include malware infected pirated apps. These app stores are not sanctioned or approved by Apple.
If your rather lame attempt at painting all of Android as insecure is due the fact that you can run a 3rd party app store with malware, then it should also be true for Apple.
The simple fact is that it's incredibly easy to avoid malware on either platform. Don't hack it. Don't install apps outside of the app store (Google Play or Apple App Store).
This is false.
You also claim that only Android 'sanctioned by Google' counts as Android. Also false, according to Google's own statistics and documentation.
Both Android and iOS have had issues with badware getting into their app stores and with drive by downloads due to insecurities... the same insecurities used to jailbreak/root the devices in many instances. These issues are publicly documented.
As no one here in the US or in Europe or anywhere else (except China) is buying an Android phone with one of the malware-ridden app stores shipped in China on it, there are simply zero concerns about it when you walk into AT&T or T-Mobile and buy an Android phone. Why on earth would someone here care that some non-Google Android phones shipped with a pirated software app store get malware? By that logic, used iOS devices that contain malware in the US would make you leery of buying a new iOS device in a legitimate store. Except that that isn't the case, nor should it be.
Based on the way you continue to argue against points I never made and seeing similar things in your HN comment history, I'm going to bow out of this conversation at this point.
Apple is cautious about allowing their consumer products to run downloaded code for this reason - it provides a clear and undeniable benefit for customers.
Of course some people want to trade this benefit for the benefit of more flexibility. That is one of the reasons for choosing Android.
Pretending that the iOS approach is just about stifling competition is ignoring the facts.
Also your claim that Chrome uptake was just about speed is unsupported. It was installed as part of the flash installer on many people's machines, and pushed on the Google homepage. Some people may have chose it for technical reasons but many people did so because it was marketed heavily, or installed with another product.
Anecdotally, I don't know a single person in real life on either iOS or on Android that's gotten malware.
Anti-competitive behavior to keep apps that compete for Apple's customer data and money off of iOS provides a clear and undeniable benefit for Apple. It's not like this is unusual or new behavior for them: http://www.digitaltrends.com/music/apple-deleted-non-itunes-...
Therefore you are asserting that what you are calling 'anti-competitive' behavior is precisely what limits malware on iOS vs Android.
Bear in mind that all of the major vendors, including Google have been convicted of wrongdoing and anti-competitive behavior, so linking to breathless headlines demonstrates nothing.
Remember the days when software choice was a thing, and Microsoft were condemned for merely including a browser with the OS, not banning all software competition? Maybe in about a decade the competition authorities will wake up to this.
Also, I don't know how this works, but I'm guessing that some of the revenue they make goes towards supporting the Mozilla Foundation? These guys put out a lot of really awesome stuff, especially evangelizing web programming in impoverished communities in India and such.
Well, I don't mean to appeal to charity. But its just one of the results of this project and experiment. At my last job, we used their open source JS library for handling video content to make a really awesome training application.
Seeing as how it has been so useful, just yesterday I set up a recurring donation of $10/month. I figured, well, I pay that much for Netflix anyways, and use Firefox so heavily. So, it made perfect sense to show my support this way.
Also, iOS seems like a fairly hostile environment for 3rd-party browsers since it's not possible to change the system browser -- that's probably why mobile Safari has such a large usage share on iOS.
[1] http://en.wikipedia.org/wiki/United_States_v._Microsoft_Corp.
Restricting what developers can and cannot do on a platform allows Apple to give more guarantees and reliability in terms of performance and battery usage, as well as security and stability. Those are the primary reasons behind Apple's restrictions on the iOS platform.
You can render all the HTML you want, you just can't allow untrusted code to be executed.
(if you could, everyone would just do that to get dynamic behavior using javascript in their apps as a scripting language)
No, they must use WebKit:
"Apps that browse the web must use the iOS WebKit framework and WebKit Javascript"
Also, you can build a UI using web languages and render to native controls, all without using WebKit if you'd like.
They don't have a choice, I'm glad to see them do something pragmatic here. On iOS you can ship a WKWebView browser or nothing. Given how big mobile has become it's sad that it took them 6+ years to do this. Lots of people use Chrome on iOS but that only came out 2 years ago. It could have been Firefox.
Officially, there was Firefox Home, which was just a bookmarking thing and not a full browser.
If they use WKWebView I'm not even sure they can implement the features of a plain old browser, never mind include addons/extensions.
One more plus for WkWebView that I forgot - the history list and moving backwards/forwards in it. I agree it has some really nice pluses, but at least for my use cases (and the use cases I would be interested to see implemented in iFirefox) it doesn't seem to be the right choice.
- Given that Apple does not allow other render engines. What makes this Firefox?
And with the release of WKWebView, I guess it makes it a skin.
I think that's an interesting question. Is a browser defined by its rendering engine or by its features and UI?
When Chrome used WebKit, it was clearly understood by everyone to be different from Safari, even though the rendering engine was the same (I know, the differences were big), but a Firefox browser that uses WebKit seems to not be considered Firefox.
Personally, while I understand the philosophical and political differences, I think the browser is defined by its features, not the rendering engine: the user wants their bookmarks to sync between the phone and the computer, they don't care whether the two programs use the same library to draw the page on the screen or not, just like they don't care which malloc() implementation they use.
To put it in fewer words: Chrome on iOS is still Chrome, not Safari, because it has Chrome's features.
(This would not have been true a decade ago, but rendering engines compatibility is much less of an issue now)
Chrome was on webkit but used V8. And unless something has changed all non-safari browsers and webviews use an inferior JS engine.
Edit: (Something has changed, WKWebView now has the Nitro JS Engine, cool beans)
So, to be fair, Chrome was much more than V8 (which was also a part of its voodoo)
Nope, IE8 was: http://blogs.msdn.com/b/ie/archive/2008/03/11/ie8-and-loosel...
Really? Can you provide a link?
> Are there any alternatives way to build code for iOS?
http://iphonedevwiki.net/index.php/Compiling_iOS_application...
No restrictions there.
License: http://www.wired.com/images_blogs/gadgetlab/files/iphone-sdk...
Relevant parts (emphasis in italics):
-----------------------
3.3 Program Requirements for Applications
Any Application developed using this SDK must comply with these criteria and requirements, as they may be modified by Apple from time to time: ....
3.3.2 An Application may not itself install or launch other executable code by any means, including without limitation through the use of a plug-in architecture, calling other frameworks, other APIs or otherwise. No interpreted code may be downloaded and used in an Application except for code that is interpreted and run by Apple's Published APIs and builtin interpreter(s).
-----------------------
Combine the above with this:
-----------------------
3.2 Use of the SDK
As a condition to using the SDK, You agree that: (a) You will only use the SDK for the purposes and in the manner expressly permitted by this Agreement and in accordance with all applicable laws and regulations;
-----------------------
TL;DR (at least how I understood it and IANAL) you can't even legally build any browser which uses its own engine and can run JavaScript code from the network (which is virtually any browser) if you use iOS SDK from Apple.
Of course you can simply ignore this sick level of insanity and build whatever you want, but we are talking about that Apple attempted to legally ban you from building certain applications (it's not even about accepting them in the store, it's about building in compliance with the SDK license!).
Such kind of stuff makes me have zero respect for Apple in general.
Simple, you can use it personally, or for example submit it to Cydia or any other place without Apple's censorship. Just post it as a download after all. There is nothing illegal in distributing for jailbroken devices.
But that's really irrelevant. The license here doesn't even get to that part - it forbids you to build the browser, regardless of any of your further plans how to use or distribute it. It's completely sick.
http://www.apple.com/legal/sla/docs/xcode.pdf
I lightly skimmed the iOS SDK part and ctrl + F'ed for key words (executable, SDK, Javascript, code) and nothing like those paragraphs you referenced showed up
https://developer.apple.com/programs/ios/information/iOS_Pro...
And hooked it from the SDK agreement with this:
-----------
2.2 <...> You understand and agree that Applications developed using these SDK materials cannot be installed or used on an iOS Product or submitted to the App Store unless You enter into a separate iOS Developer Program Agreement with Apple and comply with the Program Requirements. Information regarding the iOS Developer Program Agreement and the Program Requirements is available within the iOS Developer Program website at http://developer.apple.com/programs/ios/information/index.ht...
------------
And that brings almost all the same restrictions like before. It's marginally better since now actual building process is not declared illegal, but installation and running the result is. Which doesn't make any practical difference anyway.
> 2.17 Apps that browse the web must use the iOS WebKit
> framework and WebKit Javascript
https://developer.apple.com/app-store/review/guidelines/The icon and a bit of UI design. That plus the ability to sync bookmarks and passwords with Firefox Sync. Otherwise, it's Firefox in name only. It's just a skin over Safari, like all other iOS browsers as per Apple's rules.
We should also call super.isValid(), but that'll fail: Global is external, but doesn't have external or weak linkage! Swift compiler bug #18422804.
Interestingly, it appears to do everything BUT display web pages at this point! Looks very preliminary.
https://www.dropbox.com/s/o5kmot2fg6i7wmx/Screenshot%202014-...
Displaying web pages is easy with the build in UIWebView (or WKWebView) component
https://blog.mozilla.org/blog/2010/07/15/get-firefox-home-on...
Development stopped in 2012:
https://blog.mozilla.org/services/2012/08/31/retiring-firefo...
It's not, and just because Google also caved in to Apple's tyranny doesn't make it right for everyone to do it.
Chrome on iOS does way more than you think it does -- e.g., it uses its own network stack.
Still, the actual rendering engine bits have to be Safari. Heck, the whole reason Google built their own networking stack was because of those absurd iOS restrictions so they could implement a subset of the features that Chrome on Android has. So, the app will always be artificially hobbled because of the restrictions. And it simply can't be as fully functional as it is on other platforms due to those limitations.
None of that takes away from the fact that overall it's a good thing for Firefox to be in front of iOS users. I honestly do think it is. That way, Firefox remains a viable alternative for those users in Apple-land so they can sync between Mac OS X and iOS.
At the same time, I'm sad. Because a Firefox UI around the Safari rendering engine just feels wrong. It may sound silly, but it does feel like a little piece of what Firefox stands for fell with this decision. And I've been promoting Mozilla since its creation and packaging and promoting Firefox since before it hit 1.0.
A lot of Mozilla projects have their main repos on GitHub, including Rust, Servo, and Firefox OS.
We're using GitHub for ease of integration with CI systems, convenience, and the ability to move more rapidly. We'll move into m-c if and when it suits the needs of the project.