I distinctly remember how the web dev world (myself included) groaned at the prospect of supporting another rendering engine. Gecko was clearly the best browser at the time, and the choice of KHTML seemed bizarre, to say the least.
Even the intention of Apple building it's own web browser seemed weird, Apple had failed at a previous homebrewed browser (Cyberdog), why not just build on top of what Mozilla had already done?
I remember Apple stating that Konqueror's code was much more leaner, faster and modern. I've always wondered if the birth of Safari was an early sign that Apple was interested in developing the pieces missing for an internet device. Safari seemed like a godsend foresight from Apple when they released the iPhone, but I can't help wonder if it was planned this way all along.
I would love to claim the foresight of planning for the iPhone all along. Alas, that was not the case. :) For any of us.
We built our own browser because we didn't want to depend on another company for a critical application.
We built our own browser engine because we wanted to use the technology in more things than a browser.
We built that engine small and fast because Bertrand Serlet would have shot me if I had done otherwise. :)
You have to remember that Mac OS X itself was smaller in those days. Not iOS small, but considerably smaller that it is now.
After the initial success of Mac Safari, there was a time when I was second-guessed by some for choosing KHTML and KJS as the basis for WebKit. When we decided to do the iPhone, I was suddenly a genius again. :)
Konqueror was by some distance the best browser available at the time (even today there is Konqueror 3.2 functionality that I can't find in anything else), and the fact that they were able to keep it that way with about 5 devs total spoke to the quality of the code.
I suspect the reason for choosing KHTML over Gecko may have been more political than anything else. Since Mozilla was the dominant non-IE browser at the time, it would be hard to justify any fork to the community without meaningfully given back. For example, Apple could go off into a cave and add touch handling support with momentum scrolling and GPU acceleration, and the Mozilla community would be absolutely furious with Apple for creating effectively unusable work, assuming they did the work over several months/years in secret. The last thing Apple wants is a large group of loud people complaining about itself.
By comparison, KHTML was not really a serious project. It had a few developers, but nowhere near the scale of what Mozilla had. Thus, when they forked it to do their work in secret, only a couple people complained.
Amusingly, before Chrome, Google used to contribute a lot of engineers to Firefox/Mozilla. They decided to do their own after deciding they weren't happy with it. I don't quite recall the main reason, might have had something to do with some sort of mess for cross compiling or variable sizes or something mainly.
I would not call Cyberdog a failure. Yes, it wasn't fast and it didn't have a great rendering engine, but frankly, neither did the competition, and I found its look and feel so good that I kept using it for a long time (with IE as a backup for pages it did not handle, IIRC)
OpenDoc, on which it was built, failed, but even that, I would not call a complete failure. It may have just been bad timing (of the Newton vs iPhone kind). If you are looking for a large hobby project: I would love to see something OpenDoc-like today running in a browser. Require viewers to be freely downloadable from e.g. GitHub, but allow developers to sell their editors, and see where it gets.
Don, would you be willing to share a bit in future posts about how you grew the team, how you organised yourselves and how that changed over the course of the project? Also, what thought process did you go through in the decision of how much to include in V1.0 vs leave to later releases? As a team lead/product manager I'm always interested in hearing other people's experiences, and your experience and writing style put you in a better place than many to do that. It is the thought processes and the dynamics of interacting with others in an organisation that make software development stories interesting.
> We couldn’t ship with the real Safari user agent string disabled, but we came up with the next best thing — automatically enabling it after a certain date.
Does that mean that if you set the date of your computer back before 2003, the user agent will become Internet Explorer?
Does anyone know why Apple stopped doing this(or stopped doing it as thoroughly)? With the possible exception of the original, sites have consistently reported visits from iOS/iPhone:iPad user agents (and claimed that the ip originated within apple) well before launch.
Recent example: http://thenextweb.com/apple/2013/01/01/developers-begin-seei...
I'm guessing it's not a secret or surprise to anyone that Apple would work on a new version of their operating system, nor that such operating system would include a browser.
That Apple makes the iPhone and iPad is not a secret. The article you link to is talking about stats that apps are reporting over the internet... the apps have to know what kind of device they are running on, and have to be able to handle differences between the devices (eg: the screen difference between the iPhone 4S and iPhone 5).
No real information is released with these hardware model numbers that's not already reasonably known.
The only exception is for devices that people might think are end of life, or unlikely to get a refresh soon.
For instance, the Mac Pro may start showing up in logs, and that would be news, because it is so rarely updated... or it would be news if Tim Cook hadn't said that they planned to release an update (in 2013? not sure when he said it would be.)
So, knowing that iOS 7 (8, 9, etc.) are under development doesn't give away any of the secrets-- eg: what the special features of those OSes will be.
"Which explains why the Safari user agent string has so much extra information in it, e.g. KHTML, like Gecko — the names of other browser engines."
Wasn't Safari/WebKit largely based on KHTML in the beginning? This doesn't say it wasn't, but seems to imply that there was a separation of the two that was more complete than it really was.
I realize the OP is in a better position than I to know exactly what the reasoning here was, but it seems like reporting yourself as KHTML when you are largely based on the KHTML rendering engine would just be a sensible and practical thing to do outside of all this cloak and dagger stuff.
(Granted, I doubt there were very many websites, if any at all, that gave a rat's ass about special cases for KHTML compatibility).
Yes, WebKit was based on KHTML and KJS. Even in the beginning, we made a few fundamental changes. Some of those were folded back in, but eventually those differences grew much, much larger.
There actually were some sites (in Europe, as I recall) that behaved a bit better when "KHTML" was in the user agent string.
I also included it as a nod to the original project. I wanted to show respect for the fine work of Lars Knoll and the other contributors.
At the time, Microsoft's hegemony over the web browser market was at its peak. Firefox was the only real competitor. If web pages checked the user agent, they probably only accounted for these two browsers. Anything else fell back to legacy behavior, disabling DHTML (later called Web 2.0). This made Gmail suck.
KHTML had almost no market share - it only ran on KDE, and most KDE users used Firefox. Nothing recognized its user agent string, so reporting "KHTML" would have been as ineffectual as reporting "Safari" or "WebKit".
That is exactly what he is saying. They added KHTML to the user agent string to improve compatibility with servers, since Webkit was essentially KHTML anyway, not to try to hide the actual user agent. Internet Explorer is what they used when hiding the user agent.
If they were worried about server admins correlating Apple's IP addresses with a new User-Agent string, the team could have VPN'd to a non-Apple network to access the web.
I guess they were worried both about having recognizable IP addresses AND having the name of their new browser appear in logs all around the world.
The user agent was something like "Mozilla/5.0 (Macintosh; U; PPC Mac OS X; sv-se) AppleWebKit/85.7 (KHTML, like Gecko) Safari/85.5", which people would have quickly correlated to Apple, not matter what IP it came from.
duopixel|13 years ago
Even the intention of Apple building it's own web browser seemed weird, Apple had failed at a previous homebrewed browser (Cyberdog), why not just build on top of what Mozilla had already done?
I remember Apple stating that Konqueror's code was much more leaner, faster and modern. I've always wondered if the birth of Safari was an early sign that Apple was interested in developing the pieces missing for an internet device. Safari seemed like a godsend foresight from Apple when they released the iPhone, but I can't help wonder if it was planned this way all along.
donmelton|13 years ago
We built our own browser because we didn't want to depend on another company for a critical application.
We built our own browser engine because we wanted to use the technology in more things than a browser.
We built that engine small and fast because Bertrand Serlet would have shot me if I had done otherwise. :)
You have to remember that Mac OS X itself was smaller in those days. Not iOS small, but considerably smaller that it is now.
After the initial success of Mac Safari, there was a time when I was second-guessed by some for choosing KHTML and KJS as the basis for WebKit. When we decided to do the iPhone, I was suddenly a genius again. :)
That's just the way it works in the real world.
lmm|13 years ago
michael_miller|13 years ago
By comparison, KHTML was not really a serious project. It had a few developers, but nowhere near the scale of what Mozilla had. Thus, when they forked it to do their work in secret, only a couple people complained.
lnanek2|13 years ago
Someone|13 years ago
OpenDoc, on which it was built, failed, but even that, I would not call a complete failure. It may have just been bad timing (of the Newton vs iPhone kind). If you are looking for a large hobby project: I would love to see something OpenDoc-like today running in a browser. Require viewers to be freely downloadable from e.g. GitHub, but allow developers to sell their editors, and see where it gets.
zalew|13 years ago
jmspring|13 years ago
gry|13 years ago
sxp|13 years ago
I found that fact to be the most interesting part of the article. The list of other Class A holders is also interesting: http://www.aturtschi.com/whois/neta1.html
davvid|13 years ago
Pixar has a large block too... I wonder if Steve had something to do with it?
1amzave|13 years ago
jdechko|13 years ago
mbreckon|13 years ago
laurent123456|13 years ago
Does that mean that if you set the date of your computer back before 2003, the user agent will become Internet Explorer?
donmelton|13 years ago
barredo|13 years ago
Obviously this must have been a feature of Safari 1.0
nsp|13 years ago
markrages|13 years ago
Safari, on the other hand, was unexpected.
nirvana|13 years ago
No real information is released with these hardware model numbers that's not already reasonably known.
The only exception is for devices that people might think are end of life, or unlikely to get a refresh soon.
For instance, the Mac Pro may start showing up in logs, and that would be news, because it is so rarely updated... or it would be news if Tim Cook hadn't said that they planned to release an update (in 2013? not sure when he said it would be.)
So, knowing that iOS 7 (8, 9, etc.) are under development doesn't give away any of the secrets-- eg: what the special features of those OSes will be.
smackfu|13 years ago
TazeTSchnitzel|13 years ago
georgemcbay|13 years ago
Wasn't Safari/WebKit largely based on KHTML in the beginning? This doesn't say it wasn't, but seems to imply that there was a separation of the two that was more complete than it really was.
I realize the OP is in a better position than I to know exactly what the reasoning here was, but it seems like reporting yourself as KHTML when you are largely based on the KHTML rendering engine would just be a sensible and practical thing to do outside of all this cloak and dagger stuff.
(Granted, I doubt there were very many websites, if any at all, that gave a rat's ass about special cases for KHTML compatibility).
donmelton|13 years ago
There actually were some sites (in Europe, as I recall) that behaved a bit better when "KHTML" was in the user agent string.
I also included it as a nod to the original project. I wanted to show respect for the fine work of Lars Knoll and the other contributors.
oofabz|13 years ago
KHTML had almost no market share - it only ran on KDE, and most KDE users used Firefox. Nothing recognized its user agent string, so reporting "KHTML" would have been as ineffectual as reporting "Safari" or "WebKit".
guptaneil|13 years ago
cpeterso|13 years ago
laurent123456|13 years ago
The user agent was something like "Mozilla/5.0 (Macintosh; U; PPC Mac OS X; sv-se) AppleWebKit/85.7 (KHTML, like Gecko) Safari/85.5", which people would have quickly correlated to Apple, not matter what IP it came from.
jiggy2011|13 years ago
Sure , they wouldn't route back to an Apple IP address but then who's to say Apple doesn't browse via proxy/vpn somewhere?
Tloewald|13 years ago
jagermo|13 years ago
Did this get you in any programming troubles in the long term?
unknown|13 years ago
[deleted]
unknown|13 years ago
[deleted]
IheartApplesDix|13 years ago
[deleted]
unknown|13 years ago
[deleted]
Raz0rblade|13 years ago
to3m|13 years ago
JohnFromBuffalo|13 years ago
astrange|13 years ago