The document discusses compiling and optimizing your own browser using WebKit. It provides an overview of WebKit, including its history, extensive testing, review process, components, and how it is used in different browsers. It then describes how to get and compile the WebKit source code, launch a browser, capture screenshots, view the network log, run tests, and use remote debugging tools. The presentation encourages contributions to WebKit and notes job opportunities at Sencha.
7. History
80000
70000
60000
50000
Revisions
40000
30000
20000
10000
0
0 1 2 3 4 5 6 7 8 9 10
Years
Monday, November 29, 2010
8. History ~2000 commits/month
80000
70000
60000
50000
Revisions
40000
30000
20000
10000
0
0 1 2 3 4 5 6 7 8 9 10
Years
Monday, November 29, 2010
9. Extensive Tests
tests
≈ 20,000 tests 904 MB the rest
229 MB
Monday, November 29, 2010
10. Workflow
1 Every commit needs to be reviewed
2 Broken commit must be reverted
Monday, November 29, 2010
11. Workflow
quality control
1 Every commit needs to be reviewed
2 Broken commit must be reverted
zero-regression policy
Monday, November 29, 2010
12. Level of Involvement
Contributor
after 10-20 patches
after 80 patches
Committer
≈ 130 Reviewer
checks in reviewed patches
≈ 80
accept or reject patches
Monday, November 29, 2010
13. WebKit Reviewers
Apple
39
Google
19
Misc
12
RIM Nokia
6 6
Monday, November 29, 2010
14. WebKit Reviewers
Apple
39
Google
19
Misc
12
1 RIM Nokia
6 6
Monday, November 29, 2010
15. Components of WebKit
DOM CSS
WebCore SVG
HTML rendering
JavaScriptCore
WebKit Library
Monday, November 29, 2010
16. Web Browsers
WebCore + JavaScriptCore
Safari Eclair
WebCore + V8
Chrome Froyo
Monday, November 29, 2010
17. How Fresh?
AIR 2.5
531.9
Chrome 7
534.7
Android 2.2
533.1
Safari 4 Safari 5
528.16
533.18
mid 2009 Spring 2010 Fall 2010
Monday, November 29, 2010
21. Requirements
•Subversion or Git
•C++ compiler
•Perl
•Python
•Various SDK
Monday, November 29, 2010
22. Using Subversion
svn checkout http://svn.webkit.org/repository/
webkit/trunk webkit
cd webkit
Monday, November 29, 2010
23. Using git
git clone git://git.webkit.org/WebKit.git
cd WebKit
≈ 1.2 GB .git
Monday, November 29, 2010
24. Build
WebKitTools/Scripts/build-webkit
--qt for Qt, --gtk for Gtk+
--debug for “Debug” mode
Monday, November 29, 2010
25. Launch
WebKitTools/Scripts/run-launcher
--qt for Qt, --gtk for Gtk+
--debug for “Debug” mode
Monday, November 29, 2010
26. Render Tree
paragraph
<html><body><p>Hello SenchaCon!</p></body></html>
layer at (0,0) size 800x600
RenderView at (0,0) size 800x600
layer at (0,0) size 800x600
RenderBlock {HTML} at (0,0) size 800x600
RenderBody {BODY} at (8,8) size 784x576
RenderBlock {P} at (0,0) size 784x18
RenderText {#text} at (0,1) size 117x16
text run at (0,1) width 117: "Hello SenchaCon!"
Monday, November 29, 2010