SlideShare a Scribd company logo
What is the
“merge window”?
Macpaul Lin
2021/11/12
macpaul <at> gmail.com
CC0
What is the “merge window”?
• According to Wikipedia
• https://en.wikipedia.org/wiki/Merge_window
• The merge window is a software development process which is
sometimes used by large projects.
• The merge window is a period of time that occurs directly
after the release of a new version of the software. During
this time, many patches are merged and hence have a long time
to get scrutinized and tested before the next release.
5.14 5.15-rc1 5.15-rc2 5.15-rc3 5.15-rc4 5.15-rc5 5.15-rc6 5.15-rc7 5.15 5.16-rc1
merge window merge window
What is the “merge window”?
• From Wikipedia
• The Linux kernel has used the merge window process since
July 2005 with the release of version 2.6.14. Since then,
every 2.6.*, 3.* and 4.* release has been followed by a
two-week merge window.[1]
• This causes much work for the project maintainers who
have to merge all the patches. The process may be split
up with people who inspect, approve and merge the patches.
• Ref
• https://www.kernel.org/doc/html/latest/process/2.Process.html?hig
hlight=merge%20window
What is the “merge window”?
• According to u-boot website
• https://www.denx.de/wiki/U-Boot/DevelopmentProcess
• The Merge Window is the period when new patches get
submitted (and hopefully accepted) for inclusion into U-
Boot mainline.
• This is the only time when new code (like support for new
processors or new boards, or other new features or
reorganization of code) is accepted.
Why merge window is important for
developing?
• Can’t we send new features everyday?
• Yes you can, but…
• Only during that period, maintainers will review patch quickly.
• Your patch will still be reviewed, but it won’t be applied to the
coming release tree.
• Once the patch has been accepted, it will be applied to “–next”
branch owned by subsystem maintainer.
• You will usually get short feedback latency during merge window.
• “-rcX” (release candidate) tags means QC (testing)!
• Everyone is doing QC after the merge window.
• Testing.
• Bug fixing.
• New bug fix will be applied to subsystem’s release tree.
Why merge window is important for
developing?
• The story
• Linux has bad old days before
• Build fail everyday, even fix build fail twice a day.
• Couldn’t start testing.
• https://web.archive.org/web/20120513035631/http://kerneltrap.org/
Linux/Active_Merge_Windows
Why merge window is important for
developing?
• People “do test” Linux during QC period before
release!
• Mainline Linux has its own CI.
• Build/merges tests.
• Booting tests.
• Subsystem function tests.
• Who will run these tests?
• Linux foundation.
• Maintainers.
• Contribute companies.
Merge window is for new ready
patch.
• Please send patch that you think it is ready to be
merged.
• These patches should be checked by checkpatch.pl and
other tools.
• Maintainers are busy at this moment.
• Patch will be accepted with higher chances during the
merge window.
• Because new feature cannot get high priority out of the merge
window.
• Maintainer will request more refactor out of the merge window.
What is the most important merge
window?
• Linux will release a LTS version every year.
• https://www.kernel.org/category/releases.html
• LTS means long-term support for stable versions.
• Who will use LTS kernel?
• Distros will prepare LTS/stable version based on LTS Linux kernel version.
• Google - Android will use LTS version for ACK developing.
• Other open-source projects – Yocto.
• LTS also means less maintain effort, especially security patches and
backport bug fixes.
• Everyone will focus on bug fix for LTS versions.
• LTS is usually come out during Oct~Dec.
• Everyone can have his own vacation after LTS is out. (just kidding)
How is merge/debugging ratio?
• Linux will be released every 2~3 months (8~12 weeks)
• The merge window is only 2 weeks.
• The ratio is 1:3~1:5 (25% merge, 75% debugging)
Release early,
Release often.
Open source development 101.
Release early, release often.
• Submit patch with basic function at the beginning.
• Split patch into small pieces.
• During the review,
• merge patches into a single large patch is easier.
• split will be slightly difficult and much manual work.
• No one can review a large bunch of changes in one time.
• Get feedback sooner for required changes
• Architecture, code placement, and from its logic to variable
typo.
• Each developer will gain experience when they submit
hand-on patches.
Case study
Stmmac Ethernet driver.
• Mail-Thread
• https://lkml.org/lkml/2021/11/12/133
• The same hardware IP for mt2712 and mt8195.
• Support mt2712 in mainline with some specific logics.
• Did’t support mt8195 before 5.16.
• Software task
• Abstract the common code.
• Add probe functions, compatible strings and new API hooks (parameters)
for mt8195.
• Improve document to full fill new kernel standards.
• Schedule
• 1 week for patches preparing (5 patches)
• Parameter and function confirmation with designers.
• 3 days for submit patches and reviewing. (Currently v3: 7 patches)
Case study
Stmmac Ethernet driver.
• Success reasons
• Based on previous work on mt2712.
• Upstream with landing on new platform.
• The driver author is positive to get new platform
upstream.
• RD’s manager support upstream task as a highest priority
request because of merge window is coming.
Case study
Improve performance for large data
transfer for usb-serial.
• Mail-thread
• https://lkml.org/lkml/2020/6/24/150
• Software task
• Just fix some hard coded values into definitions with
larger values.
• Fail reason (Maintainer’s reply)
• Since this can only be applied for the next merge window,
it would be much better if you work rework…
Resource allocation align each
merge window.
• Ideally, we should upstream the patch after press
release of a new platform/product.
• After internal QC done.
• After press release.
• After customer design-in and starting to ship the
platform to the market.
• But RD will get issues from customer after QC done,
and then, it comes the other new tasks for new
platform/product.
Resource allocation align each
merge window.
5.14 5.15-rc1 5.15-rc2 5.15-rc3 5.15-rc4 5.15-rc5 5.15-rc6 5.15-rc7 5.15 5.16-rc1
merge window merge window
Prepare patch
Allocate
resource
Bug fix
Test
and
debug
Refactor,
and
add new features.
Submit,
review,
and Revise!
Patch merged.
Life is
happy now.
Resource allocation align each
merge window.
• Why don’t you allocate resource align the merge
window?
• You’ll get 5~6 chances to submit new feature during a
year with higher efficiency.
• RD’s manager should help allocate resource for developer
“before” and “during” the merge window.
• Small and basic functions / refactor are welcome.
• Each merge window means a chance for refactoring the
legacy code and adopt to new kernel design.
• Reduce migration effort.
• Each line of code you submit, won’t be the tear next time when
you doing kernel migration (hopefully).
Q & A
Patch are welcome.
Fork are welcome.

