The Browsers

Writings related to the browsers

Future Firefox and Color Management

Tagged:

Before the build copy of Firefox (known as "Minefield") upgraded itself on my Mac, dying a horrible and immediate death in the process, one other change I noticed in the upcoming version of Firefox is that color management is now on by default.

I also noticed, again before the crash and burn death, that the new version seems to be much more efficient and fast compared to the old.


As pointed out in comments, Bobby Holley has an excellent discussion on color management and the state of Firefox. Bottom line, in the interests of performance, the new version of Firefox will have color profiles turned on, by default, for "tagged" images: images with embedded color profiles. I started embedding profiles for my pictures about 2 months or so, ago, in hopes that more browsers will follow this path.

It would be nice to have full color management, but I think support for color profiles in images is a good interim solution. This is also the approach that Safari uses, and hopefully Opera, too, eventually.

IE8 beta 2: First Experiences

Tagged:

My first experiences with IE8 beta 2 have been mixed. On the one hand, I like the fact that compatibility mode no longer requires restarting the browser. However, I've found it virtually impossible to tell when I have compatibility mode turned on or off. I've also found that once turned on, you do have to reload a page in order to turn it off again, because the button disappears.

Sam Ruby wrote about an improved namespace blurb that appeared about IE8 at a Microsoft site, which has since disappeared. In the post, Sam also mentioned that IE8 no longer supports CSS for elements it doesn't recognize, also detailed in a bug Anne van Kesteren linked in comments.

I went to check out the bug at Microsoft's LiveConnect with IE8 beta 2, but received an error in the page that I don't have permission to view the page. Puzzled, I also noticed that the page asked if I wanted to sign out of LiveConnect.

I had originally obtained a LiveConnect login in order to report bugs about Expression Media, which I was testing for my Painting the Web book. I figured that somehow my old account was interacting with the page in such a way as to make it inaccessible. I tried to delete cookies, in fact every kind of storage associated with IE8, but I still received the same page: I don't have permission to access the bug, would I like to sign out of LiveConnect.

I looked more closely at the IE8 Delete options, and noticed that there's another option I missed, Preserve favorite website data, with the following explanation:

Keep cookies and temporary files that enable your favorite websites to retain preferences and display faster.

This checkbox overrides the cookie deletion option when login information is stored. *I'm not sure if this option was present with IE8 beta 1, and I'm not sure I like it—one could easily think they've cleared all personal information out of a browser by deleting cookies, only to forget to uncheck the favorite site option, and leave critical logins still active.

Hakon Lie wrote about Microsoft's back stepping on standards mode. Microsoft had originally stated it would support standards mode by default with the first beta of IE8. Now, it supports standards mode by default on the internet, but supports the old IE7 non-standards mode by default for intranet accesses. The setting can be changed via a menu option, but the problem with this approach is that if you develop a web site internally and it works one way, it may break or work oddly once published externally, unless you remember to turn standards mode on when developing the page internally. This adds all new meaning to the term, quirks mode, as this really is quirky behavior.

IE8 does implement the new JSON object, though be forewarned: it treats single quotes as second class citizens. In other words if your application returns strings delimited with single quotes, your application will fail. The JSON with single quotes still works with eval, though, so you could end up with breaking behavior when you switch from one to the other. To be honest, I find this to be a flaw with the JSON "standard"—either JSON is JavaScript Object Notation, or it's not, and single quotes can delimit strings in JavaScript.

One new feature, or at least another feature I don't remember from IE8 beta 1 is that when you encounter a runtime error in JavaScript, IE8 now pops up a window with a note about a runtime error, and asks if you wish to debug it. I imagine this will only appear if you have developer tools enabled. The script debugger included with IE8 in beta 1 is still available in beta 2, and is one really nice feature in IE8.

Less nice, though, is Microsoft's non-support for DOM Level 2 event handling. There's also no need to go into details about how the browser doesn't support XHTML and SVG and MathML—Microsoft will never support XHTML, which should be a disappointing given now. In fact, it's unlikely Microsoft will ever support SVG, even if this gets included in HTML5. Some would say this will kill SVG. I disagree and believe that this will eventually kill IE. Not just the lack of SVG support: Microsoft's refusal to deal effectively with the issue of XHTML support, DOM Level 2 event handling support, and so on. Too many gaping holes in standards support, and too little commitment on Microsoft's part to truly be a standards-based browser.

