SlideShare a Scribd company logo
The WebKit project
        Juan J. Sánchez
   LinuxCon 2012, San Diego
Myself, Igalia and WebKit



     Co-founder of the company, member of the
     WebKit/Browsers team
     Igalia is an open source consultancy founded in 2001
     Igalia is the main contributor to upstream WebKit after
     Google and Apple
     We work with some of the main IT industry actors
     integrating different WebKit solutions in their frameworks




                   The WebKit project   Juan J. Sánchez
Outline




     The technology: goals, features, architecture, code
     structure, ports, webkit2, ongoing work
     The community: contributors, committers, reviewers,
     tools, events
     How to contribute: bugfixing, features, new ports




                   The WebKit project   Juan J. Sánchez
The technology




 The WebKit project   Juan J. Sánchez

Recommended for you

Introduction to react_js
Introduction to react_jsIntroduction to react_js
Introduction to react_js

React is a JavaScript library for building user interfaces. It was created by Facebook and is best for building dynamic websites like chat applications. React uses a virtual DOM for efficiently updating the view after data changes. Components are the building blocks of React and can contain state and props. The document provides an example of a simple component class and demonstrates how to add state and props. It also includes links to example code and MicroPyramid's social media profiles.

reactjsjavascript
jQuery Tutorial For Beginners | Developing User Interface (UI) Using jQuery |...
jQuery Tutorial For Beginners | Developing User Interface (UI) Using jQuery |...jQuery Tutorial For Beginners | Developing User Interface (UI) Using jQuery |...
jQuery Tutorial For Beginners | Developing User Interface (UI) Using jQuery |...

( ** Full Stack Masters Training: https://www.edureka.co/masters-program/full-stack-developer-training ** ) This PPT on jQuery will help you understand the basics of jQuery and you will also be able to create your own program using jQuery by the end of this PPT. Follow us to never miss an update in the future. Instagram: https://www.instagram.com/edureka_learning/ Facebook: https://www.facebook.com/edurekaIN/ Twitter: https://twitter.com/edurekain LinkedIn: https://www.linkedin.com/company/edureka

jquery tutorial for beginnersdeveloping user interface (ui) using jqueryjquery tutorial
Node js introduction
Node js introductionNode js introduction
Node js introduction

Node.js is a server-side JavaScript platform built on Google's V8 engine. It is non-blocking and asynchronous, making it suitable for data-intensive real-time applications. The document discusses how to install Node.js and its dependencies on Ubuntu, introduces key Node.js concepts like events and the event loop, and provides examples of popular Node.js packages and use cases.

setting up node with virtual appliancescaling the webnode
The WebKit project



     Web browser engine (HTML, JavaScript, CSS...)
     The engine is the product
     Started as a fork of KHTML and KJS in 2001
     Open Source since 2005
     Among other things, it’s useful for:
         Web browsers
         Using web technologies for UI development




                   The WebKit project   Juan J. Sánchez
Goals of the project

     Web Content Engine: HTML, CSS, JavaScript, DOM
     Open Source: BSD-style and LGPL licenses
     Compatibility: regression testing
     Standards Compliance
     Stability
     Performance
     Security
     Portability: desktop, mobile, embedded...
     Usability
     Hackability

                   The WebKit project   Juan J. Sánchez
Goals of the project



  NON-goals:
     “It’s an engine, not a browser”
     “It’s an engineering project not a science project”
     “It’s not a bundle of maximally general and reusable code”
     “It’s not the solution to every problem”

     http://www.webkit.org/projects/goals.html




                    The WebKit project   Juan J. Sánchez
WebKit features

     HTML and XML support
     JavaScript support (ECMAScript 5.1, ES6 in progress)
     CSS 2.1, CSS 3 support. Working drafts also
     SVG support
     Support for Plugins (NPAPI, WebKit Plugins)
     HTML5 support: multimedia, 3D graphics, advanced CSS
     animations and transformations, drag’n’drop, offline &
     local storage, connectivity...
     Accessibility support
     Q&A infrastructure: review process, continuous
     integration, 30.000 regression tests, API tests...
     Passing ACID3 with 100/100 tests since March 2008
                    The WebKit project   Juan J. Sánchez

Recommended for you

Introduction to React
Introduction to ReactIntroduction to React
Introduction to React

Slide deck from my "Intro to React" brownbag. Presented to my HSG/ECM co-workers on April 22nd, 2016.

javascript
Introduction to React JS
Introduction to React JSIntroduction to React JS
Introduction to React JS

React is a JavaScript library for building user interfaces. It uses a component-based approach where UI is broken into independent, reusable pieces called components. Components are like functions that return markup describing part of a view. React uses a virtual DOM to efficiently update the real DOM by only making necessary changes. This improves performance by avoiding expensive DOM operations and minimizing DOM access. Components receive data and callbacks through properties and local state is updated using setState(), triggering a re-render of changed parts of the UI.

react-domreact-jsjavascript
Understanding Webkit Rendering
Understanding Webkit RenderingUnderstanding Webkit Rendering
Understanding Webkit Rendering

The document discusses the process of rendering and layout in WebKit. It explains that WebKit parses HTML into a DOM tree and applies CSS styles to create a render tree. It then lays out elements based on their metrics and computed styles to establish positioning. Finally, it paints the render tree onto the screen by traversing it and issuing drawing commands to the underlying graphics system. The document provides details on how style calculations, layout, and painting optimizations work to efficiently display content on the web.

webkitsvcodecamp
WebKit Architecture

  From a simplified point of view, WebKit is structured this way:

                                   WebKit: thin layer to link against
                                   from the applications
                                   WebCore: rendering, layout,
                                   network access, multimedia,
                                   accessibility support...
                                   JS Engine: the JavaScript engine.
                                   JavaScriptCore by default, but can
                                   be replaced (e.g. V8 in Chromium)
                                   platform: platform-specific hooks to
                                   implement generic algorithms


                    The WebKit project   Juan J. Sánchez
What is a WebKit port?




               The WebKit project   Juan J. Sánchez
How many WebKit ports are there?

  WebKit is currently available for different platforms:
      GTK+ based platforms (GNOME)
      Qt based platforms (KDE, Meego)
      Mac OS X, iOS
      Google Chromium / Chrome
      Enlightenment Foundation Libraries (EFL)
      Symbian devices (S60)
      Adobe Integrated Runtime (Adobe AIR)
      BlackBerry
      WebOS
      Brew MP
      Win32 (Windows CE)
      wxWidgets

                     The WebKit project   Juan J. Sánchez
Some WebKit based browsers

   Amazon Kindle                                 PS3 web browser
   Arora                                         RockMelt
   BOLT browser                                  Safari
   Epiphany browser                              SRWare Iron
   Google Chrome                                 Shiira
   iCab (version >= 4)                           Sputnik for MorphOS
   Iris Browser                                  Stainless
   Konqueror                                     Steel for Android
   Midori                                        TeaShark
   Nintendo 3DS                                  Uzbl
   OWB                                           Web Browser for S60 (Nokia)
   OmniWeb                                       WebOS Browser
                    The WebKit project   Juan J. Sánchez

Recommended for you

React hooks Episode #1: An introduction.
React hooks Episode #1: An introduction.React hooks Episode #1: An introduction.
React hooks Episode #1: An introduction.

Hooks are functions that allow you to "hook into" React state and lifecycle features from function components. There are three main rules for using hooks: only call them at the top level, only from React functions, and you can call them from custom hooks. Hooks help solve issues with class components by allowing stateful logic to be reused without changing component hierarchy and making complex components easier to understand and test. While hooks provide benefits, there is no need to immediately use them everywhere and classes will continue to be supported.

reactreact hooksmsk tutorials
Routing & Navigating Pages in Angular 2
Routing & Navigating Pages in Angular 2Routing & Navigating Pages in Angular 2
Routing & Navigating Pages in Angular 2

Routing in Angular allows directing users to different pages/components based on their navigation choices. It defines routes for pages by creating components and linking them in the routes configuration. Components can link to routes using routerLink and navigate between them in code using the Router service. Route guards prevent navigation under certain conditions. Lazy loading allows splitting the app into smaller modules to improve performance. Code is cleaned up by exporting all imports from a single index file.

angular2knoldusknolx
Jquery
JqueryJquery
Jquery

This document provides an introduction to jQuery, covering its features, comparisons to other frameworks, selectors, and plugins. jQuery is an open-source JavaScript library that simplifies DOM manipulation, event handling, animations, and Ajax interactions. It uses CSS-style selectors to select and manipulate HTML elements. Some key features include DOM element selections, DOM traversal/modification, DOM manipulation based on CSS selectors, events, effects/animations, Ajax, and extensibility through plugins. The document also discusses jQuery versus other frameworks like Dojo and YUI, demonstrates basic selectors and methods, and encourages the use of plugins to add additional functionality.

Architecture of a WebKit port




                The WebKit project   Juan J. Sánchez
Architecture of a WebKit port




                The WebKit project   Juan J. Sánchez
How do we use a WebKit port?

     The WebView widget:
     A platform-specific widget that renders web content.
     It’s the main component and it’s useful for:
         Loading URIs or data buffers pointing to HTML content
         Go fullscreen, text/text+image zooming...
         Navigate back and forward through history...

     Events handling:
     Allows embedders to get notified when something
     important happens or when some input is needed.
     Some examples of these events:
         Getting notified when a load finished or failed
         Asking permission for navigating to an URI
         Requesting authorization for something..


                   The WebKit project   Juan J. Sánchez
A minibrowser written in Python

  #!/usr/bin/env python
  # -*- coding: utf-8 -*-

  import gtk
  import webkit

  def entry_activated_cb(entry, embed):
      embed.load_uri(entry.get_text())

  # Widgets and signals
  window = gtk.Window()
  window.set_default_size(800, 600)
  window.set_title("Mini browser written in Python")
  embed = webkit.WebView(); # WebKit embed
  entry = gtk.Entry()
  entry.connect(’activate’, entry_activated_cb, embed)
  scroller = gtk.ScrolledWindow()
  scroller.add(embed)

  # Pack everything up and show
  vbox = gtk.VBox(False, 5)
  vbox.pack_start(entry, False, False)
  vbox.pack_start(scroller)
  window.add(vbox)
  window.show_all()

  # Load a default URI and run
  embed.load_uri("http://www.webkit.org")
  gtk.main()



                            The WebKit project   Juan J. Sánchez

Recommended for you

Its time to React.js
Its time to React.jsIts time to React.js
Its time to React.js

ReactJS is arguably the most popular Javascript framework around for web development today. With more and more teams exploring and adopting React, here is TechTalks presentation elaborating fundamentals of React, in a code along session

developmentwebreact.js
Understanding react hooks
Understanding react hooksUnderstanding react hooks
Understanding react hooks

React Hooks - We start with basics of ReactJS - a javascript library to manage UI. Then, we dive into hooks, the why, what and how parts.

reactjsreact hooksjavascript
ReactJs
ReactJsReactJs
ReactJs

This Presentation is a short tutorial on the technology of ReactJs. ReactJs is a front end technology which helps in building faster and efficient UI.

react js
A minibrowser written in Python




               The WebKit project   Juan J. Sánchez
A minibrowser written in C
  #include <webkit/webkit.h>
  static void entry_activated (GtkEntry *entry, WebKitWebView *embed)
  {
    webkit_web_view_load_uri (embed, gtk_entry_get_text (entry));
  }
  int main (int argc, char** argv)
  {
    gtk_init (&argc, &argv);

      /* Widgets and signals */
      GtkWidget *window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
      gtk_window_set_default_size (GTK_WINDOW (window), 800, 600);
      gtk_window_set_title (GTK_WINDOW (window), "Mini browser written in C");
      GtkWidget *embed = webkit_web_view_new();
      GtkWidget *entry = gtk_entry_new();
      g_signal_connect (entry, "activate", G_CALLBACK (entry_activated), embed);
      GtkWidget *scroller = gtk_scrolled_window_new(NULL, NULL);
      gtk_container_add (GTK_CONTAINER(scroller), embed);

      /* Pack everything and show */
      GtkWidget *vbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, 0);
      gtk_box_pack_start (GTK_BOX(vbox), entry, FALSE, FALSE, 0);
      gtk_box_pack_start (GTK_BOX(vbox), scroller, TRUE, TRUE, 0);
      gtk_container_add (GTK_CONTAINER(window), vbox);
      gtk_widget_show_all (window);

      /* Load a default URI and run */
      webkit_web_view_load_uri (WEBKIT_WEB_VIEW (embed), "http://www.webkit.org");
      gtk_main();
      return 0;
  }


                             The WebKit project   Juan J. Sánchez
