WebKitGtk+
  허준회 (Joone Hur)
http://opensoftware.kr
Who am I?

    • Working for Collabora
          – WebKitGtk+, WebKit-Clutter

    • WebKit Committer




GNOME3 Korea Launching Party               2
WeKit Project

                               • 오픈소스 웹 엔진

                               • 2 백만 라인 코드 , 대부분 C++

                               • ~10 % 브라우저가 사용

                               • 150 명 커미터

                               • LGPL, BSD License




GNOME3 Korea Launching Party                            3
WebKit 의 시작

                               • KDE Project 에서 KHTML/KJS 로 시작

                               • Apple 에서 Fork 하여 2001 년 부터 개
                                발 시작

                               • 2005 년 오픈소스화 됨

                               • Apple, Google 주도로 프로젝트 운영




GNOME3 Korea Launching Party                                     4
WebKit Port

        WebKitMac         WebKitWin    WebKitGtk WebKitQt/EFL WebKitChromium


                        WebCore                        JavaScriptCore


                                      WebCoreSupport

        OSX/iOS        Windows    GTK+     QT   EFL    Android    Chromium



    • WindowsCE, Brew

    • wxWidget, Haiku(BeOS) 지원



GNOME3 Korea Launching Party                                                   5
누가 사용하는가 ?




GNOME3 Korea Launching Party                6
Who develop WebKit?




GNOME3 Korea Launching Party                         7
WebKit Maintainers



                                                          etc 50 28%
                           Apple 57 31%

                                                                         Apple
                                                                         Google
                                                                         Nokia

                                                             RIM 3 2%    RIM
                                                                         etc
                                                            Nokia 7 4%



                                          Google 64 35%




                                           http://trac.webkit.org/wiki/WebKit%20Team
GNOME3 Korea Launching Party                                                           8
WebKit Architecture




GNOME3 Korea Launching Party                         9
WebKit Components
    • WebKit
          – API, OS Interaction Layer

    • WebCore
          – Rendering, Layout, Painting, DOM, Binding, etc

    • JavaScriptCore/V8
          – JavaScript Engine, JS Execution




GNOME3 Korea Launching Party                                 10
WebKitGtk+




GNOME3 Korea Launching Party                11
WebKitGtk+

    • A regular GtkWidget
          – you can add to your GtkScrolledWindow and profit

    • Applications using WebKitGtk+
          – Epiphany/Midori

          – Empathy

          – DevHelp

          – Evolution (Experimental)

          –                     http://trac.webkit.org/wiki/ApplicationsGtk

GNOME3 Korea Launching Party                                                  12
Working with GNOME Platform

    • Cairo for rendering

    • Pango for fonts

    • GTK+ for theming/widgets

    • Soup for networking

    • GStreamer for HTML5 video

    • PyGtk+ support


GNOME3 Korea Launching Party                  13
Release Planning
    • We'll release for GNOME every 6 months

    • But might not branch from trunk that often.

    • An API is declared stable when it ships in a new stable release.

    • We can, and will break APIs during development cycles (this is how
        GTK+ works today).

    • After an API is declared deprecated, we'll remove it from stable
        releases after a reasonable amount of time (think, two major
        releases).




                                                            http://webkitgtk.org/gcds.html
GNOME3 Korea Launching Party                                                           14
GObject DOM bindings

    • Access to DOM APIs through native GObject layer




GNOME3 Korea Launching Party                            15
GTK+3 Support

    • Dual support for 2.x and 3.x (--with-gtk={2.0,3.0})




GNOME3 Korea Launching Party                                16
WebKit2




    • Multiple Process Support

                                     http://trac.webkit.org/wiki/WebKit2
GNOME3 Korea Launching Party                                           17
Multiple Process 지원
                                     • 목적
             Web Process              – UI 반응성 향상
        W          W           W
                                      – Content 에 의한 Crash 방지

                                      – 전반적인 성능 향상

                                      – Multi-Core 지원
       Tab        Tab          Tab
                                      – 보안성 강화
              UI Process             • 단점

                                      – 메모리를 많이 사용함

                                      – 포팅이 어렵다

GNOME3 Korea Launching Party                                    18
Future Work

    • DOM binding

    • WebKit2

    • Accelerating Compositing




GNOME3 Korea Launching Party                 19
The WebKit Community




GNOME3 Korea Launching Party                          20
WebKit Community

    • Contributor/Committer/Reviewer 로 구성

    • Apple, Google, Nokia, RIM, Samsung, Motorola,
         Erricson
    • Collabora, Igalia