More Related Content

What's hot

Hands-on ethernet driver
Hands-on ethernet driverHands-on ethernet driver
Hands-on ethernet driver
SUSE Labs Taipei
 
Lagopus + DockerのDPDK接続
Lagopus + DockerのDPDK接続Lagopus + DockerのDPDK接続
Lagopus + DockerのDPDK接続
Tomoya Hibi
 
Linux Network Stack
Linux Network StackLinux Network Stack
Linux Network Stack
Adrien Mahieux
 
Making Linux do Hard Real-time
Making Linux do Hard Real-timeMaking Linux do Hard Real-time
Making Linux do Hard Real-time
National Cheng Kung University
 
P4, EPBF, and Linux TC Offload
P4, EPBF, and Linux TC OffloadP4, EPBF, and Linux TC Offload
P4, EPBF, and Linux TC Offload
Open-NFP
 
Solaris Kernel Debugging V1.0
Solaris Kernel Debugging V1.0Solaris Kernel Debugging V1.0
Solaris Kernel Debugging V1.0Jarod Wang
 
Embedding Chromium into AGL demo platform with WAM
Embedding Chromium into AGL demo platform with WAMEmbedding Chromium into AGL demo platform with WAM
Embedding Chromium into AGL demo platform with WAM
Igalia
 
Open vSwitch - Stateful Connection Tracking & Stateful NAT
Open vSwitch - Stateful Connection Tracking & Stateful NATOpen vSwitch - Stateful Connection Tracking & Stateful NAT
Open vSwitch - Stateful Connection Tracking & Stateful NAT
Thomas Graf
 
Network Programming: Data Plane Development Kit (DPDK)
Network Programming: Data Plane Development Kit (DPDK)Network Programming: Data Plane Development Kit (DPDK)
Network Programming: Data Plane Development Kit (DPDK)
Andriy Berestovskyy
 
DockerCon 2017 - Cilium - Network and Application Security with BPF and XDP
DockerCon 2017 - Cilium - Network and Application Security with BPF and XDPDockerCon 2017 - Cilium - Network and Application Security with BPF and XDP
DockerCon 2017 - Cilium - Network and Application Security with BPF and XDP
Thomas Graf
 
BUD17-400: Secure Data Path with OPTEE
BUD17-400: Secure Data Path with OPTEE BUD17-400: Secure Data Path with OPTEE
BUD17-400: Secure Data Path with OPTEE
Linaro
 
LAS16-402: ARM Trusted Firmware – from Enterprise to Embedded
LAS16-402: ARM Trusted Firmware – from Enterprise to EmbeddedLAS16-402: ARM Trusted Firmware – from Enterprise to Embedded
LAS16-402: ARM Trusted Firmware – from Enterprise to Embedded
Linaro
 
BPF Hardware Offload Deep Dive
BPF Hardware Offload Deep DiveBPF Hardware Offload Deep Dive
BPF Hardware Offload Deep Dive
Netronome
 
Pushing Packets - How do the ML2 Mechanism Drivers Stack Up
Pushing Packets - How do the ML2 Mechanism Drivers Stack UpPushing Packets - How do the ML2 Mechanism Drivers Stack Up
Pushing Packets - How do the ML2 Mechanism Drivers Stack Up
James Denton
 
Dpdk applications
Dpdk applicationsDpdk applications
Dpdk applications
Vipin Varghese
 
Ufs whitepaper
Ufs whitepaperUfs whitepaper
Ufs whitepaper
Arasan Chip Systems
 
Trusted firmware deep_dive_v1.0_
Trusted firmware deep_dive_v1.0_Trusted firmware deep_dive_v1.0_
Trusted firmware deep_dive_v1.0_
Linaro
 

What's hot (20)

Hands-on ethernet driver
Hands-on ethernet driverHands-on ethernet driver
Hands-on ethernet driver
 
Lagopus + DockerのDPDK接続
Lagopus + DockerのDPDK接続Lagopus + DockerのDPDK接続
Lagopus + DockerのDPDK接続
 
Linux Network Stack
Linux Network StackLinux Network Stack
Linux Network Stack
 
Making Linux do Hard Real-time
Making Linux do Hard Real-timeMaking Linux do Hard Real-time
Making Linux do Hard Real-time
 