On the other hand, IE8 does have improved support for CSS. It's now about equivalent to Firefox 2 in CSS support.

Lastly, if you're a Netflix Watch Now fan, be warned: IE8 beta 2 does not work with the Watch Now feature, no matter what mode you set. Do not install IE8 beta 2 if you use this feature.

All in all, beta 2 has the feel of being a rushed delivery. Not surprising when you consider beta 2 was released on the seventh anniversary of the release of IE6—a day some of us designated as IE6 EOL or Uninstall day.


*The Preserve favorite option is new with beta 2, but is not working as described. It's preserving data for sites that are not on my favorites list. In addition, Microsoft puts its own sites on this list, automatically making data to them "saved" with this option.

How to Install IE8 beta 2: First, find chicken to sacrifice, wait till midnight

Tagged:

I have Windows XP SP3 installed on my Dell I was therefore more than a little taken back about the instructions to follow to install IE8 beta 2:

  • Uninstall Windows XP SP3
  • Uninstall IE8 Beta1
  • Re- install Windows XP SP3
  • Install IE8 Beta2

If you don't follow this path, you'll have permanently installed IE8 on the machine. You know, you can't make up stuff like this.

Phasing Out IE6

Tagged:

Moved over from Painting the Web

37signals is phasing out support for IE6. The company weblog lists the reasons for this decision, including:

IE 6 is a last-generation browser. This means that IE 6 can't provide the same web experience that modern browsers can. Continued support of IE 6 means that we can't optimize our interfaces or provide an enhanced customer experience in our apps. Supporting IE 6 means slower progress, less progress, and, in some places, no progress. We want to make sure the experience is the best it can be for the vast majority of our customers, and continuing to support IE 6 holds us back.

Those are excellent reasons, and ones we should be taking to heart. At issue, though, is the fact that Microsoft has made it very difficult to eliminate IE6.

When Microsoft rolled out IE7, it did so only in newer generation operating systems, such as Windows XP and Vista. This left a large contingent of users of IE6 on Windows 2000, which is still in fairly wide use. The company also didn't post recommendations for W2K users to switch to a different browser, such as Firefox or Opera. Both actions served to leave a bloc of orphaned IE6 users, many of whom are still haunting our web sites.

I also don't give much credence to those bemoaning the burden that dropping support for IE6 would have on corporations, libraries, and schools. It is not an onerous task to install Firefox on people's machines. Nor is it an impossible task for sites to update their software. If two years since the release of IE7 isn't enough time, what is the right amount of time? Five years? Ten? At some point, we're faced with biting the bullet, and doing so before IE8 is released seems to be a good time to crunch down.

The single biggest hindrance to expansion on the web today is IE6. We can't use transparent PNGs because of IE6. Anything but the most rudimentary uses of JavaScript becomes a problem with IE6. Our sites are full of workaround CSS and page markup existing only to support IE6. We are, in effect, grand prix racers stuck behind some old cow left in the road by farmers who have decided they like pigs, better. Oink.

I don't support IE6, and not just because most of my readers are using new browser versions. I don't have a separate machine I can keep at IE6 in order to test my pages. Since we can't run IE6, IE7, and IE8, simultaneously, I made a choice to support the two newer versions of IE, which are, themselves, enough of a challenge. For the older browser users, I provide the printer friendly pages with all JavaScript and CSS stripped out. It may not be an optimum solution, but neither is supporting IE6 until all the older machines are piles of rust.

I do hope that 37signals begins a trend.

(via Simon)

update

As Ralph points out in comments, yes we can use PNGs with IE6, if we use IE specific filters. I've not had the best of luck with IE6 and PNGs, and typically just hide my PNGs from IE6 with CSS. But then, I decided with the first beta of IE8 that I was not going to create specific code for IE6 any longer. Two versions of any browser is enough.