GNOME3 Korea Launching Party                          21
어떻게 참여하는가 ?
                                     공개 소스 저장소
                                      svn.webkit.org


공개 버그 데이터베이스                                                   일일 빌드 다운로드
  bugs.webkit.org                                              nightly.webkit.org



          웹사이트와 블로그
            webkit.org                                           메일링 리스트
                                                                lists.webkit.org
                                           IRC 채널
                                             #webkit
                                       irc.freenode.net


                                 Safari and WebKit Overview, Session 325 - WWDC2008
GNOME3 Korea Launching Party                                                          22
Download Source Code

    • http://nightly.webkit.org/




GNOME3 Korea Launching Party                     23
Checkout
                               the development tree
    • Using git
          – git clone git://git.webkit.org/WebKit.git

    • Using svn
          – svn co http://svn.webkit.org/repository/webkit/trunk




GNOME3 Korea Launching Party                                       24
Build

    • Supported Platforms
          – Mac for Mac/Window

          – Gtk/Qt for Linux/Window

          – MeeGo, Symbian...




GNOME3 Korea Launching Party            25
Build Prerequisite for Linux

    • sudo apt-get install autoconf automake
         autotools-dev bison flex gperf libglib2.0-dev ..



    • https://trac.webkit.org/wiki/BuildingGtk




GNOME3 Korea Launching Party                                26
Build Command

    • WebKit/Tools/Scripts/build-webkit --gtk --debug




GNOME3 Korea Launching Party                            27
Build Options

    • $ Tools/Scripts/build-webkit –gtk --tiled-backing-
         store –3d-canvas

         --debug

         --makeargs=-j4




GNOME3 Korea Launching Party                               28
Running a launcher
    • $ Tools/Scripts/run-launcher --gtk --debug

    • $ WebKitBuild/Release/Programs/GtkLauncher




GNOME3 Korea Launching Party                        29
Get involved!

    • http://live.gnome.org/WebKit

    • http://webkit.org

    • http://webkitgtk.org

    • IRC: #webkit, #webkit-gtk / FreeNode




GNOME3 Korea Launching Party                   30
WebKitGtk+ HackFest




GNOME3 Korea Launching Party                     31
Q&A




GNOME3 Korea Launching Party         32
References



   ●
    http://webkitgtk.org/gcds.html
   ●
    http://webkit.org
   ●
    http://Webkitgtk.org




GNOME3 Korea Launching Party                33

