SlideShare a Scribd company logo
Lessons from Contributng
to WebKit and Blink
Bruno de Oliveira Abinader
WebKit, Chromium/Blink commiter
www.brunoabinader.com
brunoabinader@gmail.com
abinader @ irc.freenode.org
Abstract
What: Comparisons between WebKit & Blink
(Chromium) against Linux Kernel development process
models.
Why: Establish common problems/botlenecks and
share best practces between projects.
2 / 26
Contents
➢ Briefng on WebKit and Blink
➢ The WebKit development process
➢ The Blink development process
➢ Comparisons against Linux Kernel development process
➢ Final thoughts
3 / 26
Briefng on WebKit
➢ Web engine: Used by apps to render web content
➢ Open source: Both BSD and LGPL licenses
➢ Community-oriented: Apple, Google, Intel, Samsung...
➢ Multple targets: Desktop, Mobile, Tablets
➢ Multple ports: Cocoa, Qt*, EFL, GTK, OpenGL, Cairo...
4 / 26
WebKit: Project Statstcs
➢ Started in 2001 (fork of KHTML)
➢ Open sourced in 2005
➢ 4.8 million LOCs (C++, C, Objectve-C)
➢ ~300 commiters, ~130 reviewers
➢ ~40% of browsers market share (Nov '12)
➢ Afer Blink: ~8.5% (Safari), ~40% (Chrome) (Sep '13)
5 / 26
WebKit: Lines of Code
WebKit is open sourced Blink is forked
6 / 26
WebKit: Commits / Month
Blink is forked
All time 12 months 30 days
Commits 140887 23635 1545
Contributors 497 303 86
7 / 26
WebKit: Actve Contributors
8 / 26
Blink is forked
Top 10 contributors
Apple
Google
Nokia
Research in Motion
Igalia
Intel
Samsung
Univ. Szeged
Adobe
Torchmobile
Briefng on Blink
➢ Fork of WebKit as of April 2013
➢ Single port: Chromium
➢ Not standalone: Chromium's content layer implementaton
➢ JavaScript engine: V8 (WebKit uses JavaScriptCore)
➢ Multprocess architecture: Browser + Renderer processes
➢ Difers from WebKit2 API multprocess architecture
9 / 26
Blink: Diferent Goals
➢ Greater freedom in implementng WebCore's features
➢ Experimental features can be enabled on runtme
➢ Avoid vendor prefxes:
➢ No more -{moz,webkit,opera}-<property> polyflls!
➢ Lighter codebase:
➢ Cleaned inherited build systems, platorm and port-specifc code
➢ Move non-core layout and rendering code to Chromium
10 / 26
Blink: Lines of Code
March 2013
(cleanup starts)
April 2013
(Blink is forked)
LOCs gets stabilized: ~2.5 MLOCs
11 / 26
Can commit patches
Can follow bugs / trigger try bots
Hierarchical Map
Directory hierarchy
Areas of knowledge
Reviewer
(WebKit)
Owner
(Blink)
Commiter
Contributor*
Status
Amount of people
12 / 26
WebKit: Submitng patches
Bugzilla
1. Create / Select a bug 2. Create patch / build / test
3. Upload patch
4. Early warning system
5. Request review fag (R?)
6. Request commit queue fag (CQ?) 7. Patch is landed
Gardening patch
Manual commit
13 / 26
WebKit: Becoming a
commiter
➢ Have around 25 reviewed patches landed
➢ Good judgment and understanding of project policies
➢ Good collaboraton skills
➢ Nominaton requires support of at least 3 reviewers:
➢ 1 to nominate, 2 to acknowledge
➢ Process happens inside reviewers-only mailing list
14 / 26
WebKit: Becoming a
reviewer
➢ Have around 100 reviewed patches landed
➢ Serious understanding of the source code
➢ Had informally reviewed other patches already
➢ Ensure reviewed patches follows project policies
➢ Exceptonal judgment on source code changes
15 / 26
WebKit: Newcomer tps
*For more memes, go to webkitmemes.tumblr.com :-)
16 / 26
Blink: Submitng patches
Chromium issues
1. Create / Select a bug 2. Create patch / build / test
3. Upload patch
4. Try bots
5. Request review (LGTM?)
6. Trigger commit queue bot 7. Patch is landed
Codereview
Retries 3x
Manual commit
Bug gets notfed
17 / 26
Blink: Gaining status
➢ Commiter:
➢ Follows the same criteria as WebKit
➢ Can be speed up if already a WebKit commiter
➢ Owner:
➢ Have provided high quality reviews / design feedback
➢ Be a Chromium project member for at least 6 months
➢ Have submited a substantal number of non-trivial changes
➢ Had commited patches to the afected directory within 90 days
➢ Bandwidth to contribute with other owners
18 / 26
Linux Kernel: Development
Process
19 / 26
➢ Vanilla releases made by Linus Torvalds
➢ Stable and Experimental releases also available
➢ New releases every 2-3 months
➢ WebKit / Blink: Version depends on target browser
➢ Patch lifetme: Quick for minor fxes, years for large and/or
controversial changes
➢ WebKit / Blink: Faster triaging tmes
Linux Kernel: Process stages
20 / 26
1. Design
2. Early review
3. Wider review
4. Merging into
mainline
5. Release
Ofen done without involving community
Patch gets posted to relevant mailing list
Patch gets accepted by a subsystem maintainer
Merging usually done by Linus Torvalds
Developer should take responsibility for the code
Linux Kernel: Comparisons
21 / 26
➢ Design step:
➢ WebKit and Blink promotes openness on current development
➢ i.e. “Intend to implement/ship” emails on Blink-dev
➢ Early review:
➢ WebKit uses bugzilla, Blink uses Rietveld (codereview)
➢ Good to track history / separate issues in a logical scope
➢ Plus: WebKit's Early Warning System, Blink's try bots
Linux Kernel: Comparisons
22 / 26
➢ Wider review / merging into mainline:
➢ A reviewer/owner acknowledgement usually is enough
➢ In the worst case, patches can be rolled back
➢ Integraton: EWS/Try bots always have HEAD
➢ If the patch fails, developer takes responsibility to rebase / update
➢ Testng on the fy: Layout tests as replacement for unit tests
Linux Kernel: Comparisons
23 / 26
➢ Hierarchy model:
➢ Developer → {driver, sub} maintainer→ subsystem maintainer
→ Linus Torvalds
➢ Developer → Andrew Morton → Linus Torvalds
➢ If a patch touches 2+ places maintained by 2+ maintainers,
“Acked-by” enters in scene
➢ Getng patches inside depends on fnding the right maintainer
➢ Remember WebKit meme on having a bad tme? :-)
Final thoughts
➢ WebKit, Blink and Linux Kernel projects are:
➢ Open source, community-oriented projects
➢ Strict in terms of development processes
➢ Meritocracy-based hierarchy levels
➢ WebKit and Blink awesomeness:
➢ Automatzed patch triage system (including tests)
➢ Bug tracking system / history (web tools)
24 / 26
Questons? :-)
Thank you.
References:
ohloh.net – charts, statistics
linuxfoundation.org – Linux Kernel development steps
webkit.org | chromium.org/blink – general information
bitergia.com – top contributing companies
Decks available in slideshare.net/brunoabinader
abinader.com.br
brunoabinader@gmail.com
abinader @ irc.freenode.org