P4, EPBF, and Linux TC Offload
P4, EPBF, and Linux TC OffloadP4, EPBF, and Linux TC Offload
P4, EPBF, and Linux TC Offload
 
Solaris Kernel Debugging V1.0
Solaris Kernel Debugging V1.0Solaris Kernel Debugging V1.0
Solaris Kernel Debugging V1.0
 
Embedding Chromium into AGL demo platform with WAM
Embedding Chromium into AGL demo platform with WAMEmbedding Chromium into AGL demo platform with WAM
Embedding Chromium into AGL demo platform with WAM
 
Open vSwitch - Stateful Connection Tracking & Stateful NAT
Open vSwitch - Stateful Connection Tracking & Stateful NATOpen vSwitch - Stateful Connection Tracking & Stateful NAT
Open vSwitch - Stateful Connection Tracking & Stateful NAT
 
Introduction to Linux
Introduction to LinuxIntroduction to Linux
Introduction to Linux
 
Network Programming: Data Plane Development Kit (DPDK)
Network Programming: Data Plane Development Kit (DPDK)Network Programming: Data Plane Development Kit (DPDK)
Network Programming: Data Plane Development Kit (DPDK)
 
DockerCon 2017 - Cilium - Network and Application Security with BPF and XDP
DockerCon 2017 - Cilium - Network and Application Security with BPF and XDPDockerCon 2017 - Cilium - Network and Application Security with BPF and XDP
DockerCon 2017 - Cilium - Network and Application Security with BPF and XDP
 
BUD17-400: Secure Data Path with OPTEE
BUD17-400: Secure Data Path with OPTEE BUD17-400: Secure Data Path with OPTEE
BUD17-400: Secure Data Path with OPTEE
 
Character Drivers
Character DriversCharacter Drivers
Character Drivers
 
LAS16-402: ARM Trusted Firmware – from Enterprise to Embedded
LAS16-402: ARM Trusted Firmware – from Enterprise to EmbeddedLAS16-402: ARM Trusted Firmware – from Enterprise to Embedded
LAS16-402: ARM Trusted Firmware – from Enterprise to Embedded
 
BPF Hardware Offload Deep Dive
BPF Hardware Offload Deep DiveBPF Hardware Offload Deep Dive
BPF Hardware Offload Deep Dive
 
Pushing Packets - How do the ML2 Mechanism Drivers Stack Up
Pushing Packets - How do the ML2 Mechanism Drivers Stack UpPushing Packets - How do the ML2 Mechanism Drivers Stack Up
Pushing Packets - How do the ML2 Mechanism Drivers Stack Up
 
PCI Drivers
PCI DriversPCI Drivers
PCI Drivers
 
Dpdk applications
Dpdk applicationsDpdk applications
Dpdk applications
 
Ufs whitepaper
Ufs whitepaperUfs whitepaper
Ufs whitepaper
 
Trusted firmware deep_dive_v1.0_
Trusted firmware deep_dive_v1.0_Trusted firmware deep_dive_v1.0_
Trusted firmware deep_dive_v1.0_
 

Similar to What is the merge window?

Test parallelization using Jenkins
Test parallelization using JenkinsTest parallelization using Jenkins
Test parallelization using Jenkins
Rogue Wave Software
 
Continuous Deployment
Continuous DeploymentContinuous Deployment
Continuous Deployment
Brian Moon
 
SQL Server DevOps Jumpstart
SQL Server DevOps JumpstartSQL Server DevOps Jumpstart
SQL Server DevOps Jumpstart
Ori Donner
 
It’s 2021. Why are we -still- rebooting for patches? A look at Live Patching.
It’s 2021. Why are we -still- rebooting for patches? A look at Live Patching.It’s 2021. Why are we -still- rebooting for patches? A look at Live Patching.
It’s 2021. Why are we -still- rebooting for patches? A look at Live Patching.
All Things Open
 
Introduction to GOCD - Amulya Sharma
Introduction to GOCD - Amulya SharmaIntroduction to GOCD - Amulya Sharma
Introduction to GOCD - Amulya Sharma
Amulya Sharma
 
Achieving Full Stack DevOps at Colonial Life
Achieving Full Stack DevOps at Colonial Life Achieving Full Stack DevOps at Colonial Life
Achieving Full Stack DevOps at Colonial Life
DevOps.com
 
Apereo OAE development and release process
Apereo OAE development and release processApereo OAE development and release process
Apereo OAE development and release process
Bert Pareyn
 
Versioning for Developers
Versioning for DevelopersVersioning for Developers
Versioning for Developers
Michelangelo van Dam
 
Tips for Installing Cognos Analytics 11.2.1x
Tips for Installing Cognos Analytics 11.2.1xTips for Installing Cognos Analytics 11.2.1x
Tips for Installing Cognos Analytics 11.2.1x
Senturus
 
SynapseIndia drupal presentation on drupal info
SynapseIndia drupal  presentation on drupal infoSynapseIndia drupal  presentation on drupal info
SynapseIndia drupal presentation on drupal info
Synapseindiappsdevelopment
 
Understand release engineering
Understand release engineeringUnderstand release engineering
Understand release engineeringgaoliang641
 
Deploying at will - SEI
 Deploying at will - SEI Deploying at will - SEI
Long Term Support the Eclipse Way
Long Term Support the Eclipse WayLong Term Support the Eclipse Way
Long Term Support the Eclipse Way
Ralph Mueller
 