A minibrowser written in C




               The WebKit project   Juan J. Sánchez
What is WebKit2?


     New API layer designed to support a split process model.
     Different to Chromium’s multi-process implementation
              It’s bundled in the framework (reusable)

     Different processes take care of different tasks:
         UI process: the WebView widget, application UI
         Web process: loading, parsing, rendering, layout...
         Plugin process: each plugin type in a process

     It comes with Inter-Process Communication (IPC)
     mechanisms to communicate those processes bundled-in

        http://trac.webkit.org/wiki/WebKit2



                    The WebKit project   Juan J. Sánchez

Recommended for you

Angular Advanced Routing
Angular Advanced RoutingAngular Advanced Routing
Angular Advanced Routing

Technical presentation given by Laurent Duveau at the Angular Vancouver Meetup on June 07, 2018. https://www.meetup.com/vanangular/events/250883030/

angularjavascriptweb development
jQuery PPT
jQuery PPTjQuery PPT
jQuery PPT

jQuery is a popular JavaScript library that makes HTML document traversal and manipulation, event handling, animation, and Ajax interactions more simple. It works across browsers and allows developers to write less code using its easy-to-use API. The document discusses how jQuery works, including how to launch code on document ready, add and remove HTML classes, and use callbacks and functions when passing arguments to other functions.

React workshop
React workshopReact workshop
React workshop

Tutorial Videos: https://www.youtube.com/playlist?list=PLD8nQCAhR3tQ7KXnvIk_v_SLK-Fb2y_k_ Day 1 : Introduction to React, Babel and Webpack Prerequisites of starting the workshop ( Basic understanding of Node & Express ) What is Virtual DOM? What is React and why should we use it? Install and set up React: a-Using create-react-app b-From scratch using Babel and Webpack. We will use Webpack Dev Server. Day 2 : React Basic Concepts Types of Components: Class-based and Functional based Components Use of JSX Parent, Child, and Nested Components Difference between State and Props Create and Handle Routes Component Lifecycle Methods Create a form and handling form inputs Use of arrow functions and Spread Operator Day 3: Advanced Concepts in React Use of Refs What are Higher Order Components( HOC )? How to use HOC Understanding Context in React

reactcomponent
WebKit VS WebKit2




             The WebKit project   Juan J. Sánchez
WebKit2 VS Chromium




             The WebKit project   Juan J. Sánchez
WebKit2: current status



     Apple and Qt already released WebKit2 browsers
     WebKit2 stable API for the GTK+ port released, browser
     released soon
     Cross-platform and non-blocking C API available
     Most challenges of the split process model solved
     Tests running, need to deploy more test bots
     Still not considered “production quality”. Getting there




                   The WebKit project   Juan J. Sánchez
The Source Code in numbers
  According to Ohloh on 2012 April 29th, lines of code per
  language, without considering blank lines nor comments:

  Language          LoC         %
     HTML         1404469   33.79 %
         C++      1268231   30.51 %
  JavaScript      692274    16.65 %
        XML       254224     6.12 %
 Objective-C      101658     2.45 %
        PHP        97114     2.34 %
     Python        82366     1.98 %
         Perl      75677     1.82 %
         CSS       73587     1.77 %
           C       68469     1.65 %
  Other (19)       38820     0.93 %
        Total     4156889


                    https://www.ohloh.net/p/WebKit/analyses

                Just considering C++, Objective-C and C files,
                          we have almost 1.5M LoC!
                            The WebKit project   Juan J. Sánchez

Recommended for you

Learn react-js
Learn react-jsLearn react-js
Learn react-js

The document provides an introduction to ReactJS, including: - ReactJS is a JavaScript library developed by Facebook for building user interfaces. - It uses virtual DOM for rendering UI components efficiently. Only updated components are re-rendered. - Components are the basic building blocks of React apps. They accept input and return React elements to describe what should appear on the screen. - The main steps to set up a React app are installing React and ReactDOM libraries, adding JSX syntax, and rendering components onto the DOM using ReactDOM.render().

javascriptreactjsapps
Drive chrome(headless) with puppeteer
Drive chrome(headless) with puppeteerDrive chrome(headless) with puppeteer
Drive chrome(headless) with puppeteer

Puppeteer allows controlling headless or headed Chrome over the DevTools Protocol. It provides a high-level API for common tasks like taking screenshots, navigating pages, and interacting with page elements. The Chrome DevTools Protocol exposes APIs that allow tools to instrument, inspect, debug and profile the browser. Puppeteer uses this to provide convenient methods for automating browser actions and interacting with pages. Existing Selenium tests can leverage the DevTools Protocol by connecting to the browser instance controlled by ChromeDriver.

#thoughtworks#vodqa(bangalore)2018#drivechromewithpuppeteer
WebKit and Blink: Bridging the Gap Between the Kernel and the HTML5 Revolution
WebKit and Blink: Bridging the Gap Between the Kernel and the HTML5 RevolutionWebKit and Blink: Bridging the Gap Between the Kernel and the HTML5 Revolution
WebKit and Blink: Bridging the Gap Between the Kernel and the HTML5 Revolution

This document summarizes Juan J. Sánchez's presentation on WebKit and Blink. It discusses: 1) The history and goals of the WebKit project from 2004-2013, including its features, architecture, ports, and licenses. 2) The WebKit community, including types of contributors, tools used, and events held. 3) The creation of Blink in 2013 when Google forked WebKit, the motivations behind it, and its impact on the WebKit community. 4) The current status of WebKit and Blink projects and their future perspectives.

blinkchromiumlinuxcon
The Source Code in numbers

  According to Ohloh on 2012 April 29th, files per license:



    License     Files      %
 BSD License    4427    51.09 %
 GNU LGPL       3568    41.18 %
        MPL      607    7.01 %
   Other (9)      63    0.73 %
        Total   8665




                  https://www.ohloh.net/p/WebKit/analyses


  New WebKit code will always be under the terms of either the
  LGPL 2.1+ or the BSD license. Never GPL or LGPL 3.


                          The WebKit project   Juan J. Sánchez
High Level source code overview

     Source/: the code needed to build WebKit. That is,
     WebCore, JavaScriptCore, WebKit and WebKit2
     LayoutTests/: layout tests reside here (More than 27000!).
     They test the correctness of WebKit features
     ManualTests/: specific cases not covered by automatic
     testing
     PerformanceTests/: measure run-time performance and
     memory usage
     See webkit-perf.appspot.com for results
     Tools/: tools and utilities for WebKit development.
     Small test applications, tools for testing, helper scripts...
     Websites/: code and pages for WebKit related sites

                    The WebKit project   Juan J. Sánchez
Tracking ongoing work in WebKit


     Webkit is a big beast and a lot of organizations with
     different agendas are working in different parts:

         Implementing new standards (like the CSS shaders from
         Adobe, or CSS3 GCPM from Apple)
         Improvements in architecture, performance and internal
         code (WebKit2)

     On top of this there is the maintenance work (testing,
     continuous integration, bugfixing)
     Peter Beverloo (Google) reports are usually a good way to
     follow what has happened lately: http://peter.sh/




                   The WebKit project   Juan J. Sánchez