More Related Content

What's hot

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
 
Android Chromium Rendering Pipeline
Android Chromium Rendering PipelineAndroid Chromium Rendering Pipeline
Android Chromium Rendering PipelineHyungwook Lee
 
Webkit Chromium Contribution Process
Webkit Chromium Contribution ProcessWebkit Chromium Contribution Process
Webkit Chromium Contribution Process
Gyuyoung Kim
 
LCU14 208- Chromium-Blink Migration for RDK
LCU14 208- Chromium-Blink Migration for RDKLCU14 208- Chromium-Blink Migration for RDK
LCU14 208- Chromium-Blink Migration for RDK
Linaro
 
A Browser for the Automotive: Introduction to WebKit for Wayland (Automotive ...
A Browser for the Automotive: Introduction to WebKit for Wayland (Automotive ...A Browser for the Automotive: Introduction to WebKit for Wayland (Automotive ...
A Browser for the Automotive: Introduction to WebKit for Wayland (Automotive ...
Igalia
 
Deview 2013 mobile browser internals and trends_20131022
Deview 2013 mobile browser internals and trends_20131022Deview 2013 mobile browser internals and trends_20131022
Deview 2013 mobile browser internals and trends_20131022NAVER D2
 
Browsers on Android (Webkit,chromium)
Browsers on Android (Webkit,chromium)Browsers on Android (Webkit,chromium)
Browsers on Android (Webkit,chromium)
Bin Chen
 
Chromium ui framework(shared)
Chromium ui framework(shared)Chromium ui framework(shared)
Chromium ui framework(shared)
gnomekr
 
Contributions to an open source project: Igalia and the Chromium project
Contributions to an open source project: Igalia and the Chromium projectContributions to an open source project: Igalia and the Chromium project
Contributions to an open source project: Igalia and the Chromium project
Igalia
 
OVERVIEW: Chromium Source Tree
OVERVIEW: Chromium Source TreeOVERVIEW: Chromium Source Tree
OVERVIEW: Chromium Source Tree
Chang W. Doh
 
Life of a Chromium Developer
Life of a Chromium DeveloperLife of a Chromium Developer
Life of a Chromium Developermpaproductions
 
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 Clutter Port Present and Future; WebKitGtk Status and Roadmap to WebKi...
WebKit Clutter Port Present and Future; WebKitGtk Status and Roadmap to WebKi...WebKit Clutter Port Present and Future; WebKitGtk Status and Roadmap to WebKi...
WebKit Clutter Port Present and Future; WebKitGtk Status and Roadmap to WebKi...
Igalia
 
Bootstrap Jump Start
Bootstrap Jump StartBootstrap Jump Start
Bootstrap Jump Start
Haim Michael
 
XEclipse
XEclipseXEclipse
XEclipse
Eduard Moraru
 
JooinK - DevFest Piemonte 2013
JooinK - DevFest Piemonte 2013JooinK - DevFest Piemonte 2013
JooinK - DevFest Piemonte 2013
JooinK
 
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
 
Android chromium web view
Android chromium web viewAndroid chromium web view
Android chromium web view
朋 王
 
Webkit/chromium contribution process
Webkit/chromium contribution processWebkit/chromium contribution process
Webkit/chromium contribution process
NAVER LABS
 

What's hot (19)

Chromium on Wayland Desktop (BlinkOn 7)
Chromium on Wayland Desktop (BlinkOn 7)Chromium on Wayland Desktop (BlinkOn 7)
Chromium on Wayland Desktop (BlinkOn 7)
 
Android Chromium Rendering Pipeline
Android Chromium Rendering PipelineAndroid Chromium Rendering Pipeline
Android Chromium Rendering Pipeline
 
Webkit Chromium Contribution Process
Webkit Chromium Contribution ProcessWebkit Chromium Contribution Process
Webkit Chromium Contribution Process
 
LCU14 208- Chromium-Blink Migration for RDK
LCU14 208- Chromium-Blink Migration for RDKLCU14 208- Chromium-Blink Migration for RDK
LCU14 208- Chromium-Blink Migration for RDK
 
A Browser for the Automotive: Introduction to WebKit for Wayland (Automotive ...
A Browser for the Automotive: Introduction to WebKit for Wayland (Automotive ...A Browser for the Automotive: Introduction to WebKit for Wayland (Automotive ...
A Browser for the Automotive: Introduction to WebKit for Wayland (Automotive ...
 
Deview 2013 mobile browser internals and trends_20131022
Deview 2013 mobile browser internals and trends_20131022Deview 2013 mobile browser internals and trends_20131022
Deview 2013 mobile browser internals and trends_20131022
 
Browsers on Android (Webkit,chromium)
Browsers on Android (Webkit,chromium)Browsers on Android (Webkit,chromium)
Browsers on Android (Webkit,chromium)
 
Chromium ui framework(shared)
Chromium ui framework(shared)Chromium ui framework(shared)
Chromium ui framework(shared)
 
Contributions to an open source project: Igalia and the Chromium project
Contributions to an open source project: Igalia and the Chromium projectContributions to an open source project: Igalia and the Chromium project
Contributions to an open source project: Igalia and the Chromium project
 
OVERVIEW: Chromium Source Tree
OVERVIEW: Chromium Source TreeOVERVIEW: Chromium Source Tree
OVERVIEW: Chromium Source Tree
 
Life of a Chromium Developer
Life of a Chromium DeveloperLife of a Chromium Developer
Life of a Chromium Developer
 
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 Clutter Port Present and Future; WebKitGtk Status and Roadmap to WebKi...
WebKit Clutter Port Present and Future; WebKitGtk Status and Roadmap to WebKi...WebKit Clutter Port Present and Future; WebKitGtk Status and Roadmap to WebKi...
WebKit Clutter Port Present and Future; WebKitGtk Status and Roadmap to WebKi...
 
Bootstrap Jump Start
Bootstrap Jump StartBootstrap Jump Start
Bootstrap Jump Start
 
XEclipse
XEclipseXEclipse
XEclipse
 
JooinK - DevFest Piemonte 2013
JooinK - DevFest Piemonte 2013JooinK - DevFest Piemonte 2013
JooinK - DevFest Piemonte 2013
 
Developments in the Qt WebKit Integration
Developments in the Qt WebKit IntegrationDevelopments in the Qt WebKit Integration
Developments in the Qt WebKit Integration
 
Android chromium web view
Android chromium web viewAndroid chromium web view
Android chromium web view
 
Webkit/chromium contribution process
Webkit/chromium contribution processWebkit/chromium contribution process
Webkit/chromium contribution process
 

Similar to Lessons from Contributing to WebKit and Blink

Использование AzureDevOps при разработке микросервисных приложений
Использование AzureDevOps при разработке микросервисных приложенийИспользование AzureDevOps при разработке микросервисных приложений
Использование AzureDevOps при разработке микросервисных приложений
Vitebsk Miniq
 
Alexander Kutsan: “C++ compilation boost”
Alexander Kutsan: “C++ compilation boost” Alexander Kutsan: “C++ compilation boost”
Alexander Kutsan: “C++ compilation boost”
LogeekNightUkraine
 
WebKit Security Updates (GUADEC 2016)
WebKit Security Updates (GUADEC 2016)WebKit Security Updates (GUADEC 2016)
WebKit Security Updates (GUADEC 2016)
Igalia
 
KrankGeek November 2021 - Best practices in Electron-based desktop developmen...
KrankGeek November 2021 - Best practices in Electron-based desktop developmen...KrankGeek November 2021 - Best practices in Electron-based desktop developmen...
KrankGeek November 2021 - Best practices in Electron-based desktop developmen...
Arnaud BUDKIEWICZ
 
Docker Meetup 08 03-2016
Docker Meetup 08 03-2016Docker Meetup 08 03-2016
Docker Meetup 08 03-2016
Docker
 
Remote debugging of Application in Kubernetes
Remote debugging of Application in KubernetesRemote debugging of Application in Kubernetes
Remote debugging of Application in Kubernetes
ConSol Consulting & Solutions Software GmbH
 
Moby Open Source Summit North America 2017
Moby Open Source Summit North America 2017Moby Open Source Summit North America 2017
Moby Open Source Summit North America 2017
Patrick Chanezon
 
Developing NuGet
Developing NuGetDeveloping NuGet
Developing NuGet
Jeff Handley
 
What is the merge window?
What is the merge window?What is the merge window?
What is the merge window?
Macpaul Lin
 
WebKit2 And You (GUADEC 2013)
WebKit2 And You (GUADEC 2013)WebKit2 And You (GUADEC 2013)
WebKit2 And You (GUADEC 2013)
Igalia
 
Dealing with large code bases. cd ams meetup
Dealing with large code bases. cd ams meetupDealing with large code bases. cd ams meetup
Dealing with large code bases. cd ams meetup
Viktor Sadovnikov
 
Docker in Production: How RightScale Delivers Cloud Applications
Docker in Production: How RightScale Delivers Cloud ApplicationsDocker in Production: How RightScale Delivers Cloud Applications
Docker in Production: How RightScale Delivers Cloud Applications
RightScale
 
Continuous integration ( jen kins travis ci)
Continuous integration ( jen kins  travis ci)Continuous integration ( jen kins  travis ci)
Continuous integration ( jen kins travis ci)
Sadani Rodrigo
 
Develop and deploy Kubernetes applications with Docker - IBM Index 2018
Develop and deploy Kubernetes  applications with Docker - IBM Index 2018Develop and deploy Kubernetes  applications with Docker - IBM Index 2018
Develop and deploy Kubernetes applications with Docker - IBM Index 2018
Patrick Chanezon
 
Jenkins2 - Coding Continuous Delivery Pipelines
Jenkins2 - Coding Continuous Delivery PipelinesJenkins2 - Coding Continuous Delivery Pipelines
Jenkins2 - Coding Continuous Delivery Pipelines
Brent Laster
 
Gatehouse software genanvendelse
Gatehouse software genanvendelseGatehouse software genanvendelse
Gatehouse software genanvendelse
InfinIT - Innovationsnetværket for it
 
Docker Fundamental course - linkedin
Docker Fundamental course - linkedinDocker Fundamental course - linkedin
Docker Fundamental course - linkedin
Amin Shateri
 
Mastering Kubernetes - Basics and Advanced Concepts using Example Project
Mastering Kubernetes - Basics and Advanced Concepts using Example ProjectMastering Kubernetes - Basics and Advanced Concepts using Example Project
Mastering Kubernetes - Basics and Advanced Concepts using Example Project
wajrcs
 
Kubernetes in docker for mac
Kubernetes in docker for macKubernetes in docker for mac
Kubernetes in docker for mac
Catalin Jora
 
Using Docker Platform to Provide Services
Using Docker Platform to Provide ServicesUsing Docker Platform to Provide Services
Using Docker Platform to Provide Services
GLC Networks
 

Similar to Lessons from Contributing to WebKit and Blink (20)

Использование AzureDevOps при разработке микросервисных приложений
Использование AzureDevOps при разработке микросервисных приложенийИспользование AzureDevOps при разработке микросервисных приложений
Использование AzureDevOps при разработке микросервисных приложений
 
Alexander Kutsan: “C++ compilation boost”
Alexander Kutsan: “C++ compilation boost” Alexander Kutsan: “C++ compilation boost”
Alexander Kutsan: “C++ compilation boost”
 
WebKit Security Updates (GUADEC 2016)
WebKit Security Updates (GUADEC 2016)WebKit Security Updates (GUADEC 2016)
WebKit Security Updates (GUADEC 2016)
 
KrankGeek November 2021 - Best practices in Electron-based desktop developmen...
KrankGeek November 2021 - Best practices in Electron-based desktop developmen...KrankGeek November 2021 - Best practices in Electron-based desktop developmen...
KrankGeek November 2021 - Best practices in Electron-based desktop developmen...
 
Docker Meetup 08 03-2016
Docker Meetup 08 03-2016Docker Meetup 08 03-2016
Docker Meetup 08 03-2016
 
Remote debugging of Application in Kubernetes
Remote debugging of Application in KubernetesRemote debugging of Application in Kubernetes
Remote debugging of Application in Kubernetes
 
Moby Open Source Summit North America 2017
Moby Open Source Summit North America 2017Moby Open Source Summit North America 2017
Moby Open Source Summit North America 2017
 
Developing NuGet
Developing NuGetDeveloping NuGet
Developing NuGet
 
What is the merge window?
What is the merge window?What is the merge window?
What is the merge window?
 
WebKit2 And You (GUADEC 2013)
WebKit2 And You (GUADEC 2013)WebKit2 And You (GUADEC 2013)
WebKit2 And You (GUADEC 2013)
 
Dealing with large code bases. cd ams meetup
Dealing with large code bases. cd ams meetupDealing with large code bases. cd ams meetup
Dealing with large code bases. cd ams meetup
 
Docker in Production: How RightScale Delivers Cloud Applications
Docker in Production: How RightScale Delivers Cloud ApplicationsDocker in Production: How RightScale Delivers Cloud Applications
Docker in Production: How RightScale Delivers Cloud Applications
 
Continuous integration ( jen kins travis ci)
Continuous integration ( jen kins  travis ci)Continuous integration ( jen kins  travis ci)
Continuous integration ( jen kins travis ci)
 
Develop and deploy Kubernetes applications with Docker - IBM Index 2018
Develop and deploy Kubernetes  applications with Docker - IBM Index 2018Develop and deploy Kubernetes  applications with Docker - IBM Index 2018
Develop and deploy Kubernetes applications with Docker - IBM Index 2018
 
Jenkins2 - Coding Continuous Delivery Pipelines
Jenkins2 - Coding Continuous Delivery PipelinesJenkins2 - Coding Continuous Delivery Pipelines
Jenkins2 - Coding Continuous Delivery Pipelines
 
Gatehouse software genanvendelse
Gatehouse software genanvendelseGatehouse software genanvendelse
Gatehouse software genanvendelse
 
Docker Fundamental course - linkedin
Docker Fundamental course - linkedinDocker Fundamental course - linkedin
Docker Fundamental course - linkedin
 
Mastering Kubernetes - Basics and Advanced Concepts using Example Project
Mastering Kubernetes - Basics and Advanced Concepts using Example ProjectMastering Kubernetes - Basics and Advanced Concepts using Example Project
Mastering Kubernetes - Basics and Advanced Concepts using Example Project
 
Kubernetes in docker for mac
Kubernetes in docker for macKubernetes in docker for mac
Kubernetes in docker for mac
 
Using Docker Platform to Provide Services
Using Docker Platform to Provide ServicesUsing Docker Platform to Provide Services
Using Docker Platform to Provide Services
 

Recently uploaded

Enchancing adoption of Open Source Libraries. A case study on Albumentations.AI
Enchancing adoption of Open Source Libraries. A case study on Albumentations.AIEnchancing adoption of Open Source Libraries. A case study on Albumentations.AI
Enchancing adoption of Open Source Libraries. A case study on Albumentations.AI
Vladimir Iglovikov, Ph.D.
 
Pushing the limits of ePRTC: 100ns holdover for 100 days
Pushing the limits of ePRTC: 100ns holdover for 100 daysPushing the limits of ePRTC: 100ns holdover for 100 days
Pushing the limits of ePRTC: 100ns holdover for 100 days
Adtran
 
PCI PIN Basics Webinar from the Controlcase Team
PCI PIN Basics Webinar from the Controlcase TeamPCI PIN Basics Webinar from the Controlcase Team
PCI PIN Basics Webinar from the Controlcase Team
ControlCase
 
Generative AI Deep Dive: Advancing from Proof of Concept to Production
Generative AI Deep Dive: Advancing from Proof of Concept to ProductionGenerative AI Deep Dive: Advancing from Proof of Concept to Production
Generative AI Deep Dive: Advancing from Proof of Concept to Production
Aggregage
 
20240605 QFM017 Machine Intelligence Reading List May 2024
20240605 QFM017 Machine Intelligence Reading List May 202420240605 QFM017 Machine Intelligence Reading List May 2024
20240605 QFM017 Machine Intelligence Reading List May 2024
Matthew Sinclair
 
20240607 QFM018 Elixir Reading List May 2024
20240607 QFM018 Elixir Reading List May 202420240607 QFM018 Elixir Reading List May 2024
20240607 QFM018 Elixir Reading List May 2024
Matthew Sinclair
 
Alt. GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using ...
Alt. GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using ...Alt. GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using ...
Alt. GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using ...
James Anderson
 
Artificial Intelligence for XMLDevelopment
Artificial Intelligence for XMLDevelopmentArtificial Intelligence for XMLDevelopment
Artificial Intelligence for XMLDevelopment
Octavian Nadolu
 
Observability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdf
Observability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdfObservability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdf
Observability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdf
Paige Cruz
 
Monitoring Java Application Security with JDK Tools and JFR Events
Monitoring Java Application Security with JDK Tools and JFR EventsMonitoring Java Application Security with JDK Tools and JFR Events
Monitoring Java Application Security with JDK Tools and JFR Events
Ana-Maria Mihalceanu
 
A tale of scale & speed: How the US Navy is enabling software delivery from l...
A tale of scale & speed: How the US Navy is enabling software delivery from l...A tale of scale & speed: How the US Navy is enabling software delivery from l...
A tale of scale & speed: How the US Navy is enabling software delivery from l...
sonjaschweigert1
 
Communications Mining Series - Zero to Hero - Session 1
Communications Mining Series - Zero to Hero - Session 1Communications Mining Series - Zero to Hero - Session 1
Communications Mining Series - Zero to Hero - Session 1
DianaGray10
 
Secstrike : Reverse Engineering & Pwnable tools for CTF.pptx
Secstrike : Reverse Engineering & Pwnable tools for CTF.pptxSecstrike : Reverse Engineering & Pwnable tools for CTF.pptx
Secstrike : Reverse Engineering & Pwnable tools for CTF.pptx
nkrafacyberclub
 
GraphRAG is All You need? LLM & Knowledge Graph
GraphRAG is All You need? LLM & Knowledge GraphGraphRAG is All You need? LLM & Knowledge Graph
GraphRAG is All You need? LLM & Knowledge Graph
Guy Korland
 
みなさんこんにちはこれ何文字まで入るの?40文字以下不可とか本当に意味わからないけどこれ限界文字数書いてないからマジでやばい文字数いけるんじゃないの?えこ...
みなさんこんにちはこれ何文字まで入るの?40文字以下不可とか本当に意味わからないけどこれ限界文字数書いてないからマジでやばい文字数いけるんじゃないの?えこ...みなさんこんにちはこれ何文字まで入るの?40文字以下不可とか本当に意味わからないけどこれ限界文字数書いてないからマジでやばい文字数いけるんじゃないの?えこ...
みなさんこんにちはこれ何文字まで入るの?40文字以下不可とか本当に意味わからないけどこれ限界文字数書いてないからマジでやばい文字数いけるんじゃないの?えこ...
名前 です男
 
Why You Should Replace Windows 11 with Nitrux Linux 3.5.0 for enhanced perfor...
Why You Should Replace Windows 11 with Nitrux Linux 3.5.0 for enhanced perfor...Why You Should Replace Windows 11 with Nitrux Linux 3.5.0 for enhanced perfor...
Why You Should Replace Windows 11 with Nitrux Linux 3.5.0 for enhanced perfor...
SOFTTECHHUB
 
Climate Impact of Software Testing at Nordic Testing Days
Climate Impact of Software Testing at Nordic Testing DaysClimate Impact of Software Testing at Nordic Testing Days
Climate Impact of Software Testing at Nordic Testing Days
Kari Kakkonen
 
Epistemic Interaction - tuning interfaces to provide information for AI support
Epistemic Interaction - tuning interfaces to provide information for AI supportEpistemic Interaction - tuning interfaces to provide information for AI support
Epistemic Interaction - tuning interfaces to provide information for AI support
Alan Dix
 
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...
DanBrown980551
 
Video Streaming: Then, Now, and in the Future
Video Streaming: Then, Now, and in the FutureVideo Streaming: Then, Now, and in the Future
Video Streaming: Then, Now, and in the Future
Alpen-Adria-Universität
 

Recently uploaded (20)

Enchancing adoption of Open Source Libraries. A case study on Albumentations.AI
Enchancing adoption of Open Source Libraries. A case study on Albumentations.AIEnchancing adoption of Open Source Libraries. A case study on Albumentations.AI
Enchancing adoption of Open Source Libraries. A case study on Albumentations.AI
 
Pushing the limits of ePRTC: 100ns holdover for 100 days
Pushing the limits of ePRTC: 100ns holdover for 100 daysPushing the limits of ePRTC: 100ns holdover for 100 days
Pushing the limits of ePRTC: 100ns holdover for 100 days
 
PCI PIN Basics Webinar from the Controlcase Team
PCI PIN Basics Webinar from the Controlcase TeamPCI PIN Basics Webinar from the Controlcase Team
PCI PIN Basics Webinar from the Controlcase Team
 
Generative AI Deep Dive: Advancing from Proof of Concept to Production
Generative AI Deep Dive: Advancing from Proof of Concept to ProductionGenerative AI Deep Dive: Advancing from Proof of Concept to Production
Generative AI Deep Dive: Advancing from Proof of Concept to Production
 
20240605 QFM017 Machine Intelligence Reading List May 2024
20240605 QFM017 Machine Intelligence Reading List May 202420240605 QFM017 Machine Intelligence Reading List May 2024
20240605 QFM017 Machine Intelligence Reading List May 2024
 
20240607 QFM018 Elixir Reading List May 2024
20240607 QFM018 Elixir Reading List May 202420240607 QFM018 Elixir Reading List May 2024
20240607 QFM018 Elixir Reading List May 2024
 
Alt. GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using ...
Alt. GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using ...Alt. GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using ...
Alt. GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using ...
 
Artificial Intelligence for XMLDevelopment
Artificial Intelligence for XMLDevelopmentArtificial Intelligence for XMLDevelopment
Artificial Intelligence for XMLDevelopment
 
Observability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdf
Observability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdfObservability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdf
Observability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdf
 
Monitoring Java Application Security with JDK Tools and JFR Events
Monitoring Java Application Security with JDK Tools and JFR EventsMonitoring Java Application Security with JDK Tools and JFR Events
Monitoring Java Application Security with JDK Tools and JFR Events
 
A tale of scale & speed: How the US Navy is enabling software delivery from l...
A tale of scale & speed: How the US Navy is enabling software delivery from l...A tale of scale & speed: How the US Navy is enabling software delivery from l...
A tale of scale & speed: How the US Navy is enabling software delivery from l...
 
Communications Mining Series - Zero to Hero - Session 1
Communications Mining Series - Zero to Hero - Session 1Communications Mining Series - Zero to Hero - Session 1
Communications Mining Series - Zero to Hero - Session 1
 
Secstrike : Reverse Engineering & Pwnable tools for CTF.pptx
Secstrike : Reverse Engineering & Pwnable tools for CTF.pptxSecstrike : Reverse Engineering & Pwnable tools for CTF.pptx
Secstrike : Reverse Engineering & Pwnable tools for CTF.pptx
 
GraphRAG is All You need? LLM & Knowledge Graph
GraphRAG is All You need? LLM & Knowledge GraphGraphRAG is All You need? LLM & Knowledge Graph
GraphRAG is All You need? LLM & Knowledge Graph
 
みなさんこんにちはこれ何文字まで入るの?40文字以下不可とか本当に意味わからないけどこれ限界文字数書いてないからマジでやばい文字数いけるんじゃないの?えこ...
みなさんこんにちはこれ何文字まで入るの?40文字以下不可とか本当に意味わからないけどこれ限界文字数書いてないからマジでやばい文字数いけるんじゃないの?えこ...みなさんこんにちはこれ何文字まで入るの?40文字以下不可とか本当に意味わからないけどこれ限界文字数書いてないからマジでやばい文字数いけるんじゃないの?えこ...
みなさんこんにちはこれ何文字まで入るの?40文字以下不可とか本当に意味わからないけどこれ限界文字数書いてないからマジでやばい文字数いけるんじゃないの?えこ...
 
Why You Should Replace Windows 11 with Nitrux Linux 3.5.0 for enhanced perfor...
Why You Should Replace Windows 11 with Nitrux Linux 3.5.0 for enhanced perfor...Why You Should Replace Windows 11 with Nitrux Linux 3.5.0 for enhanced perfor...
Why You Should Replace Windows 11 with Nitrux Linux 3.5.0 for enhanced perfor...
 
Climate Impact of Software Testing at Nordic Testing Days
Climate Impact of Software Testing at Nordic Testing DaysClimate Impact of Software Testing at Nordic Testing Days
Climate Impact of Software Testing at Nordic Testing Days
 
Epistemic Interaction - tuning interfaces to provide information for AI support
Epistemic Interaction - tuning interfaces to provide information for AI supportEpistemic Interaction - tuning interfaces to provide information for AI support
Epistemic Interaction - tuning interfaces to provide information for AI support
 
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...
 
Video Streaming: Then, Now, and in the Future
Video Streaming: Then, Now, and in the FutureVideo Streaming: Then, Now, and in the Future
Video Streaming: Then, Now, and in the Future
 

Lessons from Contributing to WebKit and Blink

  • 1. Lessons from Contributng to WebKit and Blink Bruno de Oliveira Abinader WebKit, Chromium/Blink commiter www.brunoabinader.com brunoabinader@gmail.com abinader @ irc.freenode.org
  • 2. Abstract What: Comparisons between WebKit & Blink (Chromium) against Linux Kernel development process models. Why: Establish common problems/botlenecks and share best practces between projects. 2 / 26
  • 3. Contents ➢ Briefng on WebKit and Blink ➢ The WebKit development process ➢ The Blink development process ➢ Comparisons against Linux Kernel development process ➢ Final thoughts 3 / 26
  • 4. Briefng on WebKit ➢ Web engine: Used by apps to render web content ➢ Open source: Both BSD and LGPL licenses ➢ Community-oriented: Apple, Google, Intel, Samsung... ➢ Multple targets: Desktop, Mobile, Tablets ➢ Multple ports: Cocoa, Qt*, EFL, GTK, OpenGL, Cairo... 4 / 26
  • 5. WebKit: Project Statstcs ➢ Started in 2001 (fork of KHTML) ➢ Open sourced in 2005 ➢ 4.8 million LOCs (C++, C, Objectve-C) ➢ ~300 commiters, ~130 reviewers ➢ ~40% of browsers market share (Nov '12) ➢ Afer Blink: ~8.5% (Safari), ~40% (Chrome) (Sep '13) 5 / 26
  • 6. WebKit: Lines of Code WebKit is open sourced Blink is forked 6 / 26
  • 7. WebKit: Commits / Month Blink is forked All time 12 months 30 days Commits 140887 23635 1545 Contributors 497 303 86 7 / 26
  • 8. WebKit: Actve Contributors 8 / 26 Blink is forked Top 10 contributors Apple Google Nokia Research in Motion Igalia Intel Samsung Univ. Szeged Adobe Torchmobile
  • 9. Briefng on Blink ➢ Fork of WebKit as of April 2013 ➢ Single port: Chromium ➢ Not standalone: Chromium's content layer implementaton ➢ JavaScript engine: V8 (WebKit uses JavaScriptCore) ➢ Multprocess architecture: Browser + Renderer processes ➢ Difers from WebKit2 API multprocess architecture 9 / 26
  • 10. Blink: Diferent Goals ➢ Greater freedom in implementng WebCore's features ➢ Experimental features can be enabled on runtme ➢ Avoid vendor prefxes: ➢ No more -{moz,webkit,opera}-<property> polyflls! ➢ Lighter codebase: ➢ Cleaned inherited build systems, platorm and port-specifc code ➢ Move non-core layout and rendering code to Chromium 10 / 26
  • 11. Blink: Lines of Code March 2013 (cleanup starts) April 2013 (Blink is forked) LOCs gets stabilized: ~2.5 MLOCs 11 / 26
  • 12. Can commit patches Can follow bugs / trigger try bots Hierarchical Map Directory hierarchy Areas of knowledge Reviewer (WebKit) Owner (Blink) Commiter Contributor* Status Amount of people 12 / 26
  • 13. WebKit: Submitng patches Bugzilla 1. Create / Select a bug 2. Create patch / build / test 3. Upload patch 4. Early warning system 5. Request review fag (R?) 6. Request commit queue fag (CQ?) 7. Patch is landed Gardening patch Manual commit 13 / 26
  • 14. WebKit: Becoming a commiter ➢ Have around 25 reviewed patches landed ➢ Good judgment and understanding of project policies ➢ Good collaboraton skills ➢ Nominaton requires support of at least 3 reviewers: ➢ 1 to nominate, 2 to acknowledge ➢ Process happens inside reviewers-only mailing list 14 / 26
  • 15. WebKit: Becoming a reviewer ➢ Have around 100 reviewed patches landed ➢ Serious understanding of the source code ➢ Had informally reviewed other patches already ➢ Ensure reviewed patches follows project policies ➢ Exceptonal judgment on source code changes 15 / 26
  • 16. WebKit: Newcomer tps *For more memes, go to webkitmemes.tumblr.com :-) 16 / 26
  • 17. Blink: Submitng patches Chromium issues 1. Create / Select a bug 2. Create patch / build / test 3. Upload patch 4. Try bots 5. Request review (LGTM?) 6. Trigger commit queue bot 7. Patch is landed Codereview Retries 3x Manual commit Bug gets notfed 17 / 26
  • 18. Blink: Gaining status ➢ Commiter: ➢ Follows the same criteria as WebKit ➢ Can be speed up if already a WebKit commiter ➢ Owner: ➢ Have provided high quality reviews / design feedback ➢ Be a Chromium project member for at least 6 months ➢ Have submited a substantal number of non-trivial changes ➢ Had commited patches to the afected directory within 90 days ➢ Bandwidth to contribute with other owners 18 / 26
  • 19. Linux Kernel: Development Process 19 / 26 ➢ Vanilla releases made by Linus Torvalds ➢ Stable and Experimental releases also available ➢ New releases every 2-3 months ➢ WebKit / Blink: Version depends on target browser ➢ Patch lifetme: Quick for minor fxes, years for large and/or controversial changes ➢ WebKit / Blink: Faster triaging tmes
  • 20. Linux Kernel: Process stages 20 / 26 1. Design 2. Early review 3. Wider review 4. Merging into mainline 5. Release Ofen done without involving community Patch gets posted to relevant mailing list Patch gets accepted by a subsystem maintainer Merging usually done by Linus Torvalds Developer should take responsibility for the code
  • 21. Linux Kernel: Comparisons 21 / 26 ➢ Design step: ➢ WebKit and Blink promotes openness on current development ➢ i.e. “Intend to implement/ship” emails on Blink-dev ➢ Early review: ➢ WebKit uses bugzilla, Blink uses Rietveld (codereview) ➢ Good to track history / separate issues in a logical scope ➢ Plus: WebKit's Early Warning System, Blink's try bots
  • 22. Linux Kernel: Comparisons 22 / 26 ➢ Wider review / merging into mainline: ➢ A reviewer/owner acknowledgement usually is enough ➢ In the worst case, patches can be rolled back ➢ Integraton: EWS/Try bots always have HEAD ➢ If the patch fails, developer takes responsibility to rebase / update ➢ Testng on the fy: Layout tests as replacement for unit tests
  • 23. Linux Kernel: Comparisons 23 / 26 ➢ Hierarchy model: ➢ Developer → {driver, sub} maintainer→ subsystem maintainer → Linus Torvalds ➢ Developer → Andrew Morton → Linus Torvalds ➢ If a patch touches 2+ places maintained by 2+ maintainers, “Acked-by” enters in scene ➢ Getng patches inside depends on fnding the right maintainer ➢ Remember WebKit meme on having a bad tme? :-)
  • 24. Final thoughts ➢ WebKit, Blink and Linux Kernel projects are: ➢ Open source, community-oriented projects ➢ Strict in terms of development processes ➢ Meritocracy-based hierarchy levels ➢ WebKit and Blink awesomeness: ➢ Automatzed patch triage system (including tests) ➢ Bug tracking system / history (web tools) 24 / 26
  • 26. Thank you. References: ohloh.net – charts, statistics linuxfoundation.org – Linux Kernel development steps webkit.org | chromium.org/blink – general information bitergia.com – top contributing companies Decks available in slideshare.net/brunoabinader abinader.com.br brunoabinader@gmail.com abinader @ irc.freenode.org