Maintenance des branches stables du noyau
Maintenance des branches stables du noyauMaintenance des branches stables du noyau
Maintenance des branches stables du noyau
Anne Nicolas
 
Continuous Deployment of your Application @SpringOne
Continuous Deployment of your Application @SpringOneContinuous Deployment of your Application @SpringOne
Continuous Deployment of your Application @SpringOne
ciberkleid
 
Source control - what you need to know
Source control - what you need to knowSource control - what you need to know
Source control - what you need to know
daveymni
 
Software Quality Management of Opensource Project ( ubuntu and django )
Software Quality Management of Opensource Project ( ubuntu and django )Software Quality Management of Opensource Project ( ubuntu and django )
Software Quality Management of Opensource Project ( ubuntu and django )uisp dsin
 
Lessons from Contributing to WebKit and Blink
Lessons from Contributing to WebKit and BlinkLessons from Contributing to WebKit and Blink
Lessons from Contributing to WebKit and Blink
Bruno Abinader
 
Automating the Quality
Automating the QualityAutomating the Quality
Automating the Quality
Dejan Vukmirovic
 

Similar to What is the merge window? (20)

Test parallelization using Jenkins
Test parallelization using JenkinsTest parallelization using Jenkins
Test parallelization using Jenkins
 
Continuous Deployment
Continuous DeploymentContinuous Deployment
Continuous Deployment
 
SQL Server DevOps Jumpstart
SQL Server DevOps JumpstartSQL Server DevOps Jumpstart
SQL Server DevOps Jumpstart
 
It’s 2021. Why are we -still- rebooting for patches? A look at Live Patching.
It’s 2021. Why are we -still- rebooting for patches? A look at Live Patching.It’s 2021. Why are we -still- rebooting for patches? A look at Live Patching.
It’s 2021. Why are we -still- rebooting for patches? A look at Live Patching.
 
Introduction to GOCD - Amulya Sharma
Introduction to GOCD - Amulya SharmaIntroduction to GOCD - Amulya Sharma
Introduction to GOCD - Amulya Sharma
 
Achieving Full Stack DevOps at Colonial Life
Achieving Full Stack DevOps at Colonial Life Achieving Full Stack DevOps at Colonial Life
Achieving Full Stack DevOps at Colonial Life
 
Introduction to Go
Introduction to GoIntroduction to Go
Introduction to Go
 
Apereo OAE development and release process
Apereo OAE development and release processApereo OAE development and release process
Apereo OAE development and release process
 
Versioning for Developers
Versioning for DevelopersVersioning for Developers
Versioning for Developers
 
Tips for Installing Cognos Analytics 11.2.1x
Tips for Installing Cognos Analytics 11.2.1xTips for Installing Cognos Analytics 11.2.1x
Tips for Installing Cognos Analytics 11.2.1x
 
SynapseIndia drupal presentation on drupal info
SynapseIndia drupal  presentation on drupal infoSynapseIndia drupal  presentation on drupal info
SynapseIndia drupal presentation on drupal info
 
Understand release engineering
Understand release engineeringUnderstand release engineering
Understand release engineering
 
Deploying at will - SEI
 Deploying at will - SEI Deploying at will - SEI
Deploying at will - SEI
 
Long Term Support the Eclipse Way
Long Term Support the Eclipse WayLong Term Support the Eclipse Way
Long Term Support the Eclipse Way
 
Maintenance des branches stables du noyau
Maintenance des branches stables du noyauMaintenance des branches stables du noyau
Maintenance des branches stables du noyau
 
Continuous Deployment of your Application @SpringOne
Continuous Deployment of your Application @SpringOneContinuous Deployment of your Application @SpringOne
Continuous Deployment of your Application @SpringOne
 
Source control - what you need to know
Source control - what you need to knowSource control - what you need to know
Source control - what you need to know
 
Software Quality Management of Opensource Project ( ubuntu and django )
Software Quality Management of Opensource Project ( ubuntu and django )Software Quality Management of Opensource Project ( ubuntu and django )
Software Quality Management of Opensource Project ( ubuntu and django )
 
Lessons from Contributing to WebKit and Blink
Lessons from Contributing to WebKit and BlinkLessons from Contributing to WebKit and Blink
Lessons from Contributing to WebKit and Blink
 
Automating the Quality
Automating the QualityAutomating the Quality
Automating the Quality
 

More from Macpaul Lin

How to build a community in a company blue&macpaul coscup2015
How to build a community in a company blue&macpaul coscup2015How to build a community in a company blue&macpaul coscup2015
How to build a community in a company blue&macpaul coscup2015
Macpaul Lin
 
U boot 程式碼打掃計畫
U boot 程式碼打掃計畫U boot 程式碼打掃計畫
U boot 程式碼打掃計畫
Macpaul Lin
 
U boot source clean up project how-to
U boot source clean up project how-toU boot source clean up project how-to
U boot source clean up project how-toMacpaul Lin
 
USB Specification 2.0 - Chapter 9 - Device Framework
USB Specification 2.0 - Chapter 9 - Device FrameworkUSB Specification 2.0 - Chapter 9 - Device Framework
USB Specification 2.0 - Chapter 9 - Device FrameworkMacpaul Lin
 
U boot porting guide for SoC
U boot porting guide for SoCU boot porting guide for SoC
U boot porting guide for SoCMacpaul Lin
 
Bootstrap process of u boot (NDS32 RISC CPU)
Bootstrap process of u boot (NDS32 RISC CPU)Bootstrap process of u boot (NDS32 RISC CPU)
Bootstrap process of u boot (NDS32 RISC CPU)
Macpaul Lin
 