The community




 The WebKit project   Juan J. Sánchez

Recommended for you

Browser history and overview
Browser history and overviewBrowser history and overview
Browser history and overview
chromewebbrowser
Web browser architecture
Web browser architectureWeb browser architecture
Web browser architecture

The document discusses the main components of a web browser, including the user interface, browser engine, rendering engine, networking, JavaScript interpreter, UI backend, and data storage. It provides details on how different browsers use different rendering engines, such as Gecko, WebKit, Blink, and Trident. The rendering engine is responsible for parsing HTML and CSS to construct the DOM and render tree before layout, painting and displaying the web page.

safarijavascriptcorev8 engine
Mobile Browser Internal (Blink Rendering Engine)
Mobile Browser Internal (Blink Rendering Engine)Mobile Browser Internal (Blink Rendering Engine)
Mobile Browser Internal (Blink Rendering Engine)

This document discusses the Blink rendering engine used in Chromium and Chrome. It begins with an overview of web browser basics, including the rendering engine flow, DOM, CSS, parsing, and layout/rendering. It then covers the evolution from KHTML to WebKit to Blink. Key aspects of Blink covered include its multi-process architecture with separate browser and renderer processes, inter-process communication (IPC), multi-process resource loading, and the rendering path including software rendering, hardware acceleration using the GPU process, and threaded compositing.

blinkchromiumwebkit
A bit of history




      Source: http://ariya.ofilabs.com/2011/11/
      one-hundred-thousand-and-counting.html



                   The WebKit project   Juan J. Sánchez
The WebKit Project in numbers

  Commits per year (up to 2012 April 24th)




                    The WebKit project   Juan J. Sánchez
The WebKit Project in numbers

  Commits per month (2011):




                  The WebKit project   Juan J. Sánchez
The WebKit Project in numbers


  Commits per affiliations (2011)




                   The WebKit project   Juan J. Sánchez

Recommended for you

Guides To Analyzing WebKit Performance
Guides To Analyzing WebKit PerformanceGuides To Analyzing WebKit Performance
Guides To Analyzing WebKit Performance

This talk will be about approaching WebKit. Goals: (1) Show ways to approach the codebase. (2) Establish ''do not guess but measure'' attitude.

webkitv8android
Hardware Acceleration in WebKit
Hardware Acceleration in WebKitHardware Acceleration in WebKit
Hardware Acceleration in WebKit

Hardware Acceleration in WebKit provides concise summaries of key points: 1) WebKit uses various techniques like off-screen buffers, JIT compilation, and graphics acceleration to improve browsing performance. Graphics acceleration reduces CPU usage by offloading tasks like rendering to the GPU. 2) WebKit supports hardware acceleration of video playback and 2D canvas rendering through interfaces to video and graphics hardware. This allows smoother playback and animation. 3) Accelerated compositing in WebKit uses multiple tree structures integrated with the rendering process to take advantage of GPU acceleration for CSS3 effects, transitions, animations, and HTML5 video through interfaces like OpenCL.

gpuwebkitclutter
Chromium on Wayland Desktop (BlinkOn 7)
Chromium on Wayland Desktop (BlinkOn 7)Chromium on Wayland Desktop (BlinkOn 7)
Chromium on Wayland Desktop (BlinkOn 7)

Igalia is working on enabling Chromium to run natively on Wayland-based Linux systems by improving the Ozone/Wayland implementation. There are ongoing discussions around implementing external window mode in Ozone to allow Chromium windows to be separate from the host desktop, as well as splitting the UI and GPU components into separate processes as in ChromeOS. Igalia is focused on changing the Mus demo to support external window mode and getting Chromium to launch in this mode on Linux. Further work is also needed on desktop integration and using Mojo for inter-process communication in Ozone/Wayland.

waylandchromium
WebKit Contributors




  As of 2012 April 24th, we have in WebKit:
      Contributors: >370 people
      Committers: 212 people
      Reviewers: 110 people




                    The WebKit project   Juan J. Sánchez
Committers and Reviewers


  WebKit Committer
  A WebKit Committer should be a person we can trust to follow and
  understand the project policies about checkins and other matters.

         Has commit rights to the public SVN repository.



  WebKit Reviewer
  A WebKit Reviewer should be a person who has shown particularly
  good judgment, understanding of project policies, collaboration skills,
  and understanding of the code.

      A WebKit Committer who can review other’s patches.



                       The WebKit project   Juan J. Sánchez
Copyright for contributions




     There is no copyright transfer for the contributions
     Committers sign some papers where they commit to good
     behaviour




                   The WebKit project   Juan J. Sánchez
Releases




     There are no releases of WebKit itself
     Each port manages the release cycle, typically aligned with
     the target platform schedule




                   The WebKit project   Juan J. Sánchez

Recommended for you

Chromium vs. Firefox
Chromium vs. FirefoxChromium vs. Firefox
Chromium vs. Firefox

The document compares the architectures and features of the Firefox and Chromium web browsers. It outlines their reference architectures, functional requirements like user interfaces, media playback, and downloads management. It also discusses their non-functional requirements including security, performance, and extensibility. Finally, it provides a high-level comparison of their architectures and a deeper look at differences in their security models.

mozilla firefoxchromiumopen source
WebKit and GStreamer
WebKit and GStreamerWebKit and GStreamer
WebKit and GStreamer

These are the slides of my talk WebKit and GStreamer of the GStreamer Conference on 2013, cohosted with LinuxCon. The HTML5 version with its effects can be found at http://people.igalia.com/xrcalvar/talks/20131022-GstConf-WebKit

webkit gstreamer browsers multimedia
Architecture of the Web browser
Architecture of the Web browserArchitecture of the Web browser
Architecture of the Web browser

A presentation depicting the most important aspects regarding the internal architecture of a Web browser.

