The WebKit Open Source Project

Web Site Compatibility

Overview

The most important task that we are working on in WebKit is improving web site compatibility. Web site compatibility is actually a generic term that covers bugs that may occur in many different functional areas of the code, from CSS to rendering to plug-ins. Any time you encounter a web site that works in another browser but fails in a WebKit browser you have hit a web site compatibility bug.

These bugs can range from minor rendering defects to showstoppers that make an entire site inaccessible. The causes of these bugs are also wide-ranging, from bugs in the way the web page is coded to bugs in the engine itself. For this reason reduction of web site compatibility bugs is a top priority. Only if the bug is reduced to a minimal failing test case is it easy for a developer to determine the root cause of the problem.

Web site compatibility bugs fall into several categories:

  1. The bug is in the Web site itself. You can test this assumption by checking the site in other browsers like Firefox and Internet Explorer for Windows. If both of these browsers also fail on the site, it's a safe bet that the site is to blame.
  2. The HTML on the site is buggy, but WebKit's error recovery does not match other browsers. This is a very common scenario for WebKit as our error handling is still a bit more strict than other browsers. In this case the bug is still our responsibility, since whenever possible we want to match other browsers' error recovery behavior.
  3. WebKit has a legitimate compliance bug. This is the most important class of compatibility bug, since we especially want valid HTML to render and behave properly.

Get Involved!

How can you help us improve web site compatibility in Safari?

Test Test Test!
Build the latest WebKit and use it day to day. Visit all of your favorite Web sites and scrutinize them all closely. Make sure they all work as expected, and if they don't then report problems to us.
File Bugs
Report bugs to us for any problems you find. Get bugs into our database so that we can track the issue and screen the bug.
Reduce Bugs
Scan the bugs in the New Bugs component and help attach reductions and minimal failing test cases. Only when bugs are screened properly will a developer be able to determine the root cause of the problem and move it into the appropriate component. This is one of the most important ways you can help improve WebKit.
Create New Tests
To help avoid regressions you can make new tests, even for features that WebKit already handles correctly. The more regression tests we have covering a specific feature, the less likely it is that the feature will break when we make changes.