政黨票的故事
政黨票的故事政黨票的故事
政黨票的故事Macpaul Lin
 
Why sending patches back is so important
Why sending patches back is so importantWhy sending patches back is so important
Why sending patches back is so importantMacpaul Lin
 
從u-boot 移植 NDS32 談 嵌入式系統開放原始碼開發的 一些經驗
從u-boot 移植 NDS32 談 嵌入式系統開放原始碼開發的 一些經驗從u-boot 移植 NDS32 談 嵌入式系統開放原始碼開發的 一些經驗
從u-boot 移植 NDS32 談 嵌入式系統開放原始碼開發的 一些經驗Macpaul Lin
 
OpenWRT, A value-add base solution for your product. (2nd, Macpual)
OpenWRT, A value-add base solution for your product. (2nd, Macpual)OpenWRT, A value-add base solution for your product. (2nd, Macpual)
OpenWRT, A value-add base solution for your product. (2nd, Macpual)Macpaul Lin
 

More from Macpaul Lin (10)

How to build a community in a company blue&macpaul coscup2015
How to build a community in a company blue&macpaul coscup2015How to build a community in a company blue&macpaul coscup2015
How to build a community in a company blue&macpaul coscup2015
 
U boot 程式碼打掃計畫
U boot 程式碼打掃計畫U boot 程式碼打掃計畫
U boot 程式碼打掃計畫
 
U boot source clean up project how-to
U boot source clean up project how-toU boot source clean up project how-to
U boot source clean up project how-to
 
USB Specification 2.0 - Chapter 9 - Device Framework
USB Specification 2.0 - Chapter 9 - Device FrameworkUSB Specification 2.0 - Chapter 9 - Device Framework
USB Specification 2.0 - Chapter 9 - Device Framework
 
U boot porting guide for SoC
U boot porting guide for SoCU boot porting guide for SoC
U boot porting guide for SoC
 
Bootstrap process of u boot (NDS32 RISC CPU)
Bootstrap process of u boot (NDS32 RISC CPU)Bootstrap process of u boot (NDS32 RISC CPU)
Bootstrap process of u boot (NDS32 RISC CPU)
 
政黨票的故事
政黨票的故事政黨票的故事
政黨票的故事
 
Why sending patches back is so important
Why sending patches back is so importantWhy sending patches back is so important
Why sending patches back is so important
 
從u-boot 移植 NDS32 談 嵌入式系統開放原始碼開發的 一些經驗
從u-boot 移植 NDS32 談 嵌入式系統開放原始碼開發的 一些經驗從u-boot 移植 NDS32 談 嵌入式系統開放原始碼開發的 一些經驗
從u-boot 移植 NDS32 談 嵌入式系統開放原始碼開發的 一些經驗
 
OpenWRT, A value-add base solution for your product. (2nd, Macpual)
OpenWRT, A value-add base solution for your product. (2nd, Macpual)OpenWRT, A value-add base solution for your product. (2nd, Macpual)
OpenWRT, A value-add base solution for your product. (2nd, Macpual)
 

Recently uploaded

Recycled Concrete Aggregate in Construction Part III
Recycled Concrete Aggregate in Construction Part IIIRecycled Concrete Aggregate in Construction Part III
Recycled Concrete Aggregate in Construction Part III
Aditya Rajan Patra
 
Unbalanced Three Phase Systems and circuits.pptx
Unbalanced Three Phase Systems and circuits.pptxUnbalanced Three Phase Systems and circuits.pptx
Unbalanced Three Phase Systems and circuits.pptx
ChristineTorrepenida1
 
MCQ Soil mechanics questions (Soil shear strength).pdf
MCQ Soil mechanics questions (Soil shear strength).pdfMCQ Soil mechanics questions (Soil shear strength).pdf
MCQ Soil mechanics questions (Soil shear strength).pdf
Osamah Alsalih
 
一比一原版(IIT毕业证)伊利诺伊理工大学毕业证成绩单专业办理
一比一原版(IIT毕业证)伊利诺伊理工大学毕业证成绩单专业办理一比一原版(IIT毕业证)伊利诺伊理工大学毕业证成绩单专业办理
一比一原版(IIT毕业证)伊利诺伊理工大学毕业证成绩单专业办理
zwunae
 
Fundamentals of Electric Drives and its applications.pptx
Fundamentals of Electric Drives and its applications.pptxFundamentals of Electric Drives and its applications.pptx
Fundamentals of Electric Drives and its applications.pptx
manasideore6
 
Governing Equations for Fundamental Aerodynamics_Anderson2010.pdf
Governing Equations for Fundamental Aerodynamics_Anderson2010.pdfGoverning Equations for Fundamental Aerodynamics_Anderson2010.pdf
Governing Equations for Fundamental Aerodynamics_Anderson2010.pdf
WENKENLI1
 
Harnessing WebAssembly for Real-time Stateless Streaming Pipelines
Harnessing WebAssembly for Real-time Stateless Streaming PipelinesHarnessing WebAssembly for Real-time Stateless Streaming Pipelines
Harnessing WebAssembly for Real-time Stateless Streaming Pipelines
Christina Lin
 