engineeringclientdevelopment
Coordination and communication tools

     Website: http://www.webkit.org/
       Port specific Websites (e.g. http://webkitgtk.org/)
     Wiki: http://trac.webkit.org/wiki
     Blogs: http://planet.webkit.org/
     Source Code:
         SVN: http://svn.webkit.org/repository/webkit
         Git mirror: git://git.webkit.org/WebKit.git

     Bugzilla: https://bugs.webkit.org/
     Buildbots: http://build.webkit.org/
     Mailing lists: http://lists.webkit.org/mailman/listinfo.cgi
     IRC (irc.freenode.net): #webkit and #webkitgtk+

                    The WebKit project   Juan J. Sánchez
The WebKit Contributors Meeting




     Meeting for contributors to the WebKit project
     Organized in an “unconference”-like format
     Extremely useful to advance on some topics:
     Implementation of new APIs, WebKit2, accelerated
     compositing, helper tools, QA infrastructure...
     Yearly held in Cupertino, California. Hosted by Apple




                   The WebKit project   Juan J. Sánchez
How to contribute




  The WebKit project   Juan J. Sánchez
Types of contributions




     Bugfixing and new features in:
         An existent port
         The core components: webcore and JSC/V8

     Creation and maintenance of a new port




                   The WebKit project   Juan J. Sánchez

Recommended for you

Android Chromium Rendering Pipeline
Android Chromium Rendering PipelineAndroid Chromium Rendering Pipeline
Android Chromium Rendering Pipeline

This document discusses the Android Chromium rendering pipeline. It covers topics like the critical rendering path in browsers, Chromium's multi-process architecture, and differences between Chrome, Chromium WebView, and the Android rendering model. The document also looks at how Chromium uses techniques like GPU acceleration, multi-threading, and layers to improve performance. Finally, it examines the current and future states of the Android WebView.

webviewchromium-powered android webviewchromium
KIẾN TRÚC CẬN ĐẠI
KIẾN TRÚC CẬN ĐẠIKIẾN TRÚC CẬN ĐẠI
KIẾN TRÚC CẬN ĐẠI

Lịch sử kiến trúc Phương Tây 2014

architecture
8A- Bioseguridad
8A- Bioseguridad8A- Bioseguridad
8A- Bioseguridad

El documento describe los conceptos y medidas relacionadas con la bioseguridad en el ámbito de la salud. Explica que los equipos de protección personal como guantes, mascarillas y protectores oculares son importantes para proteger al personal de salud de la exposición a riesgos biológicos. También describe los procedimientos de asepsia, antisepsia, limpieza, descontaminación, desinfección y esterilización para eliminar microorganismos. Resalta la importancia del lavado de manos como medida efectiva para reducir las in

Guidelines for contributing patches to WebKit

   1   Get and build the code from the SVN repository
   2   Choose or create a bug report to work on
   3   Code your changes and make sure you include new
       regression or unit tests if needed
   4   Create a patch for your changes and submit it asking for
       review over it to appropriate reviewers
   5   Update and change your patch as many times as needed
   6   Once approved, land your patch or ask a
       committer/reviewer to do it
   7   Watch for any regressions it might have caused


                     The WebKit project   Juan J. Sánchez
Creating a port: what needs to be done

     High level API (WebKit1 and WebKit2)
     Low level backend specific implementation
         Web Template Framework (WTF): memory management,
         threading, data structures (vectors, hash tables, bloom
         filters, ...) numerical support, etc.
         JSC vs V8
         Networking: HTTP, DNS, cookies, etc.
         Graphics: 2D/3D rendering, compositing, theming, fonts
         Multimedia: media player for audio and video tags
         DOM bindings
         Accessibility
         Smaller tasks: clipboard, popup and context menus,
         cursors, etc.

     Other things: favicons, plugins, downloads, geolocation,
     settings, navigation policies, etc.

                   The WebKit project   Juan J. Sánchez
Creating a port: the social side



      Difficult without full-time reviewers
      Reuse from other ports as much as possible
      Try to work upstream from the very beginning
      The risk of forking is big, the project moves fast
      Focus on testing and continuous integration
      Port-specific events and communication tools




                     The WebKit project   Juan J. Sánchez
Conclusions


     WebKit: an Open Source web engine powering lots of
     applications (not only browsers!) out there
     The only true Open Source alternative for embedders
     Clearly defined and modular architecture. Port friendly
     Complex and fast moving project
     Developed by a community of organizations and
     individuals with different interests, collaborating together
     Lots of contributors. Appropriate policies in place to
     handle permissions and responsibilities in the project




                   The WebKit project   Juan J. Sánchez

Recommended for you

Duomo di Milano - Arquitectura Gótica - IV CICLO - Sosa Castillo Carlo André
Duomo di Milano - Arquitectura Gótica - IV CICLO - Sosa Castillo Carlo AndréDuomo di Milano - Arquitectura Gótica - IV CICLO - Sosa Castillo Carlo André
Duomo di Milano - Arquitectura Gótica - IV CICLO - Sosa Castillo Carlo André

Trabajo para el curso Historia y Teoría de la Arquitectura II, analizando una obra del estilo arquitectónico gótico, lo que es el Duomo di Milano. Trabajo realizado por Carlo André Sosa Castillo, estudiante de Arquitectura, IV Ciclo, de la Universidad Alas Peruanas.

goticacatedraldi milano
Derecho civil de los bienes sesiones i, ii, iii
Derecho civil de los bienes sesiones i, ii, iiiDerecho civil de los bienes sesiones i, ii, iii
Derecho civil de los bienes sesiones i, ii, iii

Este documento presenta una introducción al derecho civil de los bienes. Define el patrimonio como el conjunto de derechos y obligaciones de una persona, y discute las teorías clásica y moderna sobre el patrimonio. Explica que los derechos patrimoniales son aquellos que tienen un valor económico y pueden recaer sobre cosas o actos de personas (obligaciones). Distingue entre derechos reales, que se ejercen directamente sobre las cosas, y derechos personales, que involucran obligaciones entre personas. Finalmente, clasifica los bienes en corporales

derechobienescivil
La corrupción en mexico
La corrupción en mexicoLa corrupción en mexico
La corrupción en mexico

El documento describe la corrupción en México a través de la historia, incluyendo sus definiciones, tipos, causas y consecuencias. Explica que la corrupción ha existido desde la colonización española y que actualmente involucra sobornos, peculados, tráfico de influencias y falta de ética entre servidores públicos. También analiza las causas formales, culturales y materiales de la corrupción, así como los esfuerzos para combatirla y ejemplos recientes de actos corruptos en México.

la carrupción
Thank you!
      Juan J. Sánchez
  jjsanchez@igalia.com




The WebKit project   Juan J. Sánchez

More Related Content

What's hot

Nodejs presentation
Nodejs presentationNodejs presentation
Nodejs presentation
Arvind Devaraj
 
Introduction to ReactJS
Introduction to ReactJSIntroduction to ReactJS
Introduction to ReactJS
Hoang Long
 
Understanding react hooks
Understanding react hooksUnderstanding react hooks
Understanding react hooks
Samundra khatri
 
Introduction to react_js
Introduction to react_jsIntroduction to react_js
Introduction to react_js
MicroPyramid .
 
jQuery Tutorial For Beginners | Developing User Interface (UI) Using jQuery |...
jQuery Tutorial For Beginners | Developing User Interface (UI) Using jQuery |...jQuery Tutorial For Beginners | Developing User Interface (UI) Using jQuery |...
jQuery Tutorial For Beginners | Developing User Interface (UI) Using jQuery |...
Edureka!
 
Node js introduction
Node js introductionNode js introduction
Node js introduction
Joseph de Castelnau
 
Introduction to React
Introduction to ReactIntroduction to React
Introduction to React
Rob Quick
 
Introduction to React JS
Introduction to React JSIntroduction to React JS
Introduction to React JS
Arno Lordkronos
 
Understanding Webkit Rendering
Understanding Webkit RenderingUnderstanding Webkit Rendering
Understanding Webkit Rendering
Ariya Hidayat
 
React hooks Episode #1: An introduction.
React hooks Episode #1: An introduction.React hooks Episode #1: An introduction.
React hooks Episode #1: An introduction.
ManojSatishKumar
 
Routing & Navigating Pages in Angular 2
Routing & Navigating Pages in Angular 2Routing & Navigating Pages in Angular 2
Routing & Navigating Pages in Angular 2
Knoldus Inc.
 
Jquery
JqueryJquery
Its time to React.js
Its time to React.jsIts time to React.js
Its time to React.js
Ritesh Mehrotra
 
Understanding react hooks
Understanding react hooksUnderstanding react hooks
Understanding react hooks
Maulik Shah
 
ReactJs
ReactJsReactJs
Angular Advanced Routing
Angular Advanced RoutingAngular Advanced Routing
Angular Advanced Routing
Laurent Duveau
 
jQuery PPT
jQuery PPTjQuery PPT
jQuery PPT
Dominic Arrojado
 
React workshop
React workshopReact workshop
React workshop
Imran Sayed
 
Learn react-js
Learn react-jsLearn react-js
Drive chrome(headless) with puppeteer
Drive chrome(headless) with puppeteerDrive chrome(headless) with puppeteer
Drive chrome(headless) with puppeteer
VodqaBLR
 

What's hot (20)

Nodejs presentation
Nodejs presentationNodejs presentation
Nodejs presentation
 
Introduction to ReactJS
Introduction to ReactJSIntroduction to ReactJS
Introduction to ReactJS
 
Understanding react hooks
Understanding react hooksUnderstanding react hooks
Understanding react hooks
 
Introduction to react_js
Introduction to react_jsIntroduction to react_js
Introduction to react_js
 
jQuery Tutorial For Beginners | Developing User Interface (UI) Using jQuery |...
jQuery Tutorial For Beginners | Developing User Interface (UI) Using jQuery |...jQuery Tutorial For Beginners | Developing User Interface (UI) Using jQuery |...
jQuery Tutorial For Beginners | Developing User Interface (UI) Using jQuery |...
 
Node js introduction
Node js introductionNode js introduction
Node js introduction
 
Introduction to React
Introduction to ReactIntroduction to React
Introduction to React
 
Introduction to React JS
Introduction to React JSIntroduction to React JS
Introduction to React JS
 
Understanding Webkit Rendering
Understanding Webkit RenderingUnderstanding Webkit Rendering
Understanding Webkit Rendering
 
React hooks Episode #1: An introduction.
React hooks Episode #1: An introduction.React hooks Episode #1: An introduction.
React hooks Episode #1: An introduction.
 
Routing & Navigating Pages in Angular 2
Routing & Navigating Pages in Angular 2Routing & Navigating Pages in Angular 2
Routing & Navigating Pages in Angular 2
 
Jquery
JqueryJquery
Jquery
 
Its time to React.js
Its time to React.jsIts time to React.js
Its time to React.js
 
Understanding react hooks
Understanding react hooksUnderstanding react hooks
Understanding react hooks
 
ReactJs
ReactJsReactJs
ReactJs
 
Angular Advanced Routing
Angular Advanced RoutingAngular Advanced Routing
Angular Advanced Routing
 
jQuery PPT
jQuery PPTjQuery PPT
jQuery PPT
 
React workshop
React workshopReact workshop
React workshop
 
Learn react-js
Learn react-jsLearn react-js
Learn react-js
 
Drive chrome(headless) with puppeteer
Drive chrome(headless) with puppeteerDrive chrome(headless) with puppeteer
Drive chrome(headless) with puppeteer
 

Viewers also liked

WebKit and Blink: Bridging the Gap Between the Kernel and the HTML5 Revolution
WebKit and Blink: Bridging the Gap Between the Kernel and the HTML5 RevolutionWebKit and Blink: Bridging the Gap Between the Kernel and the HTML5 Revolution
WebKit and Blink: Bridging the Gap Between the Kernel and the HTML5 Revolution
juanjosanchezpenas
 
Browser history and overview
Browser history and overviewBrowser history and overview
Browser history and overview
Young-Ho Cha
 
Web browser architecture
Web browser architectureWeb browser architecture
Web browser architecture
Nguyen Quang
 
Mobile Browser Internal (Blink Rendering Engine)
Mobile Browser Internal (Blink Rendering Engine)Mobile Browser Internal (Blink Rendering Engine)
Mobile Browser Internal (Blink Rendering Engine)
Hyungwook Lee
 
Guides To Analyzing WebKit Performance
Guides To Analyzing WebKit PerformanceGuides To Analyzing WebKit Performance
Guides To Analyzing WebKit Performance
National Cheng Kung University
 
Hardware Acceleration in WebKit
Hardware Acceleration in WebKitHardware Acceleration in WebKit
Hardware Acceleration in WebKit
Joone Hur
 
Chromium on Wayland Desktop (BlinkOn 7)
Chromium on Wayland Desktop (BlinkOn 7)Chromium on Wayland Desktop (BlinkOn 7)
Chromium on Wayland Desktop (BlinkOn 7)
Igalia
 
Chromium vs. Firefox
Chromium vs. FirefoxChromium vs. Firefox
Chromium vs. Firefox
Rashmika Nawaratne
 
WebKit and GStreamer
WebKit and GStreamerWebKit and GStreamer
WebKit and GStreamer
calvaris
 
Architecture of the Web browser
Architecture of the Web browserArchitecture of the Web browser
Architecture of the Web browser
Sabin Buraga
 
Android Chromium Rendering Pipeline
Android Chromium Rendering PipelineAndroid Chromium Rendering Pipeline
Android Chromium Rendering Pipeline
Hyungwook Lee
 
KIẾN TRÚC CẬN ĐẠI
KIẾN TRÚC CẬN ĐẠIKIẾN TRÚC CẬN ĐẠI
KIẾN TRÚC CẬN ĐẠI
luongthuykhe
 
8A- Bioseguridad
8A- Bioseguridad8A- Bioseguridad
8A- Bioseguridad
Tania Acevedo-Villar
 
Duomo di Milano - Arquitectura Gótica - IV CICLO - Sosa Castillo Carlo André
Duomo di Milano - Arquitectura Gótica - IV CICLO - Sosa Castillo Carlo AndréDuomo di Milano - Arquitectura Gótica - IV CICLO - Sosa Castillo Carlo André
Duomo di Milano - Arquitectura Gótica - IV CICLO - Sosa Castillo Carlo André
Carlo Andre Sosa Castillo
 
Derecho civil de los bienes sesiones i, ii, iii
Derecho civil de los bienes sesiones i, ii, iiiDerecho civil de los bienes sesiones i, ii, iii
Derecho civil de los bienes sesiones i, ii, iii
Elmer
 
La corrupción en mexico
La corrupción en mexicoLa corrupción en mexico
La corrupción en mexico
Alberto Neri
 
Recetas para principiantes
Recetas para principiantesRecetas para principiantes
Recetas para principiantes
Gallina Blanca
 
Exposicion Producto 3D
Exposicion Producto 3DExposicion Producto 3D
Exposicion Producto 3D
uinteramericana
 
A apologia de sócrates
A apologia de sócratesA apologia de sócrates
A apologia de sócrates
Luci Bonini
 
World Quality Report 2013 14
World Quality Report 2013 14World Quality Report 2013 14
World Quality Report 2013 14
Capgemini
 

Viewers also liked (20)

WebKit and Blink: Bridging the Gap Between the Kernel and the HTML5 Revolution
WebKit and Blink: Bridging the Gap Between the Kernel and the HTML5 RevolutionWebKit and Blink: Bridging the Gap Between the Kernel and the HTML5 Revolution
WebKit and Blink: Bridging the Gap Between the Kernel and the HTML5 Revolution
 
Browser history and overview
Browser history and overviewBrowser history and overview
Browser history and overview
 
Web browser architecture
Web browser architectureWeb browser architecture
Web browser architecture
 
Mobile Browser Internal (Blink Rendering Engine)
Mobile Browser Internal (Blink Rendering Engine)Mobile Browser Internal (Blink Rendering Engine)
Mobile Browser Internal (Blink Rendering Engine)
 
Guides To Analyzing WebKit Performance
Guides To Analyzing WebKit PerformanceGuides To Analyzing WebKit Performance
Guides To Analyzing WebKit Performance
 
Hardware Acceleration in WebKit
Hardware Acceleration in WebKitHardware Acceleration in WebKit
Hardware Acceleration in WebKit
 
Chromium on Wayland Desktop (BlinkOn 7)
Chromium on Wayland Desktop (BlinkOn 7)Chromium on Wayland Desktop (BlinkOn 7)
Chromium on Wayland Desktop (BlinkOn 7)
 
Chromium vs. Firefox
Chromium vs. FirefoxChromium vs. Firefox
Chromium vs. Firefox
 
WebKit and GStreamer
WebKit and GStreamerWebKit and GStreamer
WebKit and GStreamer
 
Architecture of the Web browser
Architecture of the Web browserArchitecture of the Web browser
Architecture of the Web browser
 
Android Chromium Rendering Pipeline
Android Chromium Rendering PipelineAndroid Chromium Rendering Pipeline
Android Chromium Rendering Pipeline
 
KIẾN TRÚC CẬN ĐẠI
KIẾN TRÚC CẬN ĐẠIKIẾN TRÚC CẬN ĐẠI
KIẾN TRÚC CẬN ĐẠI
 
8A- Bioseguridad
8A- Bioseguridad8A- Bioseguridad
8A- Bioseguridad
 
Duomo di Milano - Arquitectura Gótica - IV CICLO - Sosa Castillo Carlo André
Duomo di Milano - Arquitectura Gótica - IV CICLO - Sosa Castillo Carlo AndréDuomo di Milano - Arquitectura Gótica - IV CICLO - Sosa Castillo Carlo André
Duomo di Milano - Arquitectura Gótica - IV CICLO - Sosa Castillo Carlo André
 
Derecho civil de los bienes sesiones i, ii, iii
Derecho civil de los bienes sesiones i, ii, iiiDerecho civil de los bienes sesiones i, ii, iii
Derecho civil de los bienes sesiones i, ii, iii
 
La corrupción en mexico
La corrupción en mexicoLa corrupción en mexico
La corrupción en mexico
 
Recetas para principiantes
Recetas para principiantesRecetas para principiantes
Recetas para principiantes
 
Exposicion Producto 3D
Exposicion Producto 3DExposicion Producto 3D
Exposicion Producto 3D
 
A apologia de sócrates
A apologia de sócratesA apologia de sócrates
A apologia de sócrates
 
World Quality Report 2013 14
World Quality Report 2013 14World Quality Report 2013 14
World Quality Report 2013 14
 

Similar to The WebKit project

The WebKit project (LinuxCon North America 2012)
The WebKit project (LinuxCon North America 2012)The WebKit project (LinuxCon North America 2012)
The WebKit project (LinuxCon North America 2012)
Igalia
 
WebKit and Blink: Bridging the Gap Between the Kernel and the HTML5 Revolutio...
WebKit and Blink: Bridging the Gap Between the Kernel and the HTML5 Revolutio...WebKit and Blink: Bridging the Gap Between the Kernel and the HTML5 Revolutio...
WebKit and Blink: Bridging the Gap Between the Kernel and the HTML5 Revolutio...
Igalia
 
WebKit and Blink: open development powering the HTML5 revolution
WebKit and Blink: open development powering the HTML5 revolutionWebKit and Blink: open development powering the HTML5 revolution
WebKit and Blink: open development powering the HTML5 revolution
juanjosanchezpenas
 
WebKit and Blink: Open Development Powering the HTML5 Revolution (LinuxCon No...
WebKit and Blink: Open Development Powering the HTML5 Revolution (LinuxCon No...WebKit and Blink: Open Development Powering the HTML5 Revolution (LinuxCon No...
WebKit and Blink: Open Development Powering the HTML5 Revolution (LinuxCon No...
Igalia
 
Add the power of the Web to your embedded devices with WPE WebKit
Add the power of the Web to your embedded devices with WPE WebKitAdd the power of the Web to your embedded devices with WPE WebKit
Add the power of the Web to your embedded devices with WPE WebKit
Igalia
 
Building a Browser for Automotive: Alternatives, Challenges and Recommendations
Building a Browser for Automotive: Alternatives, Challenges and RecommendationsBuilding a Browser for Automotive: Alternatives, Challenges and Recommendations
Building a Browser for Automotive: Alternatives, Challenges and Recommendations
juanjosanchezpenas
 
Building a browser for automotive. alternatives, challenges and recommendatio...
Building a browser for automotive. alternatives, challenges and recommendatio...Building a browser for automotive. alternatives, challenges and recommendatio...
Building a browser for automotive. alternatives, challenges and recommendatio...
Igalia
 
DIY: Computer Vision with GWT.
DIY: Computer Vision with GWT.DIY: Computer Vision with GWT.
DIY: Computer Vision with GWT.
JooinK
 
DIY- computer vision with GWT
DIY- computer vision with GWTDIY- computer vision with GWT
DIY- computer vision with GWT
Francesca Tosi
 
Igalia and WebKit: Status update and plans
Igalia and WebKit: Status update and plansIgalia and WebKit: Status update and plans
Igalia and WebKit: Status update and plans
Igalia
 
WebKit2 And You (GUADEC 2013)
WebKit2 And You (GUADEC 2013)WebKit2 And You (GUADEC 2013)
WebKit2 And You (GUADEC 2013)
Igalia
 
Browsers and Web Runtimes for Automotive: Alternatives, Challenges, and Curre...
Browsers and Web Runtimes for Automotive: Alternatives, Challenges, and Curre...Browsers and Web Runtimes for Automotive: Alternatives, Challenges, and Curre...
Browsers and Web Runtimes for Automotive: Alternatives, Challenges, and Curre...
Igalia
 
Next Generation Hybrid Applications with Qt - presentation for SEE 2009
Next Generation Hybrid Applications with Qt - presentation for SEE 2009Next Generation Hybrid Applications with Qt - presentation for SEE 2009
Next Generation Hybrid Applications with Qt - presentation for SEE 2009
Nokia
 
The Web, After HTML5
The Web, After HTML5The Web, After HTML5
The Web, After HTML5
Jonathan Jeon
 
Developments in the Qt WebKit Integration
Developments in the Qt WebKit IntegrationDevelopments in the Qt WebKit Integration
Developments in the Qt WebKit Integration
account inactive
 
Hybrid Apps (Native + Web) using WebKit
Hybrid Apps (Native + Web) using WebKitHybrid Apps (Native + Web) using WebKit
Hybrid Apps (Native + Web) using WebKit
Ariya Hidayat
 
Hybrid Apps (Native + Web) using WebKit
Hybrid Apps (Native + Web) using WebKitHybrid Apps (Native + Web) using WebKit
Hybrid Apps (Native + Web) using WebKit
Ariya Hidayat
 
JooinK - DevFest Piemonte 2013
JooinK - DevFest Piemonte 2013JooinK - DevFest Piemonte 2013
JooinK - DevFest Piemonte 2013
JooinK
 
Gwt 2,3 Deep dive
Gwt 2,3 Deep diveGwt 2,3 Deep dive
Gwt 2,3 Deep dive
Return on Intelligence
 
Gwt Deep Dive
Gwt Deep DiveGwt Deep Dive
Gwt Deep Dive
Return on Intelligence
 

Similar to The WebKit project (20)

The WebKit project (LinuxCon North America 2012)
The WebKit project (LinuxCon North America 2012)The WebKit project (LinuxCon North America 2012)
The WebKit project (LinuxCon North America 2012)
 
WebKit and Blink: Bridging the Gap Between the Kernel and the HTML5 Revolutio...
WebKit and Blink: Bridging the Gap Between the Kernel and the HTML5 Revolutio...WebKit and Blink: Bridging the Gap Between the Kernel and the HTML5 Revolutio...
WebKit and Blink: Bridging the Gap Between the Kernel and the HTML5 Revolutio...
 
WebKit and Blink: open development powering the HTML5 revolution
WebKit and Blink: open development powering the HTML5 revolutionWebKit and Blink: open development powering the HTML5 revolution
WebKit and Blink: open development powering the HTML5 revolution
 
WebKit and Blink: Open Development Powering the HTML5 Revolution (LinuxCon No...
WebKit and Blink: Open Development Powering the HTML5 Revolution (LinuxCon No...WebKit and Blink: Open Development Powering the HTML5 Revolution (LinuxCon No...
WebKit and Blink: Open Development Powering the HTML5 Revolution (LinuxCon No...
 
Add the power of the Web to your embedded devices with WPE WebKit
Add the power of the Web to your embedded devices with WPE WebKitAdd the power of the Web to your embedded devices with WPE WebKit
Add the power of the Web to your embedded devices with WPE WebKit
 
Building a Browser for Automotive: Alternatives, Challenges and Recommendations
Building a Browser for Automotive: Alternatives, Challenges and RecommendationsBuilding a Browser for Automotive: Alternatives, Challenges and Recommendations
Building a Browser for Automotive: Alternatives, Challenges and Recommendations
 
Building a browser for automotive. alternatives, challenges and recommendatio...
Building a browser for automotive. alternatives, challenges and recommendatio...Building a browser for automotive. alternatives, challenges and recommendatio...
Building a browser for automotive. alternatives, challenges and recommendatio...
 
DIY: Computer Vision with GWT.
DIY: Computer Vision with GWT.DIY: Computer Vision with GWT.
DIY: Computer Vision with GWT.
 
DIY- computer vision with GWT
DIY- computer vision with GWTDIY- computer vision with GWT
DIY- computer vision with GWT
 
Igalia and WebKit: Status update and plans
Igalia and WebKit: Status update and plansIgalia and WebKit: Status update and plans
Igalia and WebKit: Status update and plans
 
WebKit2 And You (GUADEC 2013)
WebKit2 And You (GUADEC 2013)WebKit2 And You (GUADEC 2013)
WebKit2 And You (GUADEC 2013)
 
Browsers and Web Runtimes for Automotive: Alternatives, Challenges, and Curre...
Browsers and Web Runtimes for Automotive: Alternatives, Challenges, and Curre...Browsers and Web Runtimes for Automotive: Alternatives, Challenges, and Curre...
Browsers and Web Runtimes for Automotive: Alternatives, Challenges, and Curre...
 
Next Generation Hybrid Applications with Qt - presentation for SEE 2009
Next Generation Hybrid Applications with Qt - presentation for SEE 2009Next Generation Hybrid Applications with Qt - presentation for SEE 2009
Next Generation Hybrid Applications with Qt - presentation for SEE 2009
 
The Web, After HTML5
The Web, After HTML5The Web, After HTML5
The Web, After HTML5
 
Developments in the Qt WebKit Integration
Developments in the Qt WebKit IntegrationDevelopments in the Qt WebKit Integration
Developments in the Qt WebKit Integration
 
Hybrid Apps (Native + Web) using WebKit
Hybrid Apps (Native + Web) using WebKitHybrid Apps (Native + Web) using WebKit
Hybrid Apps (Native + Web) using WebKit
 
Hybrid Apps (Native + Web) using WebKit
Hybrid Apps (Native + Web) using WebKitHybrid Apps (Native + Web) using WebKit
Hybrid Apps (Native + Web) using WebKit
 
JooinK - DevFest Piemonte 2013
JooinK - DevFest Piemonte 2013JooinK - DevFest Piemonte 2013
JooinK - DevFest Piemonte 2013
 
Gwt 2,3 Deep dive
Gwt 2,3 Deep diveGwt 2,3 Deep dive
Gwt 2,3 Deep dive
 
Gwt Deep Dive
Gwt Deep DiveGwt Deep Dive
Gwt Deep Dive
 

Recently uploaded

20240702 QFM021 Machine Intelligence Reading List June 2024
20240702 QFM021 Machine Intelligence Reading List June 202420240702 QFM021 Machine Intelligence Reading List June 2024
20240702 QFM021 Machine Intelligence Reading List June 2024
Matthew Sinclair
 
BLOCKCHAIN FOR DUMMIES: GUIDEBOOK FOR ALL
BLOCKCHAIN FOR DUMMIES: GUIDEBOOK FOR ALLBLOCKCHAIN FOR DUMMIES: GUIDEBOOK FOR ALL
BLOCKCHAIN FOR DUMMIES: GUIDEBOOK FOR ALL
Liveplex
 
WPRiders Company Presentation Slide Deck
WPRiders Company Presentation Slide DeckWPRiders Company Presentation Slide Deck
WPRiders Company Presentation Slide Deck
Lidia A.
 
Advanced Techniques for Cyber Security Analysis and Anomaly Detection
Advanced Techniques for Cyber Security Analysis and Anomaly DetectionAdvanced Techniques for Cyber Security Analysis and Anomaly Detection
Advanced Techniques for Cyber Security Analysis and Anomaly Detection
Bert Blevins
 
Quantum Communications Q&A with Gemini LLM
Quantum Communications Q&A with Gemini LLMQuantum Communications Q&A with Gemini LLM
Quantum Communications Q&A with Gemini LLM
Vijayananda Mohire
 
Choose our Linux Web Hosting for a seamless and successful online presence
Choose our Linux Web Hosting for a seamless and successful online presenceChoose our Linux Web Hosting for a seamless and successful online presence
Choose our Linux Web Hosting for a seamless and successful online presence
rajancomputerfbd
 
7 Most Powerful Solar Storms in the History of Earth.pdf
7 Most Powerful Solar Storms in the History of Earth.pdf7 Most Powerful Solar Storms in the History of Earth.pdf
7 Most Powerful Solar Storms in the History of Earth.pdf
Enterprise Wired
 
Paradigm Shifts in User Modeling: A Journey from Historical Foundations to Em...
Paradigm Shifts in User Modeling: A Journey from Historical Foundations to Em...Paradigm Shifts in User Modeling: A Journey from Historical Foundations to Em...
Paradigm Shifts in User Modeling: A Journey from Historical Foundations to Em...
Erasmo Purificato
 
Research Directions for Cross Reality Interfaces
Research Directions for Cross Reality InterfacesResearch Directions for Cross Reality Interfaces
Research Directions for Cross Reality Interfaces
Mark Billinghurst
 
Comparison Table of DiskWarrior Alternatives.pdf
Comparison Table of DiskWarrior Alternatives.pdfComparison Table of DiskWarrior Alternatives.pdf
Comparison Table of DiskWarrior Alternatives.pdf
Andrey Yasko
 
Understanding Insider Security Threats: Types, Examples, Effects, and Mitigat...
Understanding Insider Security Threats: Types, Examples, Effects, and Mitigat...Understanding Insider Security Threats: Types, Examples, Effects, and Mitigat...
Understanding Insider Security Threats: Types, Examples, Effects, and Mitigat...
Bert Blevins
 
DealBook of Ukraine: 2024 edition
DealBook of Ukraine: 2024 editionDealBook of Ukraine: 2024 edition
DealBook of Ukraine: 2024 edition
Yevgen Sysoyev
 
The Increasing Use of the National Research Platform by the CSU Campuses
The Increasing Use of the National Research Platform by the CSU CampusesThe Increasing Use of the National Research Platform by the CSU Campuses
The Increasing Use of the National Research Platform by the CSU Campuses
Larry Smarr
 
How Social Media Hackers Help You to See Your Wife's Message.pdf
How Social Media Hackers Help You to See Your Wife's Message.pdfHow Social Media Hackers Help You to See Your Wife's Message.pdf
How Social Media Hackers Help You to See Your Wife's Message.pdf
HackersList
 
20240705 QFM024 Irresponsible AI Reading List June 2024
20240705 QFM024 Irresponsible AI Reading List June 202420240705 QFM024 Irresponsible AI Reading List June 2024
20240705 QFM024 Irresponsible AI Reading List June 2024
Matthew Sinclair
 
20240702 Présentation Plateforme GenAI.pdf
20240702 Présentation Plateforme GenAI.pdf20240702 Présentation Plateforme GenAI.pdf
20240702 Présentation Plateforme GenAI.pdf
Sally Laouacheria
 
Best Practices for Effectively Running dbt in Airflow.pdf
Best Practices for Effectively Running dbt in Airflow.pdfBest Practices for Effectively Running dbt in Airflow.pdf
Best Practices for Effectively Running dbt in Airflow.pdf
Tatiana Al-Chueyr
 
UiPath Community Day Kraków: Devs4Devs Conference
UiPath Community Day Kraków: Devs4Devs ConferenceUiPath Community Day Kraków: Devs4Devs Conference
UiPath Community Day Kraków: Devs4Devs Conference
UiPathCommunity
 
BT & Neo4j: Knowledge Graphs for Critical Enterprise Systems.pptx.pdf
BT & Neo4j: Knowledge Graphs for Critical Enterprise Systems.pptx.pdfBT & Neo4j: Knowledge Graphs for Critical Enterprise Systems.pptx.pdf
BT & Neo4j: Knowledge Graphs for Critical Enterprise Systems.pptx.pdf
Neo4j
 
What's New in Copilot for Microsoft365 May 2024.pptx
What's New in Copilot for Microsoft365 May 2024.pptxWhat's New in Copilot for Microsoft365 May 2024.pptx
What's New in Copilot for Microsoft365 May 2024.pptx
Stephanie Beckett
 

Recently uploaded (20)

20240702 QFM021 Machine Intelligence Reading List June 2024
20240702 QFM021 Machine Intelligence Reading List June 202420240702 QFM021 Machine Intelligence Reading List June 2024
20240702 QFM021 Machine Intelligence Reading List June 2024
 
BLOCKCHAIN FOR DUMMIES: GUIDEBOOK FOR ALL
BLOCKCHAIN FOR DUMMIES: GUIDEBOOK FOR ALLBLOCKCHAIN FOR DUMMIES: GUIDEBOOK FOR ALL
BLOCKCHAIN FOR DUMMIES: GUIDEBOOK FOR ALL
 
WPRiders Company Presentation Slide Deck
WPRiders Company Presentation Slide DeckWPRiders Company Presentation Slide Deck
WPRiders Company Presentation Slide Deck
 
Advanced Techniques for Cyber Security Analysis and Anomaly Detection
Advanced Techniques for Cyber Security Analysis and Anomaly DetectionAdvanced Techniques for Cyber Security Analysis and Anomaly Detection
Advanced Techniques for Cyber Security Analysis and Anomaly Detection
 
Quantum Communications Q&A with Gemini LLM
Quantum Communications Q&A with Gemini LLMQuantum Communications Q&A with Gemini LLM
Quantum Communications Q&A with Gemini LLM
 
Choose our Linux Web Hosting for a seamless and successful online presence
Choose our Linux Web Hosting for a seamless and successful online presenceChoose our Linux Web Hosting for a seamless and successful online presence
Choose our Linux Web Hosting for a seamless and successful online presence
 
7 Most Powerful Solar Storms in the History of Earth.pdf
7 Most Powerful Solar Storms in the History of Earth.pdf7 Most Powerful Solar Storms in the History of Earth.pdf
7 Most Powerful Solar Storms in the History of Earth.pdf
 
Paradigm Shifts in User Modeling: A Journey from Historical Foundations to Em...
Paradigm Shifts in User Modeling: A Journey from Historical Foundations to Em...Paradigm Shifts in User Modeling: A Journey from Historical Foundations to Em...
Paradigm Shifts in User Modeling: A Journey from Historical Foundations to Em...
 
Research Directions for Cross Reality Interfaces
Research Directions for Cross Reality InterfacesResearch Directions for Cross Reality Interfaces
Research Directions for Cross Reality Interfaces
 
Comparison Table of DiskWarrior Alternatives.pdf
Comparison Table of DiskWarrior Alternatives.pdfComparison Table of DiskWarrior Alternatives.pdf
Comparison Table of DiskWarrior Alternatives.pdf
 
Understanding Insider Security Threats: Types, Examples, Effects, and Mitigat...
Understanding Insider Security Threats: Types, Examples, Effects, and Mitigat...Understanding Insider Security Threats: Types, Examples, Effects, and Mitigat...
Understanding Insider Security Threats: Types, Examples, Effects, and Mitigat...
 
DealBook of Ukraine: 2024 edition
DealBook of Ukraine: 2024 editionDealBook of Ukraine: 2024 edition
DealBook of Ukraine: 2024 edition
 
The Increasing Use of the National Research Platform by the CSU Campuses
The Increasing Use of the National Research Platform by the CSU CampusesThe Increasing Use of the National Research Platform by the CSU Campuses
The Increasing Use of the National Research Platform by the CSU Campuses
 
How Social Media Hackers Help You to See Your Wife's Message.pdf
How Social Media Hackers Help You to See Your Wife's Message.pdfHow Social Media Hackers Help You to See Your Wife's Message.pdf
How Social Media Hackers Help You to See Your Wife's Message.pdf
 
20240705 QFM024 Irresponsible AI Reading List June 2024
20240705 QFM024 Irresponsible AI Reading List June 202420240705 QFM024 Irresponsible AI Reading List June 2024
20240705 QFM024 Irresponsible AI Reading List June 2024
 
20240702 Présentation Plateforme GenAI.pdf
20240702 Présentation Plateforme GenAI.pdf20240702 Présentation Plateforme GenAI.pdf
20240702 Présentation Plateforme GenAI.pdf
 
Best Practices for Effectively Running dbt in Airflow.pdf
Best Practices for Effectively Running dbt in Airflow.pdfBest Practices for Effectively Running dbt in Airflow.pdf
Best Practices for Effectively Running dbt in Airflow.pdf
 
UiPath Community Day Kraków: Devs4Devs Conference
UiPath Community Day Kraków: Devs4Devs ConferenceUiPath Community Day Kraków: Devs4Devs Conference
UiPath Community Day Kraków: Devs4Devs Conference
 
BT & Neo4j: Knowledge Graphs for Critical Enterprise Systems.pptx.pdf
BT & Neo4j: Knowledge Graphs for Critical Enterprise Systems.pptx.pdfBT & Neo4j: Knowledge Graphs for Critical Enterprise Systems.pptx.pdf
BT & Neo4j: Knowledge Graphs for Critical Enterprise Systems.pptx.pdf
 
What's New in Copilot for Microsoft365 May 2024.pptx
What's New in Copilot for Microsoft365 May 2024.pptxWhat's New in Copilot for Microsoft365 May 2024.pptx
What's New in Copilot for Microsoft365 May 2024.pptx
 

The WebKit project

  • 1. The WebKit project Juan J. Sánchez LinuxCon 2012, San Diego
  • 2. Myself, Igalia and WebKit Co-founder of the company, member of the WebKit/Browsers team Igalia is an open source consultancy founded in 2001 Igalia is the main contributor to upstream WebKit after Google and Apple We work with some of the main IT industry actors integrating different WebKit solutions in their frameworks The WebKit project Juan J. Sánchez
  • 3. Outline The technology: goals, features, architecture, code structure, ports, webkit2, ongoing work The community: contributors, committers, reviewers, tools, events How to contribute: bugfixing, features, new ports The WebKit project Juan J. Sánchez
  • 4. The technology The WebKit project Juan J. Sánchez
  • 5. The WebKit project Web browser engine (HTML, JavaScript, CSS...) The engine is the product Started as a fork of KHTML and KJS in 2001 Open Source since 2005 Among other things, it’s useful for: Web browsers Using web technologies for UI development The WebKit project Juan J. Sánchez
  • 6. Goals of the project Web Content Engine: HTML, CSS, JavaScript, DOM Open Source: BSD-style and LGPL licenses Compatibility: regression testing Standards Compliance Stability Performance Security Portability: desktop, mobile, embedded... Usability Hackability The WebKit project Juan J. Sánchez
  • 7. Goals of the project NON-goals: “It’s an engine, not a browser” “It’s an engineering project not a science project” “It’s not a bundle of maximally general and reusable code” “It’s not the solution to every problem” http://www.webkit.org/projects/goals.html The WebKit project Juan J. Sánchez
  • 8. WebKit features HTML and XML support JavaScript support (ECMAScript 5.1, ES6 in progress) CSS 2.1, CSS 3 support. Working drafts also SVG support Support for Plugins (NPAPI, WebKit Plugins) HTML5 support: multimedia, 3D graphics, advanced CSS animations and transformations, drag’n’drop, offline & local storage, connectivity... Accessibility support Q&A infrastructure: review process, continuous integration, 30.000 regression tests, API tests... Passing ACID3 with 100/100 tests since March 2008 The WebKit project Juan J. Sánchez
  • 9. WebKit Architecture From a simplified point of view, WebKit is structured this way: WebKit: thin layer to link against from the applications WebCore: rendering, layout, network access, multimedia, accessibility support... JS Engine: the JavaScript engine. JavaScriptCore by default, but can be replaced (e.g. V8 in Chromium) platform: platform-specific hooks to implement generic algorithms The WebKit project Juan J. Sánchez
  • 10. What is a WebKit port? The WebKit project Juan J. Sánchez
  • 11. How many WebKit ports are there? WebKit is currently available for different platforms: GTK+ based platforms (GNOME) Qt based platforms (KDE, Meego) Mac OS X, iOS Google Chromium / Chrome Enlightenment Foundation Libraries (EFL) Symbian devices (S60) Adobe Integrated Runtime (Adobe AIR) BlackBerry WebOS Brew MP Win32 (Windows CE) wxWidgets The WebKit project Juan J. Sánchez
  • 12. Some WebKit based browsers Amazon Kindle PS3 web browser Arora RockMelt BOLT browser Safari Epiphany browser SRWare Iron Google Chrome Shiira iCab (version >= 4) Sputnik for MorphOS Iris Browser Stainless Konqueror Steel for Android Midori TeaShark Nintendo 3DS Uzbl OWB Web Browser for S60 (Nokia) OmniWeb WebOS Browser The WebKit project Juan J. Sánchez
  • 13. Architecture of a WebKit port The WebKit project Juan J. Sánchez
  • 14. Architecture of a WebKit port The WebKit project Juan J. Sánchez
  • 15. How do we use a WebKit port? The WebView widget: A platform-specific widget that renders web content. It’s the main component and it’s useful for: Loading URIs or data buffers pointing to HTML content Go fullscreen, text/text+image zooming... Navigate back and forward through history... Events handling: Allows embedders to get notified when something important happens or when some input is needed. Some examples of these events: Getting notified when a load finished or failed Asking permission for navigating to an URI Requesting authorization for something.. The WebKit project Juan J. Sánchez
  • 16. A minibrowser written in Python #!/usr/bin/env python # -*- coding: utf-8 -*- import gtk import webkit def entry_activated_cb(entry, embed): embed.load_uri(entry.get_text()) # Widgets and signals window = gtk.Window() window.set_default_size(800, 600) window.set_title("Mini browser written in Python") embed = webkit.WebView(); # WebKit embed entry = gtk.Entry() entry.connect(’activate’, entry_activated_cb, embed) scroller = gtk.ScrolledWindow() scroller.add(embed) # Pack everything up and show vbox = gtk.VBox(False, 5) vbox.pack_start(entry, False, False) vbox.pack_start(scroller) window.add(vbox) window.show_all() # Load a default URI and run embed.load_uri("http://www.webkit.org") gtk.main() The WebKit project Juan J. Sánchez
  • 17. A minibrowser written in Python The WebKit project Juan J. Sánchez
  • 18. A minibrowser written in C #include <webkit/webkit.h> static void entry_activated (GtkEntry *entry, WebKitWebView *embed) { webkit_web_view_load_uri (embed, gtk_entry_get_text (entry)); } int main (int argc, char** argv) { gtk_init (&argc, &argv); /* Widgets and signals */ GtkWidget *window = gtk_window_new (GTK_WINDOW_TOPLEVEL); gtk_window_set_default_size (GTK_WINDOW (window), 800, 600); gtk_window_set_title (GTK_WINDOW (window), "Mini browser written in C"); GtkWidget *embed = webkit_web_view_new(); GtkWidget *entry = gtk_entry_new(); g_signal_connect (entry, "activate", G_CALLBACK (entry_activated), embed); GtkWidget *scroller = gtk_scrolled_window_new(NULL, NULL); gtk_container_add (GTK_CONTAINER(scroller), embed); /* Pack everything and show */ GtkWidget *vbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, 0); gtk_box_pack_start (GTK_BOX(vbox), entry, FALSE, FALSE, 0); gtk_box_pack_start (GTK_BOX(vbox), scroller, TRUE, TRUE, 0); gtk_container_add (GTK_CONTAINER(window), vbox); gtk_widget_show_all (window); /* Load a default URI and run */ webkit_web_view_load_uri (WEBKIT_WEB_VIEW (embed), "http://www.webkit.org"); gtk_main(); return 0; } The WebKit project Juan J. Sánchez
  • 19. A minibrowser written in C The WebKit project Juan J. Sánchez
  • 20. What is WebKit2? New API layer designed to support a split process model. Different to Chromium’s multi-process implementation It’s bundled in the framework (reusable) Different processes take care of different tasks: UI process: the WebView widget, application UI Web process: loading, parsing, rendering, layout... Plugin process: each plugin type in a process It comes with Inter-Process Communication (IPC) mechanisms to communicate those processes bundled-in http://trac.webkit.org/wiki/WebKit2 The WebKit project Juan J. Sánchez
  • 21. WebKit VS WebKit2 The WebKit project Juan J. Sánchez
  • 22. WebKit2 VS Chromium The WebKit project Juan J. Sánchez
  • 23. WebKit2: current status Apple and Qt already released WebKit2 browsers WebKit2 stable API for the GTK+ port released, browser released soon Cross-platform and non-blocking C API available Most challenges of the split process model solved Tests running, need to deploy more test bots Still not considered “production quality”. Getting there The WebKit project Juan J. Sánchez
  • 24. The Source Code in numbers According to Ohloh on 2012 April 29th, lines of code per language, without considering blank lines nor comments: Language LoC % HTML 1404469 33.79 % C++ 1268231 30.51 % JavaScript 692274 16.65 % XML 254224 6.12 % Objective-C 101658 2.45 % PHP 97114 2.34 % Python 82366 1.98 % Perl 75677 1.82 % CSS 73587 1.77 % C 68469 1.65 % Other (19) 38820 0.93 % Total 4156889 https://www.ohloh.net/p/WebKit/analyses Just considering C++, Objective-C and C files, we have almost 1.5M LoC! The WebKit project Juan J. Sánchez
  • 25. The Source Code in numbers According to Ohloh on 2012 April 29th, files per license: License Files % BSD License 4427 51.09 % GNU LGPL 3568 41.18 % MPL 607 7.01 % Other (9) 63 0.73 % Total 8665 https://www.ohloh.net/p/WebKit/analyses New WebKit code will always be under the terms of either the LGPL 2.1+ or the BSD license. Never GPL or LGPL 3. The WebKit project Juan J. Sánchez
  • 26. High Level source code overview Source/: the code needed to build WebKit. That is, WebCore, JavaScriptCore, WebKit and WebKit2 LayoutTests/: layout tests reside here (More than 27000!). They test the correctness of WebKit features ManualTests/: specific cases not covered by automatic testing PerformanceTests/: measure run-time performance and memory usage See webkit-perf.appspot.com for results Tools/: tools and utilities for WebKit development. Small test applications, tools for testing, helper scripts... Websites/: code and pages for WebKit related sites The WebKit project Juan J. Sánchez
  • 27. Tracking ongoing work in WebKit Webkit is a big beast and a lot of organizations with different agendas are working in different parts: Implementing new standards (like the CSS shaders from Adobe, or CSS3 GCPM from Apple) Improvements in architecture, performance and internal code (WebKit2) On top of this there is the maintenance work (testing, continuous integration, bugfixing) Peter Beverloo (Google) reports are usually a good way to follow what has happened lately: http://peter.sh/ The WebKit project Juan J. Sánchez
  • 28. The community The WebKit project Juan J. Sánchez
  • 29. A bit of history Source: http://ariya.ofilabs.com/2011/11/ one-hundred-thousand-and-counting.html The WebKit project Juan J. Sánchez
  • 30. The WebKit Project in numbers Commits per year (up to 2012 April 24th) The WebKit project Juan J. Sánchez
  • 31. The WebKit Project in numbers Commits per month (2011): The WebKit project Juan J. Sánchez
  • 32. The WebKit Project in numbers Commits per affiliations (2011) The WebKit project Juan J. Sánchez
  • 33. WebKit Contributors As of 2012 April 24th, we have in WebKit: Contributors: >370 people Committers: 212 people Reviewers: 110 people The WebKit project Juan J. Sánchez
  • 34. Committers and Reviewers WebKit Committer A WebKit Committer should be a person we can trust to follow and understand the project policies about checkins and other matters. Has commit rights to the public SVN repository. WebKit Reviewer A WebKit Reviewer should be a person who has shown particularly good judgment, understanding of project policies, collaboration skills, and understanding of the code. A WebKit Committer who can review other’s patches. The WebKit project Juan J. Sánchez
  • 35. Copyright for contributions There is no copyright transfer for the contributions Committers sign some papers where they commit to good behaviour The WebKit project Juan J. Sánchez
  • 36. Releases There are no releases of WebKit itself Each port manages the release cycle, typically aligned with the target platform schedule The WebKit project Juan J. Sánchez
  • 37. Coordination and communication tools Website: http://www.webkit.org/ Port specific Websites (e.g. http://webkitgtk.org/) Wiki: http://trac.webkit.org/wiki Blogs: http://planet.webkit.org/ Source Code: SVN: http://svn.webkit.org/repository/webkit Git mirror: git://git.webkit.org/WebKit.git Bugzilla: https://bugs.webkit.org/ Buildbots: http://build.webkit.org/ Mailing lists: http://lists.webkit.org/mailman/listinfo.cgi IRC (irc.freenode.net): #webkit and #webkitgtk+ The WebKit project Juan J. Sánchez
  • 38. The WebKit Contributors Meeting Meeting for contributors to the WebKit project Organized in an “unconference”-like format Extremely useful to advance on some topics: Implementation of new APIs, WebKit2, accelerated compositing, helper tools, QA infrastructure... Yearly held in Cupertino, California. Hosted by Apple The WebKit project Juan J. Sánchez
  • 39. How to contribute The WebKit project Juan J. Sánchez
  • 40. Types of contributions Bugfixing and new features in: An existent port The core components: webcore and JSC/V8 Creation and maintenance of a new port The WebKit project Juan J. Sánchez
  • 41. Guidelines for contributing patches to WebKit 1 Get and build the code from the SVN repository 2 Choose or create a bug report to work on 3 Code your changes and make sure you include new regression or unit tests if needed 4 Create a patch for your changes and submit it asking for review over it to appropriate reviewers 5 Update and change your patch as many times as needed 6 Once approved, land your patch or ask a committer/reviewer to do it 7 Watch for any regressions it might have caused The WebKit project Juan J. Sánchez
  • 42. Creating a port: what needs to be done High level API (WebKit1 and WebKit2) Low level backend specific implementation Web Template Framework (WTF): memory management, threading, data structures (vectors, hash tables, bloom filters, ...) numerical support, etc. JSC vs V8 Networking: HTTP, DNS, cookies, etc. Graphics: 2D/3D rendering, compositing, theming, fonts Multimedia: media player for audio and video tags DOM bindings Accessibility Smaller tasks: clipboard, popup and context menus, cursors, etc. Other things: favicons, plugins, downloads, geolocation, settings, navigation policies, etc. The WebKit project Juan J. Sánchez
  • 43. Creating a port: the social side Difficult without full-time reviewers Reuse from other ports as much as possible Try to work upstream from the very beginning The risk of forking is big, the project moves fast Focus on testing and continuous integration Port-specific events and communication tools The WebKit project Juan J. Sánchez
  • 44. Conclusions WebKit: an Open Source web engine powering lots of applications (not only browsers!) out there The only true Open Source alternative for embedders Clearly defined and modular architecture. Port friendly Complex and fast moving project Developed by a community of organizations and individuals with different interests, collaborating together Lots of contributors. Appropriate policies in place to handle permissions and responsibilities in the project The WebKit project Juan J. Sánchez
  • 45. Thank you! Juan J. Sánchez jjsanchez@igalia.com The WebKit project Juan J. Sánchez