Ralph also notes the PNG8 workaround for IE6. However, using this technique does not ensure that an image is going to look as good in IE6 as it does in other browsers. I've not tried this with GIMP, and I don't have a version of IE6 for testing, but is an option for those still having to support IE6. However, as the Cozi Tech Blog mentions:

We have since decided that we will no longer make heroic efforts to get our web application looking just as good on IE6 as it does in modern browsers. Quite apart from the extraordinary amount of pain we endured in the Affair of the Transparent PNGs, fighting with IE6 has been a huge timesink for us, especially when it comes to working around its CSS bugs.

A significant fraction of our users are still using IE6, so we have no choice but to support it. However, we no longer aim to achieve full parity.

If sites still support IE6, but at a minimum, as I do with my sites, this also may finally force the issue and hasten the EOL for this browser.

Shiretoko: First Looks

Tagged:

I downloaded the first alpha of Shiretoko, or Firefox 3.1, and I'm delighted to see the text-shadow I have attached to my site name showing up in a Firefox browser.

Not just text-shadow, Mozilla has also added JavaScript query selectors to this release, which means that we can query for all elements of a given class name, such as:


var list = document.querySelectorAll(".elements");

A behavior that we also had with the older, supported, document.getElementsByClassName. However, we couldn't do the following with getElementsByClassName:

    var first = document.querySelectorAll("div > p:first-child");   
    for (var i = 0; i < first.length; i++)   {    
       first[i].style.backgroundColor="#f00";
    }

This code snippet accesses the paragraphs that are directly the first child of any div element, using the CSS selector syntax, and sets the background of each returned element to red. You can see it in action with this simple example containing three div elements, each with three paragraphs, the first of which now has a red background. Well, you can see it with browsers that support querySelectorAll, which are Safari/Webkit, IE8, and now Firefox 3.1a. Opera has also committed to the support of querySelectorAll (as well as rgba, we hope).

Of course, I can do something like this with JavaScript by getting all div elements, and then all paragraphs of all div elements, and then accessing the first of the returned set, but how much simpler, and how my more robust will this process be if this type of functionality is built directly into the browser. Especially since my example is quite simple, but other queries on CSS selectors could be quite complex.

Firefox 3.1a also has support for border images, which means no more nested div elements to achieve specialized borders, which is what's used in the design of this site. However, support for this CSS3 attribute is limited to Firefox 3.1a and Safari; until support for the option reaches three of my four target browsers, I won't use it for my site designs.