Heap Sort (SS).ppt FOR ENGINEERING GRADUATES, BCA, MCA, MTECH, BSC STUDENTS
Heap Sort (SS).ppt FOR ENGINEERING GRADUATES, BCA, MCA, MTECH, BSC STUDENTSHeap Sort (SS).ppt FOR ENGINEERING GRADUATES, BCA, MCA, MTECH, BSC STUDENTS
Heap Sort (SS).ppt FOR ENGINEERING GRADUATES, BCA, MCA, MTECH, BSC STUDENTS
Soumen Santra
 
一比一原版(Otago毕业证)奥塔哥大学毕业证成绩单如何办理
一比一原版(Otago毕业证)奥塔哥大学毕业证成绩单如何办理一比一原版(Otago毕业证)奥塔哥大学毕业证成绩单如何办理
一比一原版(Otago毕业证)奥塔哥大学毕业证成绩单如何办理
dxobcob
 
Building Electrical System Design & Installation
Building Electrical System Design & InstallationBuilding Electrical System Design & Installation
Building Electrical System Design & Installation
symbo111
 
Water billing management system project report.pdf
Water billing management system project report.pdfWater billing management system project report.pdf
Water billing management system project report.pdf
Kamal Acharya
 
DESIGN AND ANALYSIS OF A CAR SHOWROOM USING E TABS
DESIGN AND ANALYSIS OF A CAR SHOWROOM USING E TABSDESIGN AND ANALYSIS OF A CAR SHOWROOM USING E TABS
DESIGN AND ANALYSIS OF A CAR SHOWROOM USING E TABS
itech2017
 
KuberTENes Birthday Bash Guadalajara - K8sGPT first impressions
KuberTENes Birthday Bash Guadalajara - K8sGPT first impressionsKuberTENes Birthday Bash Guadalajara - K8sGPT first impressions
KuberTENes Birthday Bash Guadalajara - K8sGPT first impressions
Victor Morales
 
Swimming pool mechanical components design.pptx
Swimming pool  mechanical components design.pptxSwimming pool  mechanical components design.pptx
Swimming pool mechanical components design.pptx
yokeleetan1
 
RAT: Retrieval Augmented Thoughts Elicit Context-Aware Reasoning in Long-Hori...
RAT: Retrieval Augmented Thoughts Elicit Context-Aware Reasoning in Long-Hori...RAT: Retrieval Augmented Thoughts Elicit Context-Aware Reasoning in Long-Hori...
RAT: Retrieval Augmented Thoughts Elicit Context-Aware Reasoning in Long-Hori...
thanhdowork
 
一比一原版(UofT毕业证)多伦多大学毕业证成绩单如何办理
一比一原版(UofT毕业证)多伦多大学毕业证成绩单如何办理一比一原版(UofT毕业证)多伦多大学毕业证成绩单如何办理
一比一原版(UofT毕业证)多伦多大学毕业证成绩单如何办理
ydteq
 
Technical Drawings introduction to drawing of prisms
Technical Drawings introduction to drawing of prismsTechnical Drawings introduction to drawing of prisms
Technical Drawings introduction to drawing of prisms
heavyhaig
 
一比一原版(UMich毕业证)密歇根大学|安娜堡分校毕业证成绩单专业办理
一比一原版(UMich毕业证)密歇根大学|安娜堡分校毕业证成绩单专业办理一比一原版(UMich毕业证)密歇根大学|安娜堡分校毕业证成绩单专业办理
一比一原版(UMich毕业证)密歇根大学|安娜堡分校毕业证成绩单专业办理
zwunae
 
Tutorial for 16S rRNA Gene Analysis with QIIME2.pdf
Tutorial for 16S rRNA Gene Analysis with QIIME2.pdfTutorial for 16S rRNA Gene Analysis with QIIME2.pdf
Tutorial for 16S rRNA Gene Analysis with QIIME2.pdf
aqil azizi
 
6th International Conference on Machine Learning & Applications (CMLA 2024)
6th International Conference on Machine Learning & Applications (CMLA 2024)6th International Conference on Machine Learning & Applications (CMLA 2024)
6th International Conference on Machine Learning & Applications (CMLA 2024)
ClaraZara1
 

Recently uploaded (20)

Recycled Concrete Aggregate in Construction Part III
Recycled Concrete Aggregate in Construction Part IIIRecycled Concrete Aggregate in Construction Part III
Recycled Concrete Aggregate in Construction Part III
 
Unbalanced Three Phase Systems and circuits.pptx
Unbalanced Three Phase Systems and circuits.pptxUnbalanced Three Phase Systems and circuits.pptx
Unbalanced Three Phase Systems and circuits.pptx
 
MCQ Soil mechanics questions (Soil shear strength).pdf
MCQ Soil mechanics questions (Soil shear strength).pdfMCQ Soil mechanics questions (Soil shear strength).pdf
MCQ Soil mechanics questions (Soil shear strength).pdf
 
一比一原版(IIT毕业证)伊利诺伊理工大学毕业证成绩单专业办理
一比一原版(IIT毕业证)伊利诺伊理工大学毕业证成绩单专业办理一比一原版(IIT毕业证)伊利诺伊理工大学毕业证成绩单专业办理
一比一原版(IIT毕业证)伊利诺伊理工大学毕业证成绩单专业办理
 
Fundamentals of Electric Drives and its applications.pptx
Fundamentals of Electric Drives and its applications.pptxFundamentals of Electric Drives and its applications.pptx
Fundamentals of Electric Drives and its applications.pptx
 