WebKitGtk+ Project

  • 1.
    WebKitGtk+ 허준회(Joone Hur) http://opensoftware.kr
  • 2.
    Who am I? • Working for Collabora – WebKitGtk+, WebKit-Clutter • WebKit Committer GNOME3 Korea Launching Party 2
  • 3.
    WeKit Project • 오픈소스 웹 엔진 • 2 백만 라인 코드 , 대부분 C++ • ~10 % 브라우저가 사용 • 150 명 커미터 • LGPL, BSD License GNOME3 Korea Launching Party 3
  • 4.
    WebKit 의 시작 • KDE Project 에서 KHTML/KJS 로 시작 • Apple 에서 Fork 하여 2001 년 부터 개 발 시작 • 2005 년 오픈소스화 됨 • Apple, Google 주도로 프로젝트 운영 GNOME3 Korea Launching Party 4
  • 5.
    WebKit Port WebKitMac WebKitWin WebKitGtk WebKitQt/EFL WebKitChromium WebCore JavaScriptCore WebCoreSupport OSX/iOS Windows GTK+ QT EFL Android Chromium • WindowsCE, Brew • wxWidget, Haiku(BeOS) 지원 GNOME3 Korea Launching Party 5
  • 6.
    누가 사용하는가 ? GNOME3Korea Launching Party 6
  • 7.
    Who develop WebKit? GNOME3Korea Launching Party 7
  • 8.
    WebKit Maintainers etc 50 28% Apple 57 31% Apple Google Nokia RIM 3 2% RIM etc Nokia 7 4% Google 64 35% http://trac.webkit.org/wiki/WebKit%20Team GNOME3 Korea Launching Party 8
  • 9.
  • 10.
    WebKit Components • WebKit – API, OS Interaction Layer • WebCore – Rendering, Layout, Painting, DOM, Binding, etc • JavaScriptCore/V8 – JavaScript Engine, JS Execution GNOME3 Korea Launching Party 10
  • 11.
  • 12.
    WebKitGtk+ • A regular GtkWidget – you can add to your GtkScrolledWindow and profit • Applications using WebKitGtk+ – Epiphany/Midori – Empathy – DevHelp – Evolution (Experimental) – http://trac.webkit.org/wiki/ApplicationsGtk GNOME3 Korea Launching Party 12
  • 13.
    Working with GNOMEPlatform • Cairo for rendering • Pango for fonts • GTK+ for theming/widgets • Soup for networking • GStreamer for HTML5 video • PyGtk+ support GNOME3 Korea Launching Party 13
  • 14.
    Release Planning • We'll release for GNOME every 6 months • But might not branch from trunk that often. • An API is declared stable when it ships in a new stable release. • We can, and will break APIs during development cycles (this is how GTK+ works today). • After an API is declared deprecated, we'll remove it from stable releases after a reasonable amount of time (think, two major releases). http://webkitgtk.org/gcds.html GNOME3 Korea Launching Party 14
  • 15.
    GObject DOM bindings • Access to DOM APIs through native GObject layer GNOME3 Korea Launching Party 15
  • 16.
    GTK+3 Support • Dual support for 2.x and 3.x (--with-gtk={2.0,3.0}) GNOME3 Korea Launching Party 16
  • 17.
    WebKit2 • Multiple Process Support http://trac.webkit.org/wiki/WebKit2 GNOME3 Korea Launching Party 17
  • 18.
    Multiple Process 지원 • 목적 Web Process – UI 반응성 향상 W W W – Content 에 의한 Crash 방지 – 전반적인 성능 향상 – Multi-Core 지원 Tab Tab Tab – 보안성 강화 UI Process • 단점 – 메모리를 많이 사용함 – 포팅이 어렵다 GNOME3 Korea Launching Party 18
  • 19.
    Future Work • DOM binding • WebKit2 • Accelerating Compositing GNOME3 Korea Launching Party 19
  • 20.
    The WebKit Community GNOME3Korea Launching Party 20
  • 21.
    WebKit Community • Contributor/Committer/Reviewer 로 구성 • Apple, Google, Nokia, RIM, Samsung, Motorola, Erricson • Collabora, Igalia GNOME3 Korea Launching Party 21
  • 22.
    어떻게 참여하는가 ? 공개 소스 저장소 svn.webkit.org 공개 버그 데이터베이스 일일 빌드 다운로드 bugs.webkit.org nightly.webkit.org 웹사이트와 블로그 webkit.org 메일링 리스트 lists.webkit.org IRC 채널 #webkit irc.freenode.net Safari and WebKit Overview, Session 325 - WWDC2008 GNOME3 Korea Launching Party 22
  • 23.
    Download Source Code • http://nightly.webkit.org/ GNOME3 Korea Launching Party 23
  • 24.
    Checkout the development tree • Using git – git clone git://git.webkit.org/WebKit.git • Using svn – svn co http://svn.webkit.org/repository/webkit/trunk GNOME3 Korea Launching Party 24
  • 25.
    Build • Supported Platforms – Mac for Mac/Window – Gtk/Qt for Linux/Window – MeeGo, Symbian... GNOME3 Korea Launching Party 25
  • 26.
    Build Prerequisite forLinux • sudo apt-get install autoconf automake autotools-dev bison flex gperf libglib2.0-dev .. • https://trac.webkit.org/wiki/BuildingGtk GNOME3 Korea Launching Party 26
  • 27.
    Build Command • WebKit/Tools/Scripts/build-webkit --gtk --debug GNOME3 Korea Launching Party 27
  • 28.
    Build Options • $ Tools/Scripts/build-webkit –gtk --tiled-backing- store –3d-canvas --debug --makeargs=-j4 GNOME3 Korea Launching Party 28
  • 29.
    Running a launcher • $ Tools/Scripts/run-launcher --gtk --debug • $ WebKitBuild/Release/Programs/GtkLauncher GNOME3 Korea Launching Party 29
  • 30.
    Get involved! • http://live.gnome.org/WebKit • http://webkit.org • http://webkitgtk.org • IRC: #webkit, #webkit-gtk / FreeNode GNOME3 Korea Launching Party 30
  • 31.
  • 32.
  • 33.
    References ● http://webkitgtk.org/gcds.html ● http://webkit.org ● http://Webkitgtk.org GNOME3 Korea Launching Party 33