(I felt comfortable using the text-shadow when only Opera and Safari supported the CSS attribute, because it provides such a nice effect, which degrades beautifully if the attribute isn't supported.)

Firefox 3.1a also supports the HTML5 Canvas Text API, but I haven't had a chance to play with the new capability, yet. I had rather hoped that the Mozilla team would add a little SMILe to the browser, but I guess it's not to be with this browser release. Perhaps our man on the SVG street, Jeff Schiller, can update us on a SMIL timeline for the browser.

Oh, and look: anyone can try the browser and report a bug.

Then and Now in Standards: What's Different

Tagged:

Update I am aware that Hard Rock is using Deep Zoom, based on Microsoft's HD Photo technology. The equivalent open source version of the same functionality is JPEG 2000, which, hopefully some day will have wider implementation. My tiny test was not a challenge to Hard Rock, but to the statements made about open source technologies being incapable of smooth animations—not without causing the CPU to spike badly. My test was focused specifically on these two qualities. I would hope that people would grant me a few more hours if I were to attempt to re-create the Hard Rock, which is based on proprietary technologies, and took the team a month, I believe it was, to create.

I did want to address something else that Mr. Ellis wrote:

They seem pretty sophisticated right? In short AJAX is a kludge of various technologies that were never intended to work together in this manner. It can work, but AJAX development is a pain. It gets even more complicated when you start to mix in other aspects of the “free and open” Web like SVG or CSS. It is anything but a cohesive set of technologies.

The real weak spot is in the development tools for “free and open” technologies. There are no AJAX development environments that can compare to the tools available for Flash and Silverlight, and the latter has only been out for one year. It is so bad that people made a big deal over a framework to make AJAX development a little easier.

Actually, the technology behind Silverlight began several years ago. The underlying markup, XAML, was first released in 2003 (or sooner). Yes, while IE6 lay dormant, Microsoft was building Silverlight, except that the infrastructure was called Avalon and Chrome and probably a host of other names. In fact, you could say it took Microsoft close to seven years to create Silverlight. And if you think I was the first person to write about the similarity between XAML and SVG, on the contrary. Check out the following:

And one last clarification: I don't care that Microsoft built Silverlight. I do care that the company spent time building this proprietary infrastructure, while leaving the rest of us to deal with broken browsers, and broken promises.


Luckily the article I wrote for NetscapeWorld in August, 1997, was still preserved at the Wayback Machine. In the article, titled A Web Developer's Guide to the new Cross-Browser Issues, I wrote:

Developers are more likely to have compatibility across vendor implementations of an application if one vendor dominates the market and their implementation becomes the de facto standard, rather than being derived from a specification released by a non-profit standards organization. The only exception to this is for standards that are machine-specific, such as the DVD format, and even then the implementation of one vendor probably acted as a seed to the standard. Microsoft has what is the dominant user interface operating system, Windows, with the Mac being a secondary standard. Based on this, you have a plethora of products compatible with one or the other or both. A GUI derived from a standards committee would never have this same impact.

This would seem to contradict what I wrote yesterday about the importance of open standards and the W3C. However, what's different between then and now is the concept of symbiosis.

Twelve years ago, Netscape and IE were neck and neck when it came to quality and what each offered. As each browser version was released, the companies would implement their own innovations, and the world would either flock to the new browser release, or run for the hills. The browser companies would then submit their innovations to the standards organizations, and based on the reactions of both users and developers, these organizations would either incorporate the innovation, or not. Though the ride was bumpy at times, the innovation-standard-innovation cycle ensured a consistency across browsers (standards) without costing progress (innovation). There was a symbiotic relationship between the innovative and the standard in those early days, and the end result of the symbiosis was that best browser became the de facto browser, at least at the time, and both standards and innovation marched in tune.

The same cannot be said of today's browser environment. Microsoft's Internet Explorer is still the most used browser for most sites today, but its prominence is not based on it being the best; it's based on inertia. Microsoft includes IE6 as the default browser within its operating systems, and many individuals and companies just went with the default and stayed, stuck like bugs in amber. No one, not even Microsoft can say that IE6 the best browser today. However, even Microsoft would be hard-pressed to say that IE8 is the best browser if you measure its conformance to existing standards as a component of its overall worth.

The days when the best browser winning, "best" being measured based on both innovation and standards support, are gone; leaving behind not a race to the bottom, so much, but a disinterest, especially in corporate America, in rising to the top. This is not a healthy state to be in. This is actually a far worse state to be in then when I wrote that article for NetscapeWorld in 1997.

What Microsoft has done is broken faith with the standards community. It's fractured that delicate symbioses between standards and innovations. It did so by implementing those standards it finds useful, and ignoring everything else. The company is taking a gamble that people have become indifferent to standards enough that it can do an end run around the standards organizations, like the W3C, but still maintain top billing.

Microsoft didn't stop with ignoring what we now consider to be "standard". The company made sure that the symbiotic relationship between standards and innovation was irretrievably damaged with its release of Silverlight. Microsoft seemingly made a business decision that the competitive threat it faced was not coming from a browser or browser company. No, the threat Microsoft perceived was coming from Adobe. It needed a Flash clone, and it created one, or is trying to create one, with Silverlight.

Silverlight isn't just a Flash clone, though. It is a policy statement about standards. Silverlight is innovative, true, but it is an innovation that can never be shared as a standard, because it is a destructive innovation. By using an XML-based vector graphics language that is not the same XML-based vector graphics language that forms the standard, SVG, Microsoft has ensured that the innovative elements incorporated into Silverlight can never be added back to SVG. More importantly, by not implementing SVG, the company has made a statement that it will never "share" its innovations with the standards community. Oh we may, if we're willing to accept the company's licensing, use Silverlight, but it will never be a part of the community, it will always be Microsoft's.

Make no mistake, there is nothing in SVG that would be counter to the innovations necessary to create Silverlight. Microsoft could have chosen a different path, to innovate on SVG with the risk that its innovations would be rejected by both the community and W3C. However, those aspects of SVG that are basic to both the standard and Microsoft's implementation of Silverlight would at least be compatible across browsers. Now what we, who are promoting a standard vector-based graphics system in browsers, are left with, is a four legged stool, with one leg missing.

To add salt to the wound, Microsoft also used its own version of a Canvas element in which to create its displays and animations, but it is not the same Canvas element implemented in the other browsers and currently being incorporated into HTML5. That's two specifications that Microsoft has subsumed into its own proprietary functionality. Two specifications that, unless something drastic happens, will never be compatible across browsers.

Yesterday, Paul Ellis decided to educate all of us in how Silverlight is a superior product, and how it's the W3C's fault the web is going proprietary because the W3C is slow. The W3C, like any standards organization is cautious, true, but the SVG specification has been out for years, and as far as I know, nothing has held Microsoft back from not only implementing SVG but innovating on SVG if the company so desired. As one person commented, why create new standards if the existing ones aren't implemented?

Mr. Ellis also pointed out the superiority of the animation demonstrated in the Hard Rock Cafe's Memorabilia page, implemented in Silverlight 2. Nothing like this, he proclaims, could be done with open standards.

Mr. Ellis is incorrect. True, JavaScript animation can be a bit jerky at times, and if not managed properly, can cause one's CPU to spike. However, I think if he were to see he Hard Rock's zooming animation separate from the other elements of the application, he might not find it to be as smooth as he thinks it is, or as friendly to the CPU. The perception of how good that application is, is dependent on operating system, machine, graphics card and so on. I found that the Silverlight animation caused my Windows XP machine to spike when I opened the animation using Firefox; it barely worked with Opera. At the same time, my own (admittedy quickly coded and not performance tweaked) zooming example implemented with JavaScript did not cause any CPU spikes at all, even on my pre-Intel Mac, which can't run a Silverlight 2 application. Of course, Mr. Ellis would say that my JavaScript animation isn't as smooth and it is true that JavaScript-based animation can have jerky movements based on the timer and the action and so on; at the same time, if the animation was incorporated with other events, such as an end zoom artificial bounce, as well as sideways motion, we might find that the zooming action is more than acceptable. Additionally, Opera, Firefox, and Safari are always working to improve their JavaScript engines, not only for animations but for all processes.

However, if we never find a JS-based animation to be as "smooth" as an animation based in Silverlight, we can use SVG and SMIL, which is a declarative form of animation, to create the same zooming effect, at least for Opera and Safari, and eventually Firefox. In fact, if we were to look at the functionality to zoom in Silverlight, compared to the same in SVG, we would find some remarkable similarities. Enough so, that I believe that we could completely emulate Mr. Ellis' Hard Rock Cafe application in SVG and have it perform the same as the Silverlight effect, or close enough to make differences difficult to perceive. Naturally, the Hard Rock effect wasn't done in an hour, so Mr. Ellis will have to forgive me if my own example isn't identical.

The real issue, though, isn't that Adobe has Flash, and Microsoft has Silverlight, or that JavaScript can't create World of Warcraft; there's nothing wrong with having additional tools based on plug-in architectures, and more power to the companies that provide them. In fact, if Microsoft wanted to implement SVG as a plug-in architecture, I think most of us would have found this choice to be acceptable. Where the failure lies with Microsoft is that the company shattered the symbiosis that existed between standards and innovation, and created a schism between the community that values standards, and the community that values innovation. It has generated a gap between people like myself and Mr. Ellis, and forced each of us to choose "sides" at a time when we should have a common goal—a better browser, a better web experience. Even if someone were to create a SVG wrapper using Silverlight, the fracture between standards and innovation will only be bandaged, not healed. It's not the standards implementation we're missing; it's the missing commitment to standards that is causing the harm.

Microsoft has forgotten that nothing stands alone on the web. The only way the company will remember this important lesson is for us to succeed in those areas where the company has tried to generate failure; for all of us to continue to celebrate standards, which form a stable platform for change, in addition to innovation, which ensures that standards remain a living work.