Governing Equations for Fundamental Aerodynamics_Anderson2010.pdf
Governing Equations for Fundamental Aerodynamics_Anderson2010.pdfGoverning Equations for Fundamental Aerodynamics_Anderson2010.pdf
Governing Equations for Fundamental Aerodynamics_Anderson2010.pdf
 
Harnessing WebAssembly for Real-time Stateless Streaming Pipelines
Harnessing WebAssembly for Real-time Stateless Streaming PipelinesHarnessing WebAssembly for Real-time Stateless Streaming Pipelines
Harnessing WebAssembly for Real-time Stateless Streaming Pipelines
 
Heap Sort (SS).ppt FOR ENGINEERING GRADUATES, BCA, MCA, MTECH, BSC STUDENTS
Heap Sort (SS).ppt FOR ENGINEERING GRADUATES, BCA, MCA, MTECH, BSC STUDENTSHeap Sort (SS).ppt FOR ENGINEERING GRADUATES, BCA, MCA, MTECH, BSC STUDENTS
Heap Sort (SS).ppt FOR ENGINEERING GRADUATES, BCA, MCA, MTECH, BSC STUDENTS
 
一比一原版(Otago毕业证)奥塔哥大学毕业证成绩单如何办理
一比一原版(Otago毕业证)奥塔哥大学毕业证成绩单如何办理一比一原版(Otago毕业证)奥塔哥大学毕业证成绩单如何办理
一比一原版(Otago毕业证)奥塔哥大学毕业证成绩单如何办理
 
Building Electrical System Design & Installation
Building Electrical System Design & InstallationBuilding Electrical System Design & Installation
Building Electrical System Design & Installation
 
Water billing management system project report.pdf
Water billing management system project report.pdfWater billing management system project report.pdf
Water billing management system project report.pdf
 
DESIGN AND ANALYSIS OF A CAR SHOWROOM USING E TABS
DESIGN AND ANALYSIS OF A CAR SHOWROOM USING E TABSDESIGN AND ANALYSIS OF A CAR SHOWROOM USING E TABS
DESIGN AND ANALYSIS OF A CAR SHOWROOM USING E TABS
 
KuberTENes Birthday Bash Guadalajara - K8sGPT first impressions
KuberTENes Birthday Bash Guadalajara - K8sGPT first impressionsKuberTENes Birthday Bash Guadalajara - K8sGPT first impressions
KuberTENes Birthday Bash Guadalajara - K8sGPT first impressions
 
Swimming pool mechanical components design.pptx
Swimming pool  mechanical components design.pptxSwimming pool  mechanical components design.pptx
Swimming pool mechanical components design.pptx
 
RAT: Retrieval Augmented Thoughts Elicit Context-Aware Reasoning in Long-Hori...
RAT: Retrieval Augmented Thoughts Elicit Context-Aware Reasoning in Long-Hori...RAT: Retrieval Augmented Thoughts Elicit Context-Aware Reasoning in Long-Hori...
RAT: Retrieval Augmented Thoughts Elicit Context-Aware Reasoning in Long-Hori...
 
一比一原版(UofT毕业证)多伦多大学毕业证成绩单如何办理
一比一原版(UofT毕业证)多伦多大学毕业证成绩单如何办理一比一原版(UofT毕业证)多伦多大学毕业证成绩单如何办理
一比一原版(UofT毕业证)多伦多大学毕业证成绩单如何办理
 
Technical Drawings introduction to drawing of prisms
Technical Drawings introduction to drawing of prismsTechnical Drawings introduction to drawing of prisms
Technical Drawings introduction to drawing of prisms
 
一比一原版(UMich毕业证)密歇根大学|安娜堡分校毕业证成绩单专业办理
一比一原版(UMich毕业证)密歇根大学|安娜堡分校毕业证成绩单专业办理一比一原版(UMich毕业证)密歇根大学|安娜堡分校毕业证成绩单专业办理
一比一原版(UMich毕业证)密歇根大学|安娜堡分校毕业证成绩单专业办理
 
Tutorial for 16S rRNA Gene Analysis with QIIME2.pdf
Tutorial for 16S rRNA Gene Analysis with QIIME2.pdfTutorial for 16S rRNA Gene Analysis with QIIME2.pdf
Tutorial for 16S rRNA Gene Analysis with QIIME2.pdf
 
6th International Conference on Machine Learning & Applications (CMLA 2024)
6th International Conference on Machine Learning & Applications (CMLA 2024)6th International Conference on Machine Learning & Applications (CMLA 2024)
6th International Conference on Machine Learning & Applications (CMLA 2024)
 

