SlideShare a Scribd company logo
(Kernel) Upstreaming 101:
Social and Technical Lessons
Oct 29, 2012
Deepak Saxena
dsaxena@plexity.net
The Problem
● Ever increasing number of Linux developers!
● Specially in the ARM world
● Lots of good technical documentation!
● Linux Device Drivers - http://lwn.net/Kernel/LDD3/
● Understanding the Linux Kernel - http://goo.gl/p4pM4
● Linux Kernel Development - http://goo.gl/0YY27
● Organizations beginning to understand technical
and business benefits of getting code upstream!
● More developers interested in working upstream!
● This is a problem?
The Issues...
● Using documented APIs and infrastructure is easy
● Creating new APIs and infrastructure is hard
● Creating good APIs and infrastructure is harder
● Creating good APIs and infrastructure for upstream is even harder
● Many SOC problems require creating new subsystems
● Or modifying existing ones to support new features
● Books tend to be x86 oriented
● Do not cover drivers common to other arches: i2c, spi, etc
● Make assumptions about underlying HW
● (See Upcoming Porting Linux by Jon Masters, ETA 2013)
● Working with the community is not documented
● Much tribal knowledge on the process
● Same mistakes are often made by new participants
Today's Goals
● Provide an overview of upstreaming code
● Social and Technical
● From Design to Submitting Patches
● How does the process differ from closed development?
● Some general guidelines on design and coding.
● Some low level details on submitting patches.
● Geared at those who are completely new to this world
● For both Managers and Engineers
Who Am I? Why Listen To Me?
● Kernel Working Group TL
● I make spreadsheets and run meetings
● Before that:
● 12 years kernel experience
● One of first folks at Intel to work on Linux drivers
● (though a little under the radar...)
● Developed and maintained IXP* Xscale NPU ports
● Kernel maintainer at MontaVista for several years
● Reviewed all patches for distro kernel
● Reviewed thousands of lines of vendor BSP code
● OLPC kernel maintainer for about 1.5 years
● Was active in reviewing code upstream
● Have given similar talk at various conferences:
● Linux Bangalore, ELC, LinuxConf.au, Fosdem
V3.4
Who Exactly Is The Community?
(From list of top 3.4 contributors: http://lwn.net/Articles/496193/)
Upstream Development:
The Right and Wrong Way
3.x Release 3.y+1-rc1 Release 3.y+1 Release
2 Week Merge Window 6-12 Week Stabilization
Your Development
Starts Here
Months to Years...
If you wait until this window to release your
code, expecting it to just go in, it will not (there
have been a few exceptions, but very rare). You
need to release your code early and often
during your development phase to get feedback
and fix issues as they come up.
Upstream Based Development
Socialize
Ideas
Post
Patches
Community
Review
Revise
Patches
Patches
OK?
Redesign or
Minor Fixes?
Start
Development
Redesign
YES
●Release Early, Release Often
●Iterate Design/Code Cycles
●Social component very important
●Discussion Time >> Coding Time
Avoiding Issues:
Don't Re-invent the Wheel
● Do Your Homework
● Many problems already have known solutions in Linux
● Driver APIs for specific functionality
● User/Kernel interfaces and system level tools
● It may just not be obvious at first.
● May not be documented in one single place
● May just be tribal knowledge
● Google is your friend here
● Read the code
● Ask the experts
● Release Early, Release Often to save your time!
Avoiding Issues:
Abstraction
● Don't Abstract Unnecessarily
● NO cross-OS HALs (unless extremely well designed)
● Don't add wrappers around existing in-kernel APIs
● Too much abstraction makes code harder to maintain
● Code is harder to read/debug
● Abstraction layer might have bugs
● Kernel API changes are hidden
● Difficult for someone new to get involved
● Release Early, Release Often to find these issues early!
Avoiding Issues:
Solving Common Problems
● Your HW is Not Unique
● Your HW may seem unique at first, however...
● Others are close by or will soon follow
● Most HW comes from similar research paths
● They will need same kernel support as you do
● Don't blindly add hooks to kernel for these features
● We don't want multiple implementations of same idea
● Need to add APIs at proper points in kernel
● Work with external developers to develop these
● Work with other HW vendors
● !THIS IS WHAT LINARO IS ALL ABOUT!
● Release Early, Release Often to find common solutions!
Avoiding Issues:
Good API Design
● Good APIs are:
● Easy to use & Hard to misuse
● Follow KISS Principle: Keep it Simple Stupid
● Should be very clear from just name, parameters
● Should be obvious when you use it wrongly
● Build time errors or obvious error values
● Just read Rusty's Blog Post:
● http://ozlabs.org/~rusty/index.cgi/tech/2008-03-30.html
● Release Early, Release often so you don't built a whole
stack of software on top of poorly designed APIs!
Practicalities:
How Do I Post Patches?
● Read Documentation/SubmittingPatches
● Send email to maintainers and list
● One cover email with:
● Summary of WHAT you are solving
● Explaining WHY you used your approach
● Talk about any dependent patchsets
● Don't assume knowledge about your technology area
● git log --diff (which includes patch headers)
● Always post patch against latest tip
● One message per patch
● Break up your changes into small units that build on each other
● If you are adding 100's of lines to one function...you're doing it wrong
● Refactor your patches using “git-rebase -i”
● Go to today's git session
Practicalities:
Who do I send my patches to?
● Use git-log and git-blame commands
● git-log to find out the last few people to make changes
● git-blame to find out if
● Read MAINTAINERS file in top level directory
● get-maintainers.pl script
● Will give you mailing list and maintainer address
~/src/linux$ ./scripts/get_maintainer.pl spi_message_queue.patch
Grant Likely <grant.likely@secretlab.ca> (maintainer:SPI SUBSYSTEM)
Randy Dunlap <rdunlap@xenotime.net> (maintainer:DOCUMENTATION)
spi­devel­general@lists.sourceforge.net (open list:SPI SUBSYSTEM)
linux­doc@vger.kernel.org (open list:DOCUMENTATION)
linux­kernel@vger.kernel.org (open list)
~/src/linux$ ./scripts/get_maintainer.pl ­f drivers/mfd/max8925­core.c
Samuel Ortiz <sameo@linux.intel.com> (supporter:MULTIFUNCTION DEV...)
linux­kernel@vger.kernel.org (open list)
:~/src/linux$ ./scripts/get_maintainer.pl ­f drivers/i2c
"Jean Delvare (PC drivers, core)" <khali@linux­fr.org> (maintainer:I2C SUBSYSTEM)
"Ben Dooks (embedded platforms)" <ben­linux@fluff.org> (maintainer:I2C SUBSYSTEM)
"Wolfram Sang (embedded platforms)" <w.sang@pengutronix.de> (maintainer:I2C SUBSYSTEM)
linux­i2c@vger.kernel.org (open list:I2C SUBSYSTEM)
linux­kernel@vger.kernel.org (open list)
Practicalities:
Using Signed-Off By
● Signed-off-by is legally binding!
● Make sure you have approval!
        Developer's Certificate of Origin 1.1
        By making a contribution to this project, I certify that:
        (a) The contribution was created in whole or in part by me and I
            have the right to submit it under the open source license
            indicated in the file; or
        (b) The contribution is based upon previous work that, to the best
            of my knowledge, is covered under an appropriate open source
            license and I have the right under that license to submit that
            work with modifications, whether created in whole or in part
            by me, under the same open source license (unless I am
            permitted to submit under a different license), as indicated
            in the file; or
        (c) The contribution was provided directly to me by some other
            person who certified (a), (b) or (c) and I have not modified
            it.
        (d) I understand and agree that this project and the contribution
            are public and that a record of the contribution (including all
            personal information I submit with it, including my sign­off) is
            maintained indefinitely and may be redistributed consistent with
            this project or the open source license(s) involved.
Practicalities:
Nobody Replied to My Patches!
● Be patient, don't expect an immediate response.
● Check mailing list archives:
● What's the typical response rate?
● Did the maintainer announce a vacation?
● Is this a merge window?
● Everyone is super busy, try again when it closes
● If it really seems like patches got dropped, email
the maintainer privately with a pointer to thread.
● If still no response:
● Ping one level up in tree.
● For drivers: Ping Greg KH
● Sometimes you just have to email patches to Linus directly
● Shames the maintainer, gets his/her attention
Practicalities:
Responses From Other Developers
● Acked-by: This person is OK with the changes.
Usually a maintainer of a subsystem affected by
patch.
● Reviewed-by: This person has done a thorough
technical review of the patch.
● Tested-by: This person did some level of testing.
Allows maintainer to know that it has been
validated on an environment other than original
author's.
Practicalities:
When Someone Attacks You :(
● It unfortunately happens :(
● Do NOT Escalate
● Take a step back
● Go work on something else
● Grab a beer (BUT NOT WHILE REPLYING!)
● Pick out the technical issues
● Get some help in reading the negative email
● Respond to just these
● Hint: Attending conferences and meeting people
face to face reduces the likelihood of this
happening.
Practicalities:
I can't Release Early and Often
● Ask for Private Reviews
● NDAs with upstream maintainer(s) and experts
● Linaro can possibly help here
● Several of these people are part of our organization
● We have good relationships with many upstream maintainers
● Can you release the concepts if not the code?
● Fine art of providing enough details w/o giving away the
secret sauce
● What are the high level problems you want to solve?
Summary
● The community is just a bunch of developers
● Like you, just with more experience of the process.
● Most of them want to help!
● Good kernel code:
● Doesn't re-invent what's already there
● Doesn't add abstraction for the sake of abstraction
● Has well-designed APIs
● Solves common problems
● Read the documentation and the code
● Participate openly and respectfully
● Ask us for help
● Release Early, Release Often :)
Questions or Comments?

More Related Content

What's hot

Build software like a bag of marbles, not a castle of LEGO®
Build software like a bag of marbles, not a castle of LEGO®Build software like a bag of marbles, not a castle of LEGO®
Build software like a bag of marbles, not a castle of LEGO®
Hannes Lowette
 
Breaking into Open Source and Linux: A USB 3.0 Success Story
Breaking into Open Source and Linux: A USB 3.0 Success StoryBreaking into Open Source and Linux: A USB 3.0 Success Story
Breaking into Open Source and Linux: A USB 3.0 Success Story
Sage Sharp
 
Docker
DockerDocker
Docker
Knoldus Inc.
 
Terratest with Terraform
Terratest with TerraformTerratest with Terraform
Terratest with Terraform
Knoldus Inc.
 
Joe Damato
Joe DamatoJoe Damato
Joe Damato
Ontico
 
The Development History of PVS-Studio for Linux
The Development History of PVS-Studio for LinuxThe Development History of PVS-Studio for Linux
The Development History of PVS-Studio for Linux
PVS-Studio
 
Continuous delivery of embedded systems embedded meetup
Continuous delivery of embedded systems   embedded meetupContinuous delivery of embedded systems   embedded meetup
Continuous delivery of embedded systems embedded meetup
Mike Long
 
OPNFV CI and Challenges: How we solved them - if we solved them at all!
OPNFV CI and Challenges: How we solved them - if we solved them at all!OPNFV CI and Challenges: How we solved them - if we solved them at all!
OPNFV CI and Challenges: How we solved them - if we solved them at all!
Fatih Degirmenci
 
Android lint presentation
Android lint presentationAndroid lint presentation
Android lint presentation
Sinan KOZAK
 
2013 10-28 php ug presentation - ci using phing and hudson
2013 10-28 php ug presentation - ci using phing and hudson2013 10-28 php ug presentation - ci using phing and hudson
2013 10-28 php ug presentation - ci using phing and hudsonShreeniwas Iyer
 
Automated deployment
Automated deploymentAutomated deployment
Automated deployment
Sardorbek Muminov
 
Linux on Open Source Hardware with Open Source chip design (36c3)
Linux on Open Source Hardware with Open Source chip design (36c3)Linux on Open Source Hardware with Open Source chip design (36c3)
Linux on Open Source Hardware with Open Source chip design (36c3)
Drew Fustini
 
The Professional Programmer
The Professional ProgrammerThe Professional Programmer
The Professional Programmer
Dave Cross
 
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
 
Getting Started Contributing to Docker
Getting Started Contributing to DockerGetting Started Contributing to Docker
Getting Started Contributing to Docker
Docker, Inc.
 
Performance profiling and testing of symfony application 2
Performance profiling and testing of symfony application 2Performance profiling and testing of symfony application 2
Performance profiling and testing of symfony application 2
Andrew Yatsenko
 
CI and CD with Jenkins
CI and CD with JenkinsCI and CD with Jenkins
CI and CD with Jenkins
Martin Málek
 
HKG15-902: Upstreaming 201
HKG15-902: Upstreaming 201HKG15-902: Upstreaming 201
HKG15-902: Upstreaming 201
Linaro
 
An Introduction To Python - Python, Print()
An Introduction To Python - Python, Print()An Introduction To Python - Python, Print()
An Introduction To Python - Python, Print()
Blue Elephant Consulting
 

What's hot (20)

Build software like a bag of marbles, not a castle of LEGO®
Build software like a bag of marbles, not a castle of LEGO®Build software like a bag of marbles, not a castle of LEGO®
Build software like a bag of marbles, not a castle of LEGO®
 
Breaking into Open Source and Linux: A USB 3.0 Success Story
Breaking into Open Source and Linux: A USB 3.0 Success StoryBreaking into Open Source and Linux: A USB 3.0 Success Story
Breaking into Open Source and Linux: A USB 3.0 Success Story
 
Docker
DockerDocker
Docker
 
Terratest with Terraform
Terratest with TerraformTerratest with Terraform
Terratest with Terraform
 
Joe Damato
Joe DamatoJoe Damato
Joe Damato
 
The Development History of PVS-Studio for Linux
The Development History of PVS-Studio for LinuxThe Development History of PVS-Studio for Linux
The Development History of PVS-Studio for Linux
 
Continuous delivery of embedded systems embedded meetup
Continuous delivery of embedded systems   embedded meetupContinuous delivery of embedded systems   embedded meetup
Continuous delivery of embedded systems embedded meetup
 
OPNFV CI and Challenges: How we solved them - if we solved them at all!
OPNFV CI and Challenges: How we solved them - if we solved them at all!OPNFV CI and Challenges: How we solved them - if we solved them at all!
OPNFV CI and Challenges: How we solved them - if we solved them at all!
 
Android lint presentation
Android lint presentationAndroid lint presentation
Android lint presentation
 
2013 10-28 php ug presentation - ci using phing and hudson
2013 10-28 php ug presentation - ci using phing and hudson2013 10-28 php ug presentation - ci using phing and hudson
2013 10-28 php ug presentation - ci using phing and hudson
 
Automated deployment
Automated deploymentAutomated deployment
Automated deployment
 
Linux on Open Source Hardware with Open Source chip design (36c3)
Linux on Open Source Hardware with Open Source chip design (36c3)Linux on Open Source Hardware with Open Source chip design (36c3)
Linux on Open Source Hardware with Open Source chip design (36c3)
 
The Professional Programmer
The Professional ProgrammerThe Professional Programmer
The Professional Programmer
 
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 )
 
Python lecture 01
Python lecture 01Python lecture 01
Python lecture 01
 
Getting Started Contributing to Docker
Getting Started Contributing to DockerGetting Started Contributing to Docker
Getting Started Contributing to Docker
 
Performance profiling and testing of symfony application 2
Performance profiling and testing of symfony application 2Performance profiling and testing of symfony application 2
Performance profiling and testing of symfony application 2
 
CI and CD with Jenkins
CI and CD with JenkinsCI and CD with Jenkins
CI and CD with Jenkins
 
HKG15-902: Upstreaming 201
HKG15-902: Upstreaming 201HKG15-902: Upstreaming 201
HKG15-902: Upstreaming 201
 
An Introduction To Python - Python, Print()
An Introduction To Python - Python, Print()An Introduction To Python - Python, Print()
An Introduction To Python - Python, Print()
 

Viewers also liked

Ying Chang Builders
Ying Chang BuildersYing Chang Builders
Ying Chang Builders
metcom
 
Primera b 2012
Primera b 2012Primera b 2012
Primera b 2012
chiledefutbol
 
Conocimientos basicos de Internet
Conocimientos basicos de InternetConocimientos basicos de Internet
Conocimientos basicos de Internet
Cristina Bogni
 
Notas finales udes grupo medellin 15 diseño de software
Notas finales udes grupo medellin 15 diseño de softwareNotas finales udes grupo medellin 15 diseño de software
Notas finales udes grupo medellin 15 diseño de softwarePaul Marin
 
Plan anual y plan de 1er Lapso programación compartido
Plan anual y plan de 1er Lapso programación compartidoPlan anual y plan de 1er Lapso programación compartido
Plan anual y plan de 1er Lapso programación compartidoHome
 
Taller Bases De Datos
Taller  Bases De DatosTaller  Bases De Datos
Taller Bases De Datosblaze0002
 
Convertir Moodle En Un Punto Itxaro Latasa
Convertir Moodle En Un Punto Itxaro LatasaConvertir Moodle En Un Punto Itxaro Latasa
Convertir Moodle En Un Punto Itxaro Latasa
MoodleMoot Euskadi
 

Viewers also liked (9)

Joomla
JoomlaJoomla
Joomla
 
Serie de fourier
Serie de fourierSerie de fourier
Serie de fourier
 
Ying Chang Builders
Ying Chang BuildersYing Chang Builders
Ying Chang Builders
 
Primera b 2012
Primera b 2012Primera b 2012
Primera b 2012
 
Conocimientos basicos de Internet
Conocimientos basicos de InternetConocimientos basicos de Internet
Conocimientos basicos de Internet
 
Notas finales udes grupo medellin 15 diseño de software
Notas finales udes grupo medellin 15 diseño de softwareNotas finales udes grupo medellin 15 diseño de software
Notas finales udes grupo medellin 15 diseño de software
 
Plan anual y plan de 1er Lapso programación compartido
Plan anual y plan de 1er Lapso programación compartidoPlan anual y plan de 1er Lapso programación compartido
Plan anual y plan de 1er Lapso programación compartido
 
Taller Bases De Datos
Taller  Bases De DatosTaller  Bases De Datos
Taller Bases De Datos
 
Convertir Moodle En Un Punto Itxaro Latasa
Convertir Moodle En Un Punto Itxaro LatasaConvertir Moodle En Un Punto Itxaro Latasa
Convertir Moodle En Un Punto Itxaro Latasa
 

Similar to LCE12: Intro Training: Upstreaming 101

Upstreaming 1013
Upstreaming 1013Upstreaming 1013
Upstreaming 1013
Linaro
 
Linux Kernel Introduction
Linux Kernel IntroductionLinux Kernel Introduction
Linux Kernel Introduction
Sage Sharp
 
Kernel Recipes 2015: How to choose a kernel to ship with a product
Kernel Recipes 2015: How to choose a kernel to ship with a productKernel Recipes 2015: How to choose a kernel to ship with a product
Kernel Recipes 2015: How to choose a kernel to ship with a product
Anne Nicolas
 
Ice breaker with dev ops
Ice breaker with dev opsIce breaker with dev ops
Ice breaker with dev ops
Mukta Aphale
 
LAS16-TR02: Upstreaming 101
LAS16-TR02: Upstreaming 101LAS16-TR02: Upstreaming 101
LAS16-TR02: Upstreaming 101
Linaro
 
icebreakerwithdevops-150218112943-conversion-gate02
icebreakerwithdevops-150218112943-conversion-gate02icebreakerwithdevops-150218112943-conversion-gate02
icebreakerwithdevops-150218112943-conversion-gate02Manohar Kumar
 
SFO15-TR2: Upstreaming 101
SFO15-TR2: Upstreaming 101SFO15-TR2: Upstreaming 101
SFO15-TR2: Upstreaming 101
Linaro
 
Get your FLOSS problems solved
Get your FLOSS problems solvedGet your FLOSS problems solved
Get your FLOSS problems solved
Rex Tsai
 
HKG15-901: Upstreaming 101
HKG15-901: Upstreaming 101HKG15-901: Upstreaming 101
HKG15-901: Upstreaming 101
Linaro
 
Upstreaming 101 - SFO17-TR02
Upstreaming 101 - SFO17-TR02Upstreaming 101 - SFO17-TR02
Upstreaming 101 - SFO17-TR02
Linaro
 
BUD17-TR02: Upstreaming 101
BUD17-TR02: Upstreaming 101 BUD17-TR02: Upstreaming 101
BUD17-TR02: Upstreaming 101
Linaro
 
Teaching Open Source In The University
Teaching Open Source In The UniversityTeaching Open Source In The University
Teaching Open Source In The University
Dominique Cimafranca
 
Getting started contributing to Apache Spark
Getting started contributing to Apache SparkGetting started contributing to Apache Spark
Getting started contributing to Apache Spark
Holden Karau
 
Software maintenance PyConPL 2016
Software maintenance PyConPL 2016Software maintenance PyConPL 2016
Software maintenance PyConPL 2016
Cesar Cardenas Desales
 
What is dev ops?
What is dev ops?What is dev ops?
What is dev ops?
Mukta Aphale
 
RootStack - Devfactory
RootStack - DevfactoryRootStack - Devfactory
RootStack - Devfactory
Kangaroot
 
Pentester++
Pentester++Pentester++
Pentester++
CTruncer
 
LCE13: Test and Validation Summit: The future of testing at Linaro
LCE13: Test and Validation Summit: The future of testing at LinaroLCE13: Test and Validation Summit: The future of testing at Linaro
LCE13: Test and Validation Summit: The future of testing at Linaro
Linaro
 
LCE13: Test and Validation Mini-Summit: Review Current Linaro Engineering Pro...
LCE13: Test and Validation Mini-Summit: Review Current Linaro Engineering Pro...LCE13: Test and Validation Mini-Summit: Review Current Linaro Engineering Pro...
LCE13: Test and Validation Mini-Summit: Review Current Linaro Engineering Pro...
Linaro
 

Similar to LCE12: Intro Training: Upstreaming 101 (20)

Upstreaming 1013
Upstreaming 1013Upstreaming 1013
Upstreaming 1013
 
Linux Kernel Introduction
Linux Kernel IntroductionLinux Kernel Introduction
Linux Kernel Introduction
 
Kernel Recipes 2015: How to choose a kernel to ship with a product
Kernel Recipes 2015: How to choose a kernel to ship with a productKernel Recipes 2015: How to choose a kernel to ship with a product
Kernel Recipes 2015: How to choose a kernel to ship with a product
 
Ice breaker with dev ops
Ice breaker with dev opsIce breaker with dev ops
Ice breaker with dev ops
 
LAS16-TR02: Upstreaming 101
LAS16-TR02: Upstreaming 101LAS16-TR02: Upstreaming 101
LAS16-TR02: Upstreaming 101
 
icebreakerwithdevops-150218112943-conversion-gate02
icebreakerwithdevops-150218112943-conversion-gate02icebreakerwithdevops-150218112943-conversion-gate02
icebreakerwithdevops-150218112943-conversion-gate02
 
SFO15-TR2: Upstreaming 101
SFO15-TR2: Upstreaming 101SFO15-TR2: Upstreaming 101
SFO15-TR2: Upstreaming 101
 
Get your FLOSS problems solved
Get your FLOSS problems solvedGet your FLOSS problems solved
Get your FLOSS problems solved
 
HKG15-901: Upstreaming 101
HKG15-901: Upstreaming 101HKG15-901: Upstreaming 101
HKG15-901: Upstreaming 101
 
Upstreaming 101 - SFO17-TR02
Upstreaming 101 - SFO17-TR02Upstreaming 101 - SFO17-TR02
Upstreaming 101 - SFO17-TR02
 
BUD17-TR02: Upstreaming 101
BUD17-TR02: Upstreaming 101 BUD17-TR02: Upstreaming 101
BUD17-TR02: Upstreaming 101
 
Teaching Open Source In The University
Teaching Open Source In The UniversityTeaching Open Source In The University
Teaching Open Source In The University
 
2 b 2-hatta
2 b 2-hatta2 b 2-hatta
2 b 2-hatta
 
Getting started contributing to Apache Spark
Getting started contributing to Apache SparkGetting started contributing to Apache Spark
Getting started contributing to Apache Spark
 
Software maintenance PyConPL 2016
Software maintenance PyConPL 2016Software maintenance PyConPL 2016
Software maintenance PyConPL 2016
 
What is dev ops?
What is dev ops?What is dev ops?
What is dev ops?
 
RootStack - Devfactory
RootStack - DevfactoryRootStack - Devfactory
RootStack - Devfactory
 
Pentester++
Pentester++Pentester++
Pentester++
 
LCE13: Test and Validation Summit: The future of testing at Linaro
LCE13: Test and Validation Summit: The future of testing at LinaroLCE13: Test and Validation Summit: The future of testing at Linaro
LCE13: Test and Validation Summit: The future of testing at Linaro
 
LCE13: Test and Validation Mini-Summit: Review Current Linaro Engineering Pro...
LCE13: Test and Validation Mini-Summit: Review Current Linaro Engineering Pro...LCE13: Test and Validation Mini-Summit: Review Current Linaro Engineering Pro...
LCE13: Test and Validation Mini-Summit: Review Current Linaro Engineering Pro...
 

More from Linaro

Deep Learning Neural Network Acceleration at the Edge - Andrea Gallo
Deep Learning Neural Network Acceleration at the Edge - Andrea GalloDeep Learning Neural Network Acceleration at the Edge - Andrea Gallo
Deep Learning Neural Network Acceleration at the Edge - Andrea Gallo
Linaro
 
Arm Architecture HPC Workshop Santa Clara 2018 - Kanta Vekaria
Arm Architecture HPC Workshop Santa Clara 2018 - Kanta VekariaArm Architecture HPC Workshop Santa Clara 2018 - Kanta Vekaria
Arm Architecture HPC Workshop Santa Clara 2018 - Kanta Vekaria
Linaro
 
Huawei’s requirements for the ARM based HPC solution readiness - Joshua Mora
Huawei’s requirements for the ARM based HPC solution readiness - Joshua MoraHuawei’s requirements for the ARM based HPC solution readiness - Joshua Mora
Huawei’s requirements for the ARM based HPC solution readiness - Joshua Mora
Linaro
 
Bud17 113: distribution ci using qemu and open qa
Bud17 113: distribution ci using qemu and open qaBud17 113: distribution ci using qemu and open qa
Bud17 113: distribution ci using qemu and open qa
Linaro
 
OpenHPC Automation with Ansible - Renato Golin - Linaro Arm HPC Workshop 2018
OpenHPC Automation with Ansible - Renato Golin - Linaro Arm HPC Workshop 2018OpenHPC Automation with Ansible - Renato Golin - Linaro Arm HPC Workshop 2018
OpenHPC Automation with Ansible - Renato Golin - Linaro Arm HPC Workshop 2018
Linaro
 
HPC network stack on ARM - Linaro HPC Workshop 2018
HPC network stack on ARM - Linaro HPC Workshop 2018HPC network stack on ARM - Linaro HPC Workshop 2018
HPC network stack on ARM - Linaro HPC Workshop 2018
Linaro
 
It just keeps getting better - SUSE enablement for Arm - Linaro HPC Workshop ...
It just keeps getting better - SUSE enablement for Arm - Linaro HPC Workshop ...It just keeps getting better - SUSE enablement for Arm - Linaro HPC Workshop ...
It just keeps getting better - SUSE enablement for Arm - Linaro HPC Workshop ...
Linaro
 
Intelligent Interconnect Architecture to Enable Next Generation HPC - Linaro ...
Intelligent Interconnect Architecture to Enable Next Generation HPC - Linaro ...Intelligent Interconnect Architecture to Enable Next Generation HPC - Linaro ...
Intelligent Interconnect Architecture to Enable Next Generation HPC - Linaro ...
Linaro
 
Yutaka Ishikawa - Post-K and Arm HPC Ecosystem - Linaro Arm HPC Workshop Sant...
Yutaka Ishikawa - Post-K and Arm HPC Ecosystem - Linaro Arm HPC Workshop Sant...Yutaka Ishikawa - Post-K and Arm HPC Ecosystem - Linaro Arm HPC Workshop Sant...
Yutaka Ishikawa - Post-K and Arm HPC Ecosystem - Linaro Arm HPC Workshop Sant...
Linaro
 
Andrew J Younge - Vanguard Astra - Petascale Arm Platform for U.S. DOE/ASC Su...
Andrew J Younge - Vanguard Astra - Petascale Arm Platform for U.S. DOE/ASC Su...Andrew J Younge - Vanguard Astra - Petascale Arm Platform for U.S. DOE/ASC Su...
Andrew J Younge - Vanguard Astra - Petascale Arm Platform for U.S. DOE/ASC Su...
Linaro
 
HKG18-501 - EAS on Common Kernel 4.14 and getting (much) closer to mainline
HKG18-501 - EAS on Common Kernel 4.14 and getting (much) closer to mainlineHKG18-501 - EAS on Common Kernel 4.14 and getting (much) closer to mainline
HKG18-501 - EAS on Common Kernel 4.14 and getting (much) closer to mainline
Linaro
 
HKG18-100K1 - George Grey: Opening Keynote
HKG18-100K1 - George Grey: Opening KeynoteHKG18-100K1 - George Grey: Opening Keynote
HKG18-100K1 - George Grey: Opening Keynote
Linaro
 
HKG18-318 - OpenAMP Workshop
HKG18-318 - OpenAMP WorkshopHKG18-318 - OpenAMP Workshop
HKG18-318 - OpenAMP Workshop
Linaro
 
HKG18-501 - EAS on Common Kernel 4.14 and getting (much) closer to mainline
HKG18-501 - EAS on Common Kernel 4.14 and getting (much) closer to mainlineHKG18-501 - EAS on Common Kernel 4.14 and getting (much) closer to mainline
HKG18-501 - EAS on Common Kernel 4.14 and getting (much) closer to mainline
Linaro
 
HKG18-315 - Why the ecosystem is a wonderful thing, warts and all
HKG18-315 - Why the ecosystem is a wonderful thing, warts and allHKG18-315 - Why the ecosystem is a wonderful thing, warts and all
HKG18-315 - Why the ecosystem is a wonderful thing, warts and all
Linaro
 
HKG18- 115 - Partitioning ARM Systems with the Jailhouse Hypervisor
HKG18- 115 - Partitioning ARM Systems with the Jailhouse HypervisorHKG18- 115 - Partitioning ARM Systems with the Jailhouse Hypervisor
HKG18- 115 - Partitioning ARM Systems with the Jailhouse Hypervisor
Linaro
 
HKG18-TR08 - Upstreaming SVE in QEMU
HKG18-TR08 - Upstreaming SVE in QEMUHKG18-TR08 - Upstreaming SVE in QEMU
HKG18-TR08 - Upstreaming SVE in QEMU
Linaro
 
HKG18-113- Secure Data Path work with i.MX8M
HKG18-113- Secure Data Path work with i.MX8MHKG18-113- Secure Data Path work with i.MX8M
HKG18-113- Secure Data Path work with i.MX8M
Linaro
 
HKG18-120 - Devicetree Schema Documentation and Validation
HKG18-120 - Devicetree Schema Documentation and Validation HKG18-120 - Devicetree Schema Documentation and Validation
HKG18-120 - Devicetree Schema Documentation and Validation
Linaro
 
HKG18-223 - Trusted FirmwareM: Trusted boot
HKG18-223 - Trusted FirmwareM: Trusted bootHKG18-223 - Trusted FirmwareM: Trusted boot
HKG18-223 - Trusted FirmwareM: Trusted boot
Linaro
 

More from Linaro (20)

Deep Learning Neural Network Acceleration at the Edge - Andrea Gallo
Deep Learning Neural Network Acceleration at the Edge - Andrea GalloDeep Learning Neural Network Acceleration at the Edge - Andrea Gallo
Deep Learning Neural Network Acceleration at the Edge - Andrea Gallo
 
Arm Architecture HPC Workshop Santa Clara 2018 - Kanta Vekaria
Arm Architecture HPC Workshop Santa Clara 2018 - Kanta VekariaArm Architecture HPC Workshop Santa Clara 2018 - Kanta Vekaria
Arm Architecture HPC Workshop Santa Clara 2018 - Kanta Vekaria
 
Huawei’s requirements for the ARM based HPC solution readiness - Joshua Mora
Huawei’s requirements for the ARM based HPC solution readiness - Joshua MoraHuawei’s requirements for the ARM based HPC solution readiness - Joshua Mora
Huawei’s requirements for the ARM based HPC solution readiness - Joshua Mora
 
Bud17 113: distribution ci using qemu and open qa
Bud17 113: distribution ci using qemu and open qaBud17 113: distribution ci using qemu and open qa
Bud17 113: distribution ci using qemu and open qa
 
OpenHPC Automation with Ansible - Renato Golin - Linaro Arm HPC Workshop 2018
OpenHPC Automation with Ansible - Renato Golin - Linaro Arm HPC Workshop 2018OpenHPC Automation with Ansible - Renato Golin - Linaro Arm HPC Workshop 2018
OpenHPC Automation with Ansible - Renato Golin - Linaro Arm HPC Workshop 2018
 
HPC network stack on ARM - Linaro HPC Workshop 2018
HPC network stack on ARM - Linaro HPC Workshop 2018HPC network stack on ARM - Linaro HPC Workshop 2018
HPC network stack on ARM - Linaro HPC Workshop 2018
 
It just keeps getting better - SUSE enablement for Arm - Linaro HPC Workshop ...
It just keeps getting better - SUSE enablement for Arm - Linaro HPC Workshop ...It just keeps getting better - SUSE enablement for Arm - Linaro HPC Workshop ...
It just keeps getting better - SUSE enablement for Arm - Linaro HPC Workshop ...
 
Intelligent Interconnect Architecture to Enable Next Generation HPC - Linaro ...
Intelligent Interconnect Architecture to Enable Next Generation HPC - Linaro ...Intelligent Interconnect Architecture to Enable Next Generation HPC - Linaro ...
Intelligent Interconnect Architecture to Enable Next Generation HPC - Linaro ...
 
Yutaka Ishikawa - Post-K and Arm HPC Ecosystem - Linaro Arm HPC Workshop Sant...
Yutaka Ishikawa - Post-K and Arm HPC Ecosystem - Linaro Arm HPC Workshop Sant...Yutaka Ishikawa - Post-K and Arm HPC Ecosystem - Linaro Arm HPC Workshop Sant...
Yutaka Ishikawa - Post-K and Arm HPC Ecosystem - Linaro Arm HPC Workshop Sant...
 
Andrew J Younge - Vanguard Astra - Petascale Arm Platform for U.S. DOE/ASC Su...
Andrew J Younge - Vanguard Astra - Petascale Arm Platform for U.S. DOE/ASC Su...Andrew J Younge - Vanguard Astra - Petascale Arm Platform for U.S. DOE/ASC Su...
Andrew J Younge - Vanguard Astra - Petascale Arm Platform for U.S. DOE/ASC Su...
 
HKG18-501 - EAS on Common Kernel 4.14 and getting (much) closer to mainline
HKG18-501 - EAS on Common Kernel 4.14 and getting (much) closer to mainlineHKG18-501 - EAS on Common Kernel 4.14 and getting (much) closer to mainline
HKG18-501 - EAS on Common Kernel 4.14 and getting (much) closer to mainline
 
HKG18-100K1 - George Grey: Opening Keynote
HKG18-100K1 - George Grey: Opening KeynoteHKG18-100K1 - George Grey: Opening Keynote
HKG18-100K1 - George Grey: Opening Keynote
 
HKG18-318 - OpenAMP Workshop
HKG18-318 - OpenAMP WorkshopHKG18-318 - OpenAMP Workshop
HKG18-318 - OpenAMP Workshop
 
HKG18-501 - EAS on Common Kernel 4.14 and getting (much) closer to mainline
HKG18-501 - EAS on Common Kernel 4.14 and getting (much) closer to mainlineHKG18-501 - EAS on Common Kernel 4.14 and getting (much) closer to mainline
HKG18-501 - EAS on Common Kernel 4.14 and getting (much) closer to mainline
 
HKG18-315 - Why the ecosystem is a wonderful thing, warts and all
HKG18-315 - Why the ecosystem is a wonderful thing, warts and allHKG18-315 - Why the ecosystem is a wonderful thing, warts and all
HKG18-315 - Why the ecosystem is a wonderful thing, warts and all
 
HKG18- 115 - Partitioning ARM Systems with the Jailhouse Hypervisor
HKG18- 115 - Partitioning ARM Systems with the Jailhouse HypervisorHKG18- 115 - Partitioning ARM Systems with the Jailhouse Hypervisor
HKG18- 115 - Partitioning ARM Systems with the Jailhouse Hypervisor
 
HKG18-TR08 - Upstreaming SVE in QEMU
HKG18-TR08 - Upstreaming SVE in QEMUHKG18-TR08 - Upstreaming SVE in QEMU
HKG18-TR08 - Upstreaming SVE in QEMU
 
HKG18-113- Secure Data Path work with i.MX8M
HKG18-113- Secure Data Path work with i.MX8MHKG18-113- Secure Data Path work with i.MX8M
HKG18-113- Secure Data Path work with i.MX8M
 
HKG18-120 - Devicetree Schema Documentation and Validation
HKG18-120 - Devicetree Schema Documentation and Validation HKG18-120 - Devicetree Schema Documentation and Validation
HKG18-120 - Devicetree Schema Documentation and Validation
 
HKG18-223 - Trusted FirmwareM: Trusted boot
HKG18-223 - Trusted FirmwareM: Trusted bootHKG18-223 - Trusted FirmwareM: Trusted boot
HKG18-223 - Trusted FirmwareM: Trusted boot
 

Recently uploaded

JMeter webinar - integration with InfluxDB and Grafana
JMeter webinar - integration with InfluxDB and GrafanaJMeter webinar - integration with InfluxDB and Grafana
JMeter webinar - integration with InfluxDB and Grafana
RTTS
 
Slack (or Teams) Automation for Bonterra Impact Management (fka Social Soluti...
Slack (or Teams) Automation for Bonterra Impact Management (fka Social Soluti...Slack (or Teams) Automation for Bonterra Impact Management (fka Social Soluti...
Slack (or Teams) Automation for Bonterra Impact Management (fka Social Soluti...
Jeffrey Haguewood
 
Leading Change strategies and insights for effective change management pdf 1.pdf
Leading Change strategies and insights for effective change management pdf 1.pdfLeading Change strategies and insights for effective change management pdf 1.pdf
Leading Change strategies and insights for effective change management pdf 1.pdf
OnBoard
 
Knowledge engineering: from people to machines and back
Knowledge engineering: from people to machines and backKnowledge engineering: from people to machines and back
Knowledge engineering: from people to machines and back
Elena Simperl
 
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdf
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdfSmart TV Buyer Insights Survey 2024 by 91mobiles.pdf
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdf
91mobiles
 
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
 
Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...
Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...
Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...
Product School
 
State of ICS and IoT Cyber Threat Landscape Report 2024 preview
State of ICS and IoT Cyber Threat Landscape Report 2024 previewState of ICS and IoT Cyber Threat Landscape Report 2024 preview
State of ICS and IoT Cyber Threat Landscape Report 2024 preview
Prayukth K V
 
The Art of the Pitch: WordPress Relationships and Sales
The Art of the Pitch: WordPress Relationships and SalesThe Art of the Pitch: WordPress Relationships and Sales
The Art of the Pitch: WordPress Relationships and Sales
Laura Byrne
 
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
 
AI for Every Business: Unlocking Your Product's Universal Potential by VP of ...
AI for Every Business: Unlocking Your Product's Universal Potential by VP of ...AI for Every Business: Unlocking Your Product's Universal Potential by VP of ...
AI for Every Business: Unlocking Your Product's Universal Potential by VP of ...
Product School
 
De-mystifying Zero to One: Design Informed Techniques for Greenfield Innovati...
De-mystifying Zero to One: Design Informed Techniques for Greenfield Innovati...De-mystifying Zero to One: Design Informed Techniques for Greenfield Innovati...
De-mystifying Zero to One: Design Informed Techniques for Greenfield Innovati...
Product School
 
How world-class product teams are winning in the AI era by CEO and Founder, P...
How world-class product teams are winning in the AI era by CEO and Founder, P...How world-class product teams are winning in the AI era by CEO and Founder, P...
How world-class product teams are winning in the AI era by CEO and Founder, P...
Product School
 
From Daily Decisions to Bottom Line: Connecting Product Work to Revenue by VP...
From Daily Decisions to Bottom Line: Connecting Product Work to Revenue by VP...From Daily Decisions to Bottom Line: Connecting Product Work to Revenue by VP...
From Daily Decisions to Bottom Line: Connecting Product Work to Revenue by VP...
Product School
 
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
 
Encryption in Microsoft 365 - ExpertsLive Netherlands 2024
Encryption in Microsoft 365 - ExpertsLive Netherlands 2024Encryption in Microsoft 365 - ExpertsLive Netherlands 2024
Encryption in Microsoft 365 - ExpertsLive Netherlands 2024
Albert Hoitingh
 
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
 
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdfFIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
FIDO Alliance
 
Accelerate your Kubernetes clusters with Varnish Caching
Accelerate your Kubernetes clusters with Varnish CachingAccelerate your Kubernetes clusters with Varnish Caching
Accelerate your Kubernetes clusters with Varnish Caching
Thijs Feryn
 
Generating a custom Ruby SDK for your web service or Rails API using Smithy
Generating a custom Ruby SDK for your web service or Rails API using SmithyGenerating a custom Ruby SDK for your web service or Rails API using Smithy
Generating a custom Ruby SDK for your web service or Rails API using Smithy
g2nightmarescribd
 

Recently uploaded (20)

JMeter webinar - integration with InfluxDB and Grafana
JMeter webinar - integration with InfluxDB and GrafanaJMeter webinar - integration with InfluxDB and Grafana
JMeter webinar - integration with InfluxDB and Grafana
 
Slack (or Teams) Automation for Bonterra Impact Management (fka Social Soluti...
Slack (or Teams) Automation for Bonterra Impact Management (fka Social Soluti...Slack (or Teams) Automation for Bonterra Impact Management (fka Social Soluti...
Slack (or Teams) Automation for Bonterra Impact Management (fka Social Soluti...
 
Leading Change strategies and insights for effective change management pdf 1.pdf
Leading Change strategies and insights for effective change management pdf 1.pdfLeading Change strategies and insights for effective change management pdf 1.pdf
Leading Change strategies and insights for effective change management pdf 1.pdf
 
Knowledge engineering: from people to machines and back
Knowledge engineering: from people to machines and backKnowledge engineering: from people to machines and back
Knowledge engineering: from people to machines and back
 
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdf
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdfSmart TV Buyer Insights Survey 2024 by 91mobiles.pdf
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdf
 
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 -...
 
Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...
Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...
Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...
 
State of ICS and IoT Cyber Threat Landscape Report 2024 preview
State of ICS and IoT Cyber Threat Landscape Report 2024 previewState of ICS and IoT Cyber Threat Landscape Report 2024 preview
State of ICS and IoT Cyber Threat Landscape Report 2024 preview
 
The Art of the Pitch: WordPress Relationships and Sales
The Art of the Pitch: WordPress Relationships and SalesThe Art of the Pitch: WordPress Relationships and Sales
The Art of the Pitch: WordPress Relationships and Sales
 
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
 
AI for Every Business: Unlocking Your Product's Universal Potential by VP of ...
AI for Every Business: Unlocking Your Product's Universal Potential by VP of ...AI for Every Business: Unlocking Your Product's Universal Potential by VP of ...
AI for Every Business: Unlocking Your Product's Universal Potential by VP of ...
 
De-mystifying Zero to One: Design Informed Techniques for Greenfield Innovati...
De-mystifying Zero to One: Design Informed Techniques for Greenfield Innovati...De-mystifying Zero to One: Design Informed Techniques for Greenfield Innovati...
De-mystifying Zero to One: Design Informed Techniques for Greenfield Innovati...
 
How world-class product teams are winning in the AI era by CEO and Founder, P...
How world-class product teams are winning in the AI era by CEO and Founder, P...How world-class product teams are winning in the AI era by CEO and Founder, P...
How world-class product teams are winning in the AI era by CEO and Founder, P...
 
From Daily Decisions to Bottom Line: Connecting Product Work to Revenue by VP...
From Daily Decisions to Bottom Line: Connecting Product Work to Revenue by VP...From Daily Decisions to Bottom Line: Connecting Product Work to Revenue by VP...
From Daily Decisions to Bottom Line: Connecting Product Work to Revenue by VP...
 
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
 
Encryption in Microsoft 365 - ExpertsLive Netherlands 2024
Encryption in Microsoft 365 - ExpertsLive Netherlands 2024Encryption in Microsoft 365 - ExpertsLive Netherlands 2024
Encryption in Microsoft 365 - ExpertsLive Netherlands 2024
 
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
 
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdfFIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
 
Accelerate your Kubernetes clusters with Varnish Caching
Accelerate your Kubernetes clusters with Varnish CachingAccelerate your Kubernetes clusters with Varnish Caching
Accelerate your Kubernetes clusters with Varnish Caching
 
Generating a custom Ruby SDK for your web service or Rails API using Smithy
Generating a custom Ruby SDK for your web service or Rails API using SmithyGenerating a custom Ruby SDK for your web service or Rails API using Smithy
Generating a custom Ruby SDK for your web service or Rails API using Smithy
 

LCE12: Intro Training: Upstreaming 101

  • 1. (Kernel) Upstreaming 101: Social and Technical Lessons Oct 29, 2012 Deepak Saxena dsaxena@plexity.net
  • 2. The Problem ● Ever increasing number of Linux developers! ● Specially in the ARM world ● Lots of good technical documentation! ● Linux Device Drivers - http://lwn.net/Kernel/LDD3/ ● Understanding the Linux Kernel - http://goo.gl/p4pM4 ● Linux Kernel Development - http://goo.gl/0YY27 ● Organizations beginning to understand technical and business benefits of getting code upstream! ● More developers interested in working upstream! ● This is a problem?
  • 3. The Issues... ● Using documented APIs and infrastructure is easy ● Creating new APIs and infrastructure is hard ● Creating good APIs and infrastructure is harder ● Creating good APIs and infrastructure for upstream is even harder ● Many SOC problems require creating new subsystems ● Or modifying existing ones to support new features ● Books tend to be x86 oriented ● Do not cover drivers common to other arches: i2c, spi, etc ● Make assumptions about underlying HW ● (See Upcoming Porting Linux by Jon Masters, ETA 2013) ● Working with the community is not documented ● Much tribal knowledge on the process ● Same mistakes are often made by new participants
  • 4. Today's Goals ● Provide an overview of upstreaming code ● Social and Technical ● From Design to Submitting Patches ● How does the process differ from closed development? ● Some general guidelines on design and coding. ● Some low level details on submitting patches. ● Geared at those who are completely new to this world ● For both Managers and Engineers
  • 5. Who Am I? Why Listen To Me? ● Kernel Working Group TL ● I make spreadsheets and run meetings ● Before that: ● 12 years kernel experience ● One of first folks at Intel to work on Linux drivers ● (though a little under the radar...) ● Developed and maintained IXP* Xscale NPU ports ● Kernel maintainer at MontaVista for several years ● Reviewed all patches for distro kernel ● Reviewed thousands of lines of vendor BSP code ● OLPC kernel maintainer for about 1.5 years ● Was active in reviewing code upstream ● Have given similar talk at various conferences: ● Linux Bangalore, ELC, LinuxConf.au, Fosdem
  • 6. V3.4 Who Exactly Is The Community? (From list of top 3.4 contributors: http://lwn.net/Articles/496193/)
  • 7. Upstream Development: The Right and Wrong Way 3.x Release 3.y+1-rc1 Release 3.y+1 Release 2 Week Merge Window 6-12 Week Stabilization Your Development Starts Here Months to Years... If you wait until this window to release your code, expecting it to just go in, it will not (there have been a few exceptions, but very rare). You need to release your code early and often during your development phase to get feedback and fix issues as they come up.
  • 8. Upstream Based Development Socialize Ideas Post Patches Community Review Revise Patches Patches OK? Redesign or Minor Fixes? Start Development Redesign YES ●Release Early, Release Often ●Iterate Design/Code Cycles ●Social component very important ●Discussion Time >> Coding Time
  • 9. Avoiding Issues: Don't Re-invent the Wheel ● Do Your Homework ● Many problems already have known solutions in Linux ● Driver APIs for specific functionality ● User/Kernel interfaces and system level tools ● It may just not be obvious at first. ● May not be documented in one single place ● May just be tribal knowledge ● Google is your friend here ● Read the code ● Ask the experts ● Release Early, Release Often to save your time!
  • 10. Avoiding Issues: Abstraction ● Don't Abstract Unnecessarily ● NO cross-OS HALs (unless extremely well designed) ● Don't add wrappers around existing in-kernel APIs ● Too much abstraction makes code harder to maintain ● Code is harder to read/debug ● Abstraction layer might have bugs ● Kernel API changes are hidden ● Difficult for someone new to get involved ● Release Early, Release Often to find these issues early!
  • 11. Avoiding Issues: Solving Common Problems ● Your HW is Not Unique ● Your HW may seem unique at first, however... ● Others are close by or will soon follow ● Most HW comes from similar research paths ● They will need same kernel support as you do ● Don't blindly add hooks to kernel for these features ● We don't want multiple implementations of same idea ● Need to add APIs at proper points in kernel ● Work with external developers to develop these ● Work with other HW vendors ● !THIS IS WHAT LINARO IS ALL ABOUT! ● Release Early, Release Often to find common solutions!
  • 12. Avoiding Issues: Good API Design ● Good APIs are: ● Easy to use & Hard to misuse ● Follow KISS Principle: Keep it Simple Stupid ● Should be very clear from just name, parameters ● Should be obvious when you use it wrongly ● Build time errors or obvious error values ● Just read Rusty's Blog Post: ● http://ozlabs.org/~rusty/index.cgi/tech/2008-03-30.html ● Release Early, Release often so you don't built a whole stack of software on top of poorly designed APIs!
  • 13. Practicalities: How Do I Post Patches? ● Read Documentation/SubmittingPatches ● Send email to maintainers and list ● One cover email with: ● Summary of WHAT you are solving ● Explaining WHY you used your approach ● Talk about any dependent patchsets ● Don't assume knowledge about your technology area ● git log --diff (which includes patch headers) ● Always post patch against latest tip ● One message per patch ● Break up your changes into small units that build on each other ● If you are adding 100's of lines to one function...you're doing it wrong ● Refactor your patches using “git-rebase -i” ● Go to today's git session
  • 14. Practicalities: Who do I send my patches to? ● Use git-log and git-blame commands ● git-log to find out the last few people to make changes ● git-blame to find out if ● Read MAINTAINERS file in top level directory ● get-maintainers.pl script ● Will give you mailing list and maintainer address ~/src/linux$ ./scripts/get_maintainer.pl spi_message_queue.patch Grant Likely <grant.likely@secretlab.ca> (maintainer:SPI SUBSYSTEM) Randy Dunlap <rdunlap@xenotime.net> (maintainer:DOCUMENTATION) spi­devel­general@lists.sourceforge.net (open list:SPI SUBSYSTEM) linux­doc@vger.kernel.org (open list:DOCUMENTATION) linux­kernel@vger.kernel.org (open list) ~/src/linux$ ./scripts/get_maintainer.pl ­f drivers/mfd/max8925­core.c Samuel Ortiz <sameo@linux.intel.com> (supporter:MULTIFUNCTION DEV...) linux­kernel@vger.kernel.org (open list) :~/src/linux$ ./scripts/get_maintainer.pl ­f drivers/i2c "Jean Delvare (PC drivers, core)" <khali@linux­fr.org> (maintainer:I2C SUBSYSTEM) "Ben Dooks (embedded platforms)" <ben­linux@fluff.org> (maintainer:I2C SUBSYSTEM) "Wolfram Sang (embedded platforms)" <w.sang@pengutronix.de> (maintainer:I2C SUBSYSTEM) linux­i2c@vger.kernel.org (open list:I2C SUBSYSTEM) linux­kernel@vger.kernel.org (open list)
  • 15. Practicalities: Using Signed-Off By ● Signed-off-by is legally binding! ● Make sure you have approval!         Developer's Certificate of Origin 1.1         By making a contribution to this project, I certify that:         (a) The contribution was created in whole or in part by me and I             have the right to submit it under the open source license             indicated in the file; or         (b) The contribution is based upon previous work that, to the best             of my knowledge, is covered under an appropriate open source             license and I have the right under that license to submit that             work with modifications, whether created in whole or in part             by me, under the same open source license (unless I am             permitted to submit under a different license), as indicated             in the file; or         (c) The contribution was provided directly to me by some other             person who certified (a), (b) or (c) and I have not modified             it.         (d) I understand and agree that this project and the contribution             are public and that a record of the contribution (including all             personal information I submit with it, including my sign­off) is             maintained indefinitely and may be redistributed consistent with             this project or the open source license(s) involved.
  • 16. Practicalities: Nobody Replied to My Patches! ● Be patient, don't expect an immediate response. ● Check mailing list archives: ● What's the typical response rate? ● Did the maintainer announce a vacation? ● Is this a merge window? ● Everyone is super busy, try again when it closes ● If it really seems like patches got dropped, email the maintainer privately with a pointer to thread. ● If still no response: ● Ping one level up in tree. ● For drivers: Ping Greg KH ● Sometimes you just have to email patches to Linus directly ● Shames the maintainer, gets his/her attention
  • 17. Practicalities: Responses From Other Developers ● Acked-by: This person is OK with the changes. Usually a maintainer of a subsystem affected by patch. ● Reviewed-by: This person has done a thorough technical review of the patch. ● Tested-by: This person did some level of testing. Allows maintainer to know that it has been validated on an environment other than original author's.
  • 18. Practicalities: When Someone Attacks You :( ● It unfortunately happens :( ● Do NOT Escalate ● Take a step back ● Go work on something else ● Grab a beer (BUT NOT WHILE REPLYING!) ● Pick out the technical issues ● Get some help in reading the negative email ● Respond to just these ● Hint: Attending conferences and meeting people face to face reduces the likelihood of this happening.
  • 19. Practicalities: I can't Release Early and Often ● Ask for Private Reviews ● NDAs with upstream maintainer(s) and experts ● Linaro can possibly help here ● Several of these people are part of our organization ● We have good relationships with many upstream maintainers ● Can you release the concepts if not the code? ● Fine art of providing enough details w/o giving away the secret sauce ● What are the high level problems you want to solve?
  • 20. Summary ● The community is just a bunch of developers ● Like you, just with more experience of the process. ● Most of them want to help! ● Good kernel code: ● Doesn't re-invent what's already there ● Doesn't add abstraction for the sake of abstraction ● Has well-designed APIs ● Solves common problems ● Read the documentation and the code ● Participate openly and respectfully ● Ask us for help ● Release Early, Release Often :)