What is the merge window?

  • 1. What is the “merge window”? Macpaul Lin 2021/11/12 macpaul <at> gmail.com CC0
  • 2. What is the “merge window”? • According to Wikipedia • https://en.wikipedia.org/wiki/Merge_window • The merge window is a software development process which is sometimes used by large projects. • The merge window is a period of time that occurs directly after the release of a new version of the software. During this time, many patches are merged and hence have a long time to get scrutinized and tested before the next release. 5.14 5.15-rc1 5.15-rc2 5.15-rc3 5.15-rc4 5.15-rc5 5.15-rc6 5.15-rc7 5.15 5.16-rc1 merge window merge window
  • 3. What is the “merge window”? • From Wikipedia • The Linux kernel has used the merge window process since July 2005 with the release of version 2.6.14. Since then, every 2.6.*, 3.* and 4.* release has been followed by a two-week merge window.[1] • This causes much work for the project maintainers who have to merge all the patches. The process may be split up with people who inspect, approve and merge the patches. • Ref • https://www.kernel.org/doc/html/latest/process/2.Process.html?hig hlight=merge%20window
  • 4. What is the “merge window”? • According to u-boot website • https://www.denx.de/wiki/U-Boot/DevelopmentProcess • The Merge Window is the period when new patches get submitted (and hopefully accepted) for inclusion into U- Boot mainline. • This is the only time when new code (like support for new processors or new boards, or other new features or reorganization of code) is accepted.
  • 5. Why merge window is important for developing? • Can’t we send new features everyday? • Yes you can, but… • Only during that period, maintainers will review patch quickly. • Your patch will still be reviewed, but it won’t be applied to the coming release tree. • Once the patch has been accepted, it will be applied to “–next” branch owned by subsystem maintainer. • You will usually get short feedback latency during merge window. • “-rcX” (release candidate) tags means QC (testing)! • Everyone is doing QC after the merge window. • Testing. • Bug fixing. • New bug fix will be applied to subsystem’s release tree.
  • 6. Why merge window is important for developing? • The story • Linux has bad old days before • Build fail everyday, even fix build fail twice a day. • Couldn’t start testing. • https://web.archive.org/web/20120513035631/http://kerneltrap.org/ Linux/Active_Merge_Windows
  • 7. Why merge window is important for developing? • People “do test” Linux during QC period before release! • Mainline Linux has its own CI. • Build/merges tests. • Booting tests. • Subsystem function tests. • Who will run these tests? • Linux foundation. • Maintainers. • Contribute companies.
  • 8. Merge window is for new ready patch. • Please send patch that you think it is ready to be merged. • These patches should be checked by checkpatch.pl and other tools. • Maintainers are busy at this moment. • Patch will be accepted with higher chances during the merge window. • Because new feature cannot get high priority out of the merge window. • Maintainer will request more refactor out of the merge window.
  • 9. What is the most important merge window? • Linux will release a LTS version every year. • https://www.kernel.org/category/releases.html • LTS means long-term support for stable versions. • Who will use LTS kernel? • Distros will prepare LTS/stable version based on LTS Linux kernel version. • Google - Android will use LTS version for ACK developing. • Other open-source projects – Yocto. • LTS also means less maintain effort, especially security patches and backport bug fixes. • Everyone will focus on bug fix for LTS versions. • LTS is usually come out during Oct~Dec. • Everyone can have his own vacation after LTS is out. (just kidding)
  • 10. How is merge/debugging ratio? • Linux will be released every 2~3 months (8~12 weeks) • The merge window is only 2 weeks. • The ratio is 1:3~1:5 (25% merge, 75% debugging)
  • 11. Release early, Release often. Open source development 101.
  • 12. Release early, release often. • Submit patch with basic function at the beginning. • Split patch into small pieces. • During the review, • merge patches into a single large patch is easier. • split will be slightly difficult and much manual work. • No one can review a large bunch of changes in one time. • Get feedback sooner for required changes • Architecture, code placement, and from its logic to variable typo. • Each developer will gain experience when they submit hand-on patches.
  • 13. Case study Stmmac Ethernet driver. • Mail-Thread • https://lkml.org/lkml/2021/11/12/133 • The same hardware IP for mt2712 and mt8195. • Support mt2712 in mainline with some specific logics. • Did’t support mt8195 before 5.16. • Software task • Abstract the common code. • Add probe functions, compatible strings and new API hooks (parameters) for mt8195. • Improve document to full fill new kernel standards. • Schedule • 1 week for patches preparing (5 patches) • Parameter and function confirmation with designers. • 3 days for submit patches and reviewing. (Currently v3: 7 patches)
  • 14. Case study Stmmac Ethernet driver. • Success reasons • Based on previous work on mt2712. • Upstream with landing on new platform. • The driver author is positive to get new platform upstream. • RD’s manager support upstream task as a highest priority request because of merge window is coming.
  • 15. Case study Improve performance for large data transfer for usb-serial. • Mail-thread • https://lkml.org/lkml/2020/6/24/150 • Software task • Just fix some hard coded values into definitions with larger values. • Fail reason (Maintainer’s reply) • Since this can only be applied for the next merge window, it would be much better if you work rework…
  • 16. Resource allocation align each merge window. • Ideally, we should upstream the patch after press release of a new platform/product. • After internal QC done. • After press release. • After customer design-in and starting to ship the platform to the market. • But RD will get issues from customer after QC done, and then, it comes the other new tasks for new platform/product.
  • 17. Resource allocation align each merge window. 5.14 5.15-rc1 5.15-rc2 5.15-rc3 5.15-rc4 5.15-rc5 5.15-rc6 5.15-rc7 5.15 5.16-rc1 merge window merge window Prepare patch Allocate resource Bug fix Test and debug Refactor, and add new features. Submit, review, and Revise! Patch merged. Life is happy now.
  • 18. Resource allocation align each merge window. • Why don’t you allocate resource align the merge window? • You’ll get 5~6 chances to submit new feature during a year with higher efficiency. • RD’s manager should help allocate resource for developer “before” and “during” the merge window. • Small and basic functions / refactor are welcome. • Each merge window means a chance for refactoring the legacy code and adopt to new kernel design. • Reduce migration effort. • Each line of code you submit, won’t be the tear next time when you doing kernel migration (hopefully).
  • 19. Q & A Patch are welcome. Fork are welcome.