SlideShare a Scribd company logo
Bring Your Project From a 10 Years to a
3 Months Release Cycle
Stefan Schmidt
Agenda
Introduction
Release History
Technological Side
Social Influences
Next Steps
Summary
Introduction
Enlightenment is not a web project
Instead it is written in plain C
Enlightenment is not developed by a StartUp
Instead it is developed by the FOSS community and companies
such as Samsung
Enlightenment is not developed by a 5 person team in one
office
Instead it is developed by an international team distributed over
many timezones
All this might result in different understandings of agile
development :-)
Release History
Release History
The Enlightenment project started in 1997 by Carsten Haitzler
Some early releases until E 0.16
A 12 years gap from first code to release E 0.17
Building a whole new set of libraries for it but no releases for
them either for a long time
More release driven now but still feature based and not time
based schedule
Reasoning
Most of the active developers at that time did not see a need for
releases
It was a project driven by volunteers which used the code
straight out of CVS/SVN
Some argued for it as the fastest agile development cycle ;-)
Nobody stood up for taking care of the releases so it did not get
done
What Changed?
Different people joined the project which had more interested in
releases
Most Linux distributions wanted us to do releases before
including our code
Commercial parties also asked for releases
With the pressure also the understanding grow that releases
would help the project forward
How did we do it?
That is what the rest of the talk is about
From the technological side we improved our tools and
infrastructure
On the social side we steadily worked on giving releases a
more prominent role
Technological Side
Tools and Automation
One of the biggest roadblocks is to build trust in the code base
you are going to release
In the Enlightenment project with the two main libraries alone
having around 850.000 lines of code
You need a variation of tools that will help you to build up this
trust
SCM, automated builds and maybe continuous integration,
static analyzers just to name a few
SCM and Understandable Commits
As an very old project CVS was used in the beginning
Switch to SVN for a newer tool but same old practices
Large amounts of work committed as one change
Many unrelated changes at once
Switch to git
After some struggling it helped to allow people working on
different things without dumping everything into master
Improved overall commits, code as well as commit messages
People start to develop larger changes in branches
Automated Builds
Setup automated builds with Jenkins
Quick builds for every change pushed pushed to master
Building for x86, x86_64, x32 with gcc as well as clang and also
cross-compilation for windows with mingw
Very useful as many developer only use one system for their work
Many of the discovered problems are getting fixed instantly (see
social pressure)
In the dark times before we had this setup builds have been broken
for some configurations for months
During the nightly builds we run time intensive things like static
analyzers and other testing
Static Analyzer
Static analyzer can be very helpful for a plain C project
Started with scan-build, part of clang, from the LLVM project
Output quite noise and sadly a lot false positives
Also experimented with klocwork but the proprietary nature
made it hard to share results with the community
Now also using Coverity which is also proprietary but offers a
free service for FOSS projects
Especially Coverity uncovered quite some issues which have
been overlooked by code review
You still have to deal with false positives but the signal to noise
ratio is way better
Test Suite
We have unit testing for a lot
of components
But with 358 tests we only
cover 29.4% of our lines of
code
We are an UI toolkit so work
is also ongoing on pixel
perfect regression testing
We are still weak on the
automated testing side and
need to improve
One of the bigger worries
before every release
Build Complexity
By history the Enlightenment project was happy to add
configuration options
Over the last two years we tried to reduce these options to
something maintainable
Merged libs allow easier maintenance. 11 different libs have
been merged into EFL
All of these actions had direct influence on how much different
configurations we can test
The reduced set of libraries also eased the release process
Social Influences
General Social Changes
Once we had IRC and email notification about broken builds
social pressure grow to fix them
Keep people in the loop and highlight positive changes (e.g.
weekly QA newsletter)
Most people have been ok with adapting to changes but you
have to provide docs and guidance
People follow the lead but would not have done it on their own.
(e.g. backports of fixes to stable branches)
Towards Releases
Easier once we came over a long time without a release
Getting into the habit to do releases more often
Core application now do releases a while after the libraries
Happened naturally
Switch to time based releases. Now fine tuning the process to
identify problems
Took over as release manager (Only because I build up trust to
the code base due to all the automation)
There need to be proof that it will really work
Invest time to make a sane and realistic schedule
Next Steps
Changes to come
ABI checker to avoid breakage surprises after a release
Jenkins job that builds a magic developer branch
Allowing developers to tests their changes for many configurations
Thinking about adding arm builds to jenkins
Thinking about running automated valgrind runs to detect memory
issues (-fsanitize* could be an alternative)
Fine tuning of the release process
Think about regression test. Having them mandatory for fixes might
blow our man power.
Integrate the pixel perfect regression tester with jenkins for fast
feedback
Changes that might never come
Every commit runs through our jenkins testing before it goes
into master (Qt project does this)
More code review for core developers before changes hit the
repo
Hard to bring in as many developers want to avoid any delay
before the code hits the repo
Automate the release process (NEWS generation,
announcement templates, upload tarballs, etc)
A simple version bump and pushed git tag might be enough to
get it all done :-)
Summary – What you should take home
Automate as much as possible to keep the workload down and
the project always in a good state
Invest in all kind of tools to make your job easier
Show the benefits of more regular releases and proof that it is
possible
Keep on fine tuning the process to avoid as much problems as
possible
Expect that people will only follow if you give them the lead and
show how the process could work
Thank you.
References
http://www.enlightenment.org
http://build.enlightenment.org
http://git.enlightenment.org
Imagery sources
http://www.linuxtag.org/2014/
http://www.enlightenment.org/
https://openclipart.org/detail/192629/gear-tools-by-ben-192629
http://git-scm.com/downloads/logos
http://jenkins-ci.org/
http://www.coverity.com/
https://openclipart.org/detail/26498/present-blue-pack-by-minduka

More Related Content

What's hot

Jenkins Introduction
Jenkins IntroductionJenkins Introduction
Jenkins Introduction
Pavan Gupta
 
Introduction to jenkins for the net developer
Introduction to jenkins for the net developerIntroduction to jenkins for the net developer
Introduction to jenkins for the net developer
Abe Diaz
 
Intro to DevOps 4 undergraduates
Intro to DevOps 4 undergraduates Intro to DevOps 4 undergraduates
Intro to DevOps 4 undergraduates
Liran Levy
 
Niemnte agile
Niemnte agileNiemnte agile
Niemnte agile
kingargyle
 
Continuous Integration, Build Pipelines and Continuous Deployment
Continuous Integration, Build Pipelines and Continuous DeploymentContinuous Integration, Build Pipelines and Continuous Deployment
Continuous Integration, Build Pipelines and Continuous Deployment
Christopher Read
 
Cd syd
Cd sydCd syd
Continuous integration
Continuous integrationContinuous integration
Continuous integration
hugo lu
 
Automated Testing and Continuous Integration for Mobile Apps: Jenkins & Cloud...
Automated Testing and Continuous Integration for Mobile Apps: Jenkins & Cloud...Automated Testing and Continuous Integration for Mobile Apps: Jenkins & Cloud...
Automated Testing and Continuous Integration for Mobile Apps: Jenkins & Cloud...
SOASTA
 
Continuous Integration from server to cloud
Continuous Integration from server to cloudContinuous Integration from server to cloud
Continuous Integration from server to cloud
Paolo D'Incau
 
Enterprise CI as-a-Service using Jenkins
Enterprise CI as-a-Service using JenkinsEnterprise CI as-a-Service using Jenkins
Enterprise CI as-a-Service using Jenkins
CollabNet
 
Yale Jenkins Show and Tell
Yale Jenkins Show and TellYale Jenkins Show and Tell
Yale Jenkins Show and Tell
E. Camden Fisher
 
Lessons Learned with Time-Based Releases for EFL
Lessons Learned with Time-Based Releases for EFLLessons Learned with Time-Based Releases for EFL
Lessons Learned with Time-Based Releases for EFL
Samsung Open Source Group
 
CICD by Teerapat
CICD by TeerapatCICD by Teerapat
CICD by Teerapat
Troublemaker Khunpech
 
Continuous integration
Continuous integrationContinuous integration
Continuous integration
Yoshan madhumal
 
Anatomy of a Continuous Integration and Delivery (CICD) Pipeline
Anatomy of a Continuous Integration and Delivery (CICD) PipelineAnatomy of a Continuous Integration and Delivery (CICD) Pipeline
Anatomy of a Continuous Integration and Delivery (CICD) Pipeline
Robert McDermott
 
How to Build a DevOps Toolchain
How to Build a DevOps ToolchainHow to Build a DevOps Toolchain
How to Build a DevOps Toolchain
IBM UrbanCode Products
 
DevOps - Understanding Core Concepts
DevOps - Understanding Core ConceptsDevOps - Understanding Core Concepts
DevOps - Understanding Core Concepts
Nitin Bhide
 
Introduction to CICD
Introduction to CICDIntroduction to CICD
Introduction to CICD
Knoldus Inc.
 
Continuous integration using jenkins
Continuous integration using jenkinsContinuous integration using jenkins
Continuous integration using jenkins
Vinay H G
 
Jenkins CI
Jenkins CIJenkins CI
Jenkins CI
haochenglee
 

What's hot (20)

Jenkins Introduction
Jenkins IntroductionJenkins Introduction
Jenkins Introduction
 
Introduction to jenkins for the net developer
Introduction to jenkins for the net developerIntroduction to jenkins for the net developer
Introduction to jenkins for the net developer
 
Intro to DevOps 4 undergraduates
Intro to DevOps 4 undergraduates Intro to DevOps 4 undergraduates
Intro to DevOps 4 undergraduates
 
Niemnte agile
Niemnte agileNiemnte agile
Niemnte agile
 
Continuous Integration, Build Pipelines and Continuous Deployment
Continuous Integration, Build Pipelines and Continuous DeploymentContinuous Integration, Build Pipelines and Continuous Deployment
Continuous Integration, Build Pipelines and Continuous Deployment
 
Cd syd
Cd sydCd syd
Cd syd
 
Continuous integration
Continuous integrationContinuous integration
Continuous integration
 
Automated Testing and Continuous Integration for Mobile Apps: Jenkins & Cloud...
Automated Testing and Continuous Integration for Mobile Apps: Jenkins & Cloud...Automated Testing and Continuous Integration for Mobile Apps: Jenkins & Cloud...
Automated Testing and Continuous Integration for Mobile Apps: Jenkins & Cloud...
 
Continuous Integration from server to cloud
Continuous Integration from server to cloudContinuous Integration from server to cloud
Continuous Integration from server to cloud
 
Enterprise CI as-a-Service using Jenkins
Enterprise CI as-a-Service using JenkinsEnterprise CI as-a-Service using Jenkins
Enterprise CI as-a-Service using Jenkins
 
Yale Jenkins Show and Tell
Yale Jenkins Show and TellYale Jenkins Show and Tell
Yale Jenkins Show and Tell
 
Lessons Learned with Time-Based Releases for EFL
Lessons Learned with Time-Based Releases for EFLLessons Learned with Time-Based Releases for EFL
Lessons Learned with Time-Based Releases for EFL
 
CICD by Teerapat
CICD by TeerapatCICD by Teerapat
CICD by Teerapat
 
Continuous integration
Continuous integrationContinuous integration
Continuous integration
 
Anatomy of a Continuous Integration and Delivery (CICD) Pipeline
Anatomy of a Continuous Integration and Delivery (CICD) PipelineAnatomy of a Continuous Integration and Delivery (CICD) Pipeline
Anatomy of a Continuous Integration and Delivery (CICD) Pipeline
 
How to Build a DevOps Toolchain
How to Build a DevOps ToolchainHow to Build a DevOps Toolchain
How to Build a DevOps Toolchain
 
DevOps - Understanding Core Concepts
DevOps - Understanding Core ConceptsDevOps - Understanding Core Concepts
DevOps - Understanding Core Concepts
 
Introduction to CICD
Introduction to CICDIntroduction to CICD
Introduction to CICD
 
Continuous integration using jenkins
Continuous integration using jenkinsContinuous integration using jenkins
Continuous integration using jenkins
 
Jenkins CI
Jenkins CIJenkins CI
Jenkins CI
 

Viewers also liked

Editable Powerpoint office schedule template
Editable Powerpoint office schedule templateEditable Powerpoint office schedule template
Editable Powerpoint office schedule template
Office Timeline
 
Continuous Delivery with TeamCity8
Continuous Delivery with TeamCity8Continuous Delivery with TeamCity8
Continuous Delivery with TeamCity8
Volodymyr Melymuka
 
Release process for a project
Release process for a projectRelease process for a project
Release process for a project
Md Jawed
 
Data Management for Dummies
Data Management for DummiesData Management for Dummies
Data Management for Dummies
Dmitrii Kovalchuk
 
Manuel du marketing fondamental
Manuel du marketing fondamentalManuel du marketing fondamental
Manuel du marketing fondamental
Mehdia Belkaid
 
Creative Traction Methodology - For Early Stage Startups
Creative Traction Methodology - For Early Stage StartupsCreative Traction Methodology - For Early Stage Startups
Creative Traction Methodology - For Early Stage Startups
Tommaso Di Bartolo
 

Viewers also liked (6)

Editable Powerpoint office schedule template
Editable Powerpoint office schedule templateEditable Powerpoint office schedule template
Editable Powerpoint office schedule template
 
Continuous Delivery with TeamCity8
Continuous Delivery with TeamCity8Continuous Delivery with TeamCity8
Continuous Delivery with TeamCity8
 
Release process for a project
Release process for a projectRelease process for a project
Release process for a project
 
Data Management for Dummies
Data Management for DummiesData Management for Dummies
Data Management for Dummies
 
Manuel du marketing fondamental
Manuel du marketing fondamentalManuel du marketing fondamental
Manuel du marketing fondamental
 
Creative Traction Methodology - For Early Stage Startups
Creative Traction Methodology - For Early Stage StartupsCreative Traction Methodology - For Early Stage Startups
Creative Traction Methodology - For Early Stage Startups
 

Similar to Bring Your Project From a 10 Years to a 3 Months Release Cycle

From hello world to goodbye code
From hello world to goodbye codeFrom hello world to goodbye code
From hello world to goodbye code
Kim Moir
 
What_is_DevOps_how_it's_very_useful_in_daily_Life.
What_is_DevOps_how_it's_very_useful_in_daily_Life.What_is_DevOps_how_it's_very_useful_in_daily_Life.
What_is_DevOps_how_it's_very_useful_in_daily_Life.
anilpmuvvala
 
What is DevOps And How It Is Useful In Real life.
What is DevOps And How It Is Useful In Real life.What is DevOps And How It Is Useful In Real life.
What is DevOps And How It Is Useful In Real life.
anilpmuvvala
 
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
 
What_is_DevOps.pptx
What_is_DevOps.pptxWhat_is_DevOps.pptx
What_is_DevOps.pptx
mridulsharma774687
 
Git and Gerrit Code Review - Tech Talk - 2010_09_23
Git and Gerrit Code Review - Tech Talk - 2010_09_23Git and Gerrit Code Review - Tech Talk - 2010_09_23
Git and Gerrit Code Review - Tech Talk - 2010_09_23
msohn
 
Deploying more technology to shift from agility to anti-fragility
Deploying more technology to shift from agility to anti-fragilityDeploying more technology to shift from agility to anti-fragility
Deploying more technology to shift from agility to anti-fragility
Spyros Lambrinidis
 
DevOps and Build Automation
DevOps and Build AutomationDevOps and Build Automation
DevOps and Build Automation
Heiswayi Nrird
 
Introducing Continuous Integration Using Vsts
Introducing Continuous Integration Using VstsIntroducing Continuous Integration Using Vsts
Introducing Continuous Integration Using Vsts
Mohamed Samy
 
Continuous Everything
Continuous EverythingContinuous Everything
Continuous Everything
Andrea Tino
 
NYIT DSC/ Spring 2021 - Introduction to DevOps (CI/CD)
NYIT DSC/ Spring 2021 - Introduction to DevOps (CI/CD)NYIT DSC/ Spring 2021 - Introduction to DevOps (CI/CD)
NYIT DSC/ Spring 2021 - Introduction to DevOps (CI/CD)
Hui (Henry) Chen
 
White Paper: Release This! - Tools for a Smooth Release Cycle
White Paper: Release This! - Tools for a Smooth Release CycleWhite Paper: Release This! - Tools for a Smooth Release Cycle
White Paper: Release This! - Tools for a Smooth Release Cycle
Perforce
 
Devops - Continuous Integration And Continuous Development
Devops - Continuous Integration And Continuous DevelopmentDevops - Continuous Integration And Continuous Development
Devops - Continuous Integration And Continuous Development
SandyJohn5
 
[SiriusCon 2018] Closing session - Live Community Survey
[SiriusCon 2018] Closing session - Live Community Survey[SiriusCon 2018] Closing session - Live Community Survey
[SiriusCon 2018] Closing session - Live Community Survey
Obeo
 
A brief history of automation in Software Engineering
A brief history of automation in Software EngineeringA brief history of automation in Software Engineering
A brief history of automation in Software Engineering
Georg Buske
 
The very idea of ​​a DevOps service  httpsitoutposts.com    .docx
The very idea of ​​a DevOps service  httpsitoutposts.com    .docxThe very idea of ​​a DevOps service  httpsitoutposts.com    .docx
The very idea of ​​a DevOps service  httpsitoutposts.com    .docx
rhetttrevannion
 
#ESPC19 How to do #DevOps with #SPFx
#ESPC19 How to do #DevOps with #SPFx#ESPC19 How to do #DevOps with #SPFx
#ESPC19 How to do #DevOps with #SPFx
Vincent Biret
 
Improving Code Quality In Medical Software Through Code Reviews - Vincit Teat...
Improving Code Quality In Medical Software Through Code Reviews - Vincit Teat...Improving Code Quality In Medical Software Through Code Reviews - Vincit Teat...
Improving Code Quality In Medical Software Through Code Reviews - Vincit Teat...
VincitOy
 
Devops interview-questions-PDF
Devops interview-questions-PDFDevops interview-questions-PDF
Devops interview-questions-PDF
Mayank Kumar
 
DevOps culture, concepte , philosophie and practices
DevOps culture, concepte , philosophie and practicesDevOps culture, concepte , philosophie and practices
DevOps culture, concepte , philosophie and practices
ayoubbahaddouayoub
 

Similar to Bring Your Project From a 10 Years to a 3 Months Release Cycle (20)

From hello world to goodbye code
From hello world to goodbye codeFrom hello world to goodbye code
From hello world to goodbye code
 
What_is_DevOps_how_it's_very_useful_in_daily_Life.
What_is_DevOps_how_it's_very_useful_in_daily_Life.What_is_DevOps_how_it's_very_useful_in_daily_Life.
What_is_DevOps_how_it's_very_useful_in_daily_Life.
 
What is DevOps And How It Is Useful In Real life.
What is DevOps And How It Is Useful In Real life.What is DevOps And How It Is Useful In Real life.
What is DevOps And How It Is Useful In Real life.
 
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
 
What_is_DevOps.pptx
What_is_DevOps.pptxWhat_is_DevOps.pptx
What_is_DevOps.pptx
 
Git and Gerrit Code Review - Tech Talk - 2010_09_23
Git and Gerrit Code Review - Tech Talk - 2010_09_23Git and Gerrit Code Review - Tech Talk - 2010_09_23
Git and Gerrit Code Review - Tech Talk - 2010_09_23
 
Deploying more technology to shift from agility to anti-fragility
Deploying more technology to shift from agility to anti-fragilityDeploying more technology to shift from agility to anti-fragility
Deploying more technology to shift from agility to anti-fragility
 
DevOps and Build Automation
DevOps and Build AutomationDevOps and Build Automation
DevOps and Build Automation
 
Introducing Continuous Integration Using Vsts
Introducing Continuous Integration Using VstsIntroducing Continuous Integration Using Vsts
Introducing Continuous Integration Using Vsts
 
Continuous Everything
Continuous EverythingContinuous Everything
Continuous Everything
 
NYIT DSC/ Spring 2021 - Introduction to DevOps (CI/CD)
NYIT DSC/ Spring 2021 - Introduction to DevOps (CI/CD)NYIT DSC/ Spring 2021 - Introduction to DevOps (CI/CD)
NYIT DSC/ Spring 2021 - Introduction to DevOps (CI/CD)
 
White Paper: Release This! - Tools for a Smooth Release Cycle
White Paper: Release This! - Tools for a Smooth Release CycleWhite Paper: Release This! - Tools for a Smooth Release Cycle
White Paper: Release This! - Tools for a Smooth Release Cycle
 
Devops - Continuous Integration And Continuous Development
Devops - Continuous Integration And Continuous DevelopmentDevops - Continuous Integration And Continuous Development
Devops - Continuous Integration And Continuous Development
 
[SiriusCon 2018] Closing session - Live Community Survey
[SiriusCon 2018] Closing session - Live Community Survey[SiriusCon 2018] Closing session - Live Community Survey
[SiriusCon 2018] Closing session - Live Community Survey
 
A brief history of automation in Software Engineering
A brief history of automation in Software EngineeringA brief history of automation in Software Engineering
A brief history of automation in Software Engineering
 
The very idea of ​​a DevOps service  httpsitoutposts.com    .docx
The very idea of ​​a DevOps service  httpsitoutposts.com    .docxThe very idea of ​​a DevOps service  httpsitoutposts.com    .docx
The very idea of ​​a DevOps service  httpsitoutposts.com    .docx
 
#ESPC19 How to do #DevOps with #SPFx
#ESPC19 How to do #DevOps with #SPFx#ESPC19 How to do #DevOps with #SPFx
#ESPC19 How to do #DevOps with #SPFx
 
Improving Code Quality In Medical Software Through Code Reviews - Vincit Teat...
Improving Code Quality In Medical Software Through Code Reviews - Vincit Teat...Improving Code Quality In Medical Software Through Code Reviews - Vincit Teat...
Improving Code Quality In Medical Software Through Code Reviews - Vincit Teat...
 
Devops interview-questions-PDF
Devops interview-questions-PDFDevops interview-questions-PDF
Devops interview-questions-PDF
 
DevOps culture, concepte , philosophie and practices
DevOps culture, concepte , philosophie and practicesDevOps culture, concepte , philosophie and practices
DevOps culture, concepte , philosophie and practices
 

More from Samsung Open Source Group

The Complex IoT Equation (and FLOSS solutions)
The Complex IoT Equation (and FLOSS solutions)The Complex IoT Equation (and FLOSS solutions)
The Complex IoT Equation (and FLOSS solutions)
Samsung Open Source Group
 
Easy IoT with JavaScript
Easy IoT with JavaScriptEasy IoT with JavaScript
Easy IoT with JavaScript
Samsung Open Source Group
 
Spawny: A New Approach to Logins
Spawny: A New Approach to LoginsSpawny: A New Approach to Logins
Spawny: A New Approach to Logins
Samsung Open Source Group
 
Rapid SPi Device Driver Development over USB
Rapid SPi Device Driver Development over USBRapid SPi Device Driver Development over USB
Rapid SPi Device Driver Development over USB
Samsung Open Source Group
 
Tizen RT: A Lightweight RTOS Platform for Low-End IoT Devices
Tizen RT: A Lightweight RTOS Platform for Low-End IoT DevicesTizen RT: A Lightweight RTOS Platform for Low-End IoT Devices
Tizen RT: A Lightweight RTOS Platform for Low-End IoT Devices
Samsung Open Source Group
 
IoTivity: Smart Home to Automotive and Beyond
IoTivity: Smart Home to Automotive and BeyondIoTivity: Smart Home to Automotive and Beyond
IoTivity: Smart Home to Automotive and Beyond
Samsung Open Source Group
 
IoTivity for Automotive: meta-ocf-automotive tutorial
IoTivity for Automotive: meta-ocf-automotive tutorialIoTivity for Automotive: meta-ocf-automotive tutorial
IoTivity for Automotive: meta-ocf-automotive tutorial
Samsung Open Source Group
 
GENIVI + OCF Cooperation
GENIVI + OCF CooperationGENIVI + OCF Cooperation
GENIVI + OCF Cooperation
Samsung Open Source Group
 
Framework for IoT Interoperability
Framework for IoT InteroperabilityFramework for IoT Interoperability
Framework for IoT Interoperability
Samsung Open Source Group
 
Open Source Metrics to Inform Corporate Strategy
Open Source Metrics to Inform Corporate StrategyOpen Source Metrics to Inform Corporate Strategy
Open Source Metrics to Inform Corporate Strategy
Samsung Open Source Group
 
IoTivity for Automotive IoT Interoperability
IoTivity for Automotive IoT InteroperabilityIoTivity for Automotive IoT Interoperability
IoTivity for Automotive IoT Interoperability
Samsung Open Source Group
 
JerryScript: An ultra-lighteweight JavaScript Engine for the Internet of Thin...
JerryScript: An ultra-lighteweight JavaScript Engine for the Internet of Thin...JerryScript: An ultra-lighteweight JavaScript Engine for the Internet of Thin...
JerryScript: An ultra-lighteweight JavaScript Engine for the Internet of Thin...
Samsung Open Source Group
 
Adding IEEE 802.15.4 and 6LoWPAN to an Embedded Linux Device
Adding IEEE 802.15.4 and 6LoWPAN to an Embedded Linux DeviceAdding IEEE 802.15.4 and 6LoWPAN to an Embedded Linux Device
Adding IEEE 802.15.4 and 6LoWPAN to an Embedded Linux Device
Samsung Open Source Group
 
IoTivity: From Devices to the Cloud
IoTivity: From Devices to the CloudIoTivity: From Devices to the Cloud
IoTivity: From Devices to the Cloud
Samsung Open Source Group
 
SOSCON 2016 JerryScript
SOSCON 2016 JerryScriptSOSCON 2016 JerryScript
SOSCON 2016 JerryScript
Samsung Open Source Group
 
IoT: From Arduino Microcontrollers to Tizen Products using IoTivity
IoT: From Arduino Microcontrollers to Tizen Products using IoTivityIoT: From Arduino Microcontrollers to Tizen Products using IoTivity
IoT: From Arduino Microcontrollers to Tizen Products using IoTivity
Samsung Open Source Group
 
Run Your Own 6LoWPAN Based IoT Network
Run Your Own 6LoWPAN Based IoT NetworkRun Your Own 6LoWPAN Based IoT Network
Run Your Own 6LoWPAN Based IoT Network
Samsung Open Source Group
 
Practical Guide to Run an IEEE 802.15.4 Network with 6LoWPAN Under Linux
Practical Guide to Run an IEEE 802.15.4 Network with 6LoWPAN Under LinuxPractical Guide to Run an IEEE 802.15.4 Network with 6LoWPAN Under Linux
Practical Guide to Run an IEEE 802.15.4 Network with 6LoWPAN Under Linux
Samsung Open Source Group
 
IoTivity Tutorial: Prototyping IoT Devices on GNU/Linux
IoTivity Tutorial: Prototyping IoT Devices on GNU/LinuxIoTivity Tutorial: Prototyping IoT Devices on GNU/Linux
IoTivity Tutorial: Prototyping IoT Devices on GNU/Linux
Samsung Open Source Group
 
JerryScript: An ultra-lighteweight JavaScript Engine for the Internet of Things
JerryScript: An ultra-lighteweight JavaScript Engine for the Internet of ThingsJerryScript: An ultra-lighteweight JavaScript Engine for the Internet of Things
JerryScript: An ultra-lighteweight JavaScript Engine for the Internet of Things
Samsung Open Source Group
 

More from Samsung Open Source Group (20)

The Complex IoT Equation (and FLOSS solutions)
The Complex IoT Equation (and FLOSS solutions)The Complex IoT Equation (and FLOSS solutions)
The Complex IoT Equation (and FLOSS solutions)
 
Easy IoT with JavaScript
Easy IoT with JavaScriptEasy IoT with JavaScript
Easy IoT with JavaScript
 
Spawny: A New Approach to Logins
Spawny: A New Approach to LoginsSpawny: A New Approach to Logins
Spawny: A New Approach to Logins
 
Rapid SPi Device Driver Development over USB
Rapid SPi Device Driver Development over USBRapid SPi Device Driver Development over USB
Rapid SPi Device Driver Development over USB
 
Tizen RT: A Lightweight RTOS Platform for Low-End IoT Devices
Tizen RT: A Lightweight RTOS Platform for Low-End IoT DevicesTizen RT: A Lightweight RTOS Platform for Low-End IoT Devices
Tizen RT: A Lightweight RTOS Platform for Low-End IoT Devices
 
IoTivity: Smart Home to Automotive and Beyond
IoTivity: Smart Home to Automotive and BeyondIoTivity: Smart Home to Automotive and Beyond
IoTivity: Smart Home to Automotive and Beyond
 
IoTivity for Automotive: meta-ocf-automotive tutorial
IoTivity for Automotive: meta-ocf-automotive tutorialIoTivity for Automotive: meta-ocf-automotive tutorial
IoTivity for Automotive: meta-ocf-automotive tutorial
 
GENIVI + OCF Cooperation
GENIVI + OCF CooperationGENIVI + OCF Cooperation
GENIVI + OCF Cooperation
 
Framework for IoT Interoperability
Framework for IoT InteroperabilityFramework for IoT Interoperability
Framework for IoT Interoperability
 
Open Source Metrics to Inform Corporate Strategy
Open Source Metrics to Inform Corporate StrategyOpen Source Metrics to Inform Corporate Strategy
Open Source Metrics to Inform Corporate Strategy
 
IoTivity for Automotive IoT Interoperability
IoTivity for Automotive IoT InteroperabilityIoTivity for Automotive IoT Interoperability
IoTivity for Automotive IoT Interoperability
 
JerryScript: An ultra-lighteweight JavaScript Engine for the Internet of Thin...
JerryScript: An ultra-lighteweight JavaScript Engine for the Internet of Thin...JerryScript: An ultra-lighteweight JavaScript Engine for the Internet of Thin...
JerryScript: An ultra-lighteweight JavaScript Engine for the Internet of Thin...
 
Adding IEEE 802.15.4 and 6LoWPAN to an Embedded Linux Device
Adding IEEE 802.15.4 and 6LoWPAN to an Embedded Linux DeviceAdding IEEE 802.15.4 and 6LoWPAN to an Embedded Linux Device
Adding IEEE 802.15.4 and 6LoWPAN to an Embedded Linux Device
 
IoTivity: From Devices to the Cloud
IoTivity: From Devices to the CloudIoTivity: From Devices to the Cloud
IoTivity: From Devices to the Cloud
 
SOSCON 2016 JerryScript
SOSCON 2016 JerryScriptSOSCON 2016 JerryScript
SOSCON 2016 JerryScript
 
IoT: From Arduino Microcontrollers to Tizen Products using IoTivity
IoT: From Arduino Microcontrollers to Tizen Products using IoTivityIoT: From Arduino Microcontrollers to Tizen Products using IoTivity
IoT: From Arduino Microcontrollers to Tizen Products using IoTivity
 
Run Your Own 6LoWPAN Based IoT Network
Run Your Own 6LoWPAN Based IoT NetworkRun Your Own 6LoWPAN Based IoT Network
Run Your Own 6LoWPAN Based IoT Network
 
Practical Guide to Run an IEEE 802.15.4 Network with 6LoWPAN Under Linux
Practical Guide to Run an IEEE 802.15.4 Network with 6LoWPAN Under LinuxPractical Guide to Run an IEEE 802.15.4 Network with 6LoWPAN Under Linux
Practical Guide to Run an IEEE 802.15.4 Network with 6LoWPAN Under Linux
 
IoTivity Tutorial: Prototyping IoT Devices on GNU/Linux
IoTivity Tutorial: Prototyping IoT Devices on GNU/LinuxIoTivity Tutorial: Prototyping IoT Devices on GNU/Linux
IoTivity Tutorial: Prototyping IoT Devices on GNU/Linux
 
JerryScript: An ultra-lighteweight JavaScript Engine for the Internet of Things
JerryScript: An ultra-lighteweight JavaScript Engine for the Internet of ThingsJerryScript: An ultra-lighteweight JavaScript Engine for the Internet of Things
JerryScript: An ultra-lighteweight JavaScript Engine for the Internet of Things
 

Recently uploaded

Premium Girls Call Mumbai 9920725232 Unlimited Short Providing Girls Service ...
Premium Girls Call Mumbai 9920725232 Unlimited Short Providing Girls Service ...Premium Girls Call Mumbai 9920725232 Unlimited Short Providing Girls Service ...
Premium Girls Call Mumbai 9920725232 Unlimited Short Providing Girls Service ...
shanihomely
 
Zaitechno Handheld Raman Spectrometer.pdf
Zaitechno Handheld Raman Spectrometer.pdfZaitechno Handheld Raman Spectrometer.pdf
Zaitechno Handheld Raman Spectrometer.pdf
AmandaCheung15
 
Discovery Series - Zero to Hero - Task Mining Session 1
Discovery Series - Zero to Hero - Task Mining Session 1Discovery Series - Zero to Hero - Task Mining Session 1
Discovery Series - Zero to Hero - Task Mining Session 1
DianaGray10
 
Latest Tech Trends Series 2024 By EY India
Latest Tech Trends Series 2024 By EY IndiaLatest Tech Trends Series 2024 By EY India
Latest Tech Trends Series 2024 By EY India
EYIndia1
 
Accelerating Migrations = Recommendations
Accelerating Migrations = RecommendationsAccelerating Migrations = Recommendations
Accelerating Migrations = Recommendations
isBullShit
 
Demystifying Neural Networks And Building Cybersecurity Applications
Demystifying Neural Networks And Building Cybersecurity ApplicationsDemystifying Neural Networks And Building Cybersecurity Applications
Demystifying Neural Networks And Building Cybersecurity Applications
Priyanka Aash
 
What's New in Teams Calling, Meetings, Devices June 2024
What's New in Teams Calling, Meetings, Devices June 2024What's New in Teams Calling, Meetings, Devices June 2024
What's New in Teams Calling, Meetings, Devices June 2024
Stephanie Beckett
 
The Path to General-Purpose Robots - Coatue
The Path to General-Purpose Robots - CoatueThe Path to General-Purpose Robots - Coatue
The Path to General-Purpose Robots - Coatue
Razin Mustafiz
 
It's your unstructured data: How to get your GenAI app to production (and spe...
It's your unstructured data: How to get your GenAI app to production (and spe...It's your unstructured data: How to get your GenAI app to production (and spe...
It's your unstructured data: How to get your GenAI app to production (and spe...
Zilliz
 
Integrating Kafka with MuleSoft 4 and usecase
Integrating Kafka with MuleSoft 4 and usecaseIntegrating Kafka with MuleSoft 4 and usecase
Integrating Kafka with MuleSoft 4 and usecase
shyamraj55
 
How UiPath Discovery Suite supports identification of Agentic Process Automat...
How UiPath Discovery Suite supports identification of Agentic Process Automat...How UiPath Discovery Suite supports identification of Agentic Process Automat...
How UiPath Discovery Suite supports identification of Agentic Process Automat...
DianaGray10
 
Improving Learning Content Efficiency with Reusable Learning Content
Improving Learning Content Efficiency with Reusable Learning ContentImproving Learning Content Efficiency with Reusable Learning Content
Improving Learning Content Efficiency with Reusable Learning Content
Enterprise Knowledge
 
Connector Corner: Leveraging Snowflake Integration for Smarter Decision Making
Connector Corner: Leveraging Snowflake Integration for Smarter Decision MakingConnector Corner: Leveraging Snowflake Integration for Smarter Decision Making
Connector Corner: Leveraging Snowflake Integration for Smarter Decision Making
DianaGray10
 
Required Documents for ISO 17021 Certification.PPT
Required Documents for ISO 17021 Certification.PPTRequired Documents for ISO 17021 Certification.PPT
Required Documents for ISO 17021 Certification.PPT
mithun772
 
Vulnerability Management: A Comprehensive Overview
Vulnerability Management: A Comprehensive OverviewVulnerability Management: A Comprehensive Overview
Vulnerability Management: A Comprehensive Overview
Steven Carlson
 
NVIDIA at Breakthrough Discuss for Space Exploration
NVIDIA at Breakthrough Discuss for Space ExplorationNVIDIA at Breakthrough Discuss for Space Exploration
NVIDIA at Breakthrough Discuss for Space Exploration
Alison B. Lowndes
 
Mastering OnlyFans Clone App Development: Key Strategies for Success
Mastering OnlyFans Clone App Development: Key Strategies for SuccessMastering OnlyFans Clone App Development: Key Strategies for Success
Mastering OnlyFans Clone App Development: Key Strategies for Success
David Wilson
 
Uncharted Together- Navigating AI's New Frontiers in Libraries
Uncharted Together- Navigating AI's New Frontiers in LibrariesUncharted Together- Navigating AI's New Frontiers in Libraries
Uncharted Together- Navigating AI's New Frontiers in Libraries
Brian Pichman
 
Retrieval Augmented Generation Evaluation with Ragas
Retrieval Augmented Generation Evaluation with RagasRetrieval Augmented Generation Evaluation with Ragas
Retrieval Augmented Generation Evaluation with Ragas
Zilliz
 
Types of Weaving loom machine & it's technology
Types of Weaving loom machine & it's technologyTypes of Weaving loom machine & it's technology
Types of Weaving loom machine & it's technology
ldtexsolbl
 

Recently uploaded (20)

Premium Girls Call Mumbai 9920725232 Unlimited Short Providing Girls Service ...
Premium Girls Call Mumbai 9920725232 Unlimited Short Providing Girls Service ...Premium Girls Call Mumbai 9920725232 Unlimited Short Providing Girls Service ...
Premium Girls Call Mumbai 9920725232 Unlimited Short Providing Girls Service ...
 
Zaitechno Handheld Raman Spectrometer.pdf
Zaitechno Handheld Raman Spectrometer.pdfZaitechno Handheld Raman Spectrometer.pdf
Zaitechno Handheld Raman Spectrometer.pdf
 
Discovery Series - Zero to Hero - Task Mining Session 1
Discovery Series - Zero to Hero - Task Mining Session 1Discovery Series - Zero to Hero - Task Mining Session 1
Discovery Series - Zero to Hero - Task Mining Session 1
 
Latest Tech Trends Series 2024 By EY India
Latest Tech Trends Series 2024 By EY IndiaLatest Tech Trends Series 2024 By EY India
Latest Tech Trends Series 2024 By EY India
 
Accelerating Migrations = Recommendations
Accelerating Migrations = RecommendationsAccelerating Migrations = Recommendations
Accelerating Migrations = Recommendations
 
Demystifying Neural Networks And Building Cybersecurity Applications
Demystifying Neural Networks And Building Cybersecurity ApplicationsDemystifying Neural Networks And Building Cybersecurity Applications
Demystifying Neural Networks And Building Cybersecurity Applications
 
What's New in Teams Calling, Meetings, Devices June 2024
What's New in Teams Calling, Meetings, Devices June 2024What's New in Teams Calling, Meetings, Devices June 2024
What's New in Teams Calling, Meetings, Devices June 2024
 
The Path to General-Purpose Robots - Coatue
The Path to General-Purpose Robots - CoatueThe Path to General-Purpose Robots - Coatue
The Path to General-Purpose Robots - Coatue
 
It's your unstructured data: How to get your GenAI app to production (and spe...
It's your unstructured data: How to get your GenAI app to production (and spe...It's your unstructured data: How to get your GenAI app to production (and spe...
It's your unstructured data: How to get your GenAI app to production (and spe...
 
Integrating Kafka with MuleSoft 4 and usecase
Integrating Kafka with MuleSoft 4 and usecaseIntegrating Kafka with MuleSoft 4 and usecase
Integrating Kafka with MuleSoft 4 and usecase
 
How UiPath Discovery Suite supports identification of Agentic Process Automat...
How UiPath Discovery Suite supports identification of Agentic Process Automat...How UiPath Discovery Suite supports identification of Agentic Process Automat...
How UiPath Discovery Suite supports identification of Agentic Process Automat...
 
Improving Learning Content Efficiency with Reusable Learning Content
Improving Learning Content Efficiency with Reusable Learning ContentImproving Learning Content Efficiency with Reusable Learning Content
Improving Learning Content Efficiency with Reusable Learning Content
 
Connector Corner: Leveraging Snowflake Integration for Smarter Decision Making
Connector Corner: Leveraging Snowflake Integration for Smarter Decision MakingConnector Corner: Leveraging Snowflake Integration for Smarter Decision Making
Connector Corner: Leveraging Snowflake Integration for Smarter Decision Making
 
Required Documents for ISO 17021 Certification.PPT
Required Documents for ISO 17021 Certification.PPTRequired Documents for ISO 17021 Certification.PPT
Required Documents for ISO 17021 Certification.PPT
 
Vulnerability Management: A Comprehensive Overview
Vulnerability Management: A Comprehensive OverviewVulnerability Management: A Comprehensive Overview
Vulnerability Management: A Comprehensive Overview
 
NVIDIA at Breakthrough Discuss for Space Exploration
NVIDIA at Breakthrough Discuss for Space ExplorationNVIDIA at Breakthrough Discuss for Space Exploration
NVIDIA at Breakthrough Discuss for Space Exploration
 
Mastering OnlyFans Clone App Development: Key Strategies for Success
Mastering OnlyFans Clone App Development: Key Strategies for SuccessMastering OnlyFans Clone App Development: Key Strategies for Success
Mastering OnlyFans Clone App Development: Key Strategies for Success
 
Uncharted Together- Navigating AI's New Frontiers in Libraries
Uncharted Together- Navigating AI's New Frontiers in LibrariesUncharted Together- Navigating AI's New Frontiers in Libraries
Uncharted Together- Navigating AI's New Frontiers in Libraries
 
Retrieval Augmented Generation Evaluation with Ragas
Retrieval Augmented Generation Evaluation with RagasRetrieval Augmented Generation Evaluation with Ragas
Retrieval Augmented Generation Evaluation with Ragas
 
Types of Weaving loom machine & it's technology
Types of Weaving loom machine & it's technologyTypes of Weaving loom machine & it's technology
Types of Weaving loom machine & it's technology
 

Bring Your Project From a 10 Years to a 3 Months Release Cycle

  • 1. Bring Your Project From a 10 Years to a 3 Months Release Cycle Stefan Schmidt
  • 3. Introduction Enlightenment is not a web project Instead it is written in plain C Enlightenment is not developed by a StartUp Instead it is developed by the FOSS community and companies such as Samsung Enlightenment is not developed by a 5 person team in one office Instead it is developed by an international team distributed over many timezones All this might result in different understandings of agile development :-)
  • 5. Release History The Enlightenment project started in 1997 by Carsten Haitzler Some early releases until E 0.16 A 12 years gap from first code to release E 0.17 Building a whole new set of libraries for it but no releases for them either for a long time More release driven now but still feature based and not time based schedule
  • 6. Reasoning Most of the active developers at that time did not see a need for releases It was a project driven by volunteers which used the code straight out of CVS/SVN Some argued for it as the fastest agile development cycle ;-) Nobody stood up for taking care of the releases so it did not get done
  • 7. What Changed? Different people joined the project which had more interested in releases Most Linux distributions wanted us to do releases before including our code Commercial parties also asked for releases With the pressure also the understanding grow that releases would help the project forward
  • 8. How did we do it? That is what the rest of the talk is about From the technological side we improved our tools and infrastructure On the social side we steadily worked on giving releases a more prominent role
  • 10. Tools and Automation One of the biggest roadblocks is to build trust in the code base you are going to release In the Enlightenment project with the two main libraries alone having around 850.000 lines of code You need a variation of tools that will help you to build up this trust SCM, automated builds and maybe continuous integration, static analyzers just to name a few
  • 11. SCM and Understandable Commits As an very old project CVS was used in the beginning Switch to SVN for a newer tool but same old practices Large amounts of work committed as one change Many unrelated changes at once Switch to git After some struggling it helped to allow people working on different things without dumping everything into master Improved overall commits, code as well as commit messages People start to develop larger changes in branches
  • 12. Automated Builds Setup automated builds with Jenkins Quick builds for every change pushed pushed to master Building for x86, x86_64, x32 with gcc as well as clang and also cross-compilation for windows with mingw Very useful as many developer only use one system for their work Many of the discovered problems are getting fixed instantly (see social pressure) In the dark times before we had this setup builds have been broken for some configurations for months During the nightly builds we run time intensive things like static analyzers and other testing
  • 13. Static Analyzer Static analyzer can be very helpful for a plain C project Started with scan-build, part of clang, from the LLVM project Output quite noise and sadly a lot false positives Also experimented with klocwork but the proprietary nature made it hard to share results with the community Now also using Coverity which is also proprietary but offers a free service for FOSS projects Especially Coverity uncovered quite some issues which have been overlooked by code review You still have to deal with false positives but the signal to noise ratio is way better
  • 14. Test Suite We have unit testing for a lot of components But with 358 tests we only cover 29.4% of our lines of code We are an UI toolkit so work is also ongoing on pixel perfect regression testing We are still weak on the automated testing side and need to improve One of the bigger worries before every release
  • 15. Build Complexity By history the Enlightenment project was happy to add configuration options Over the last two years we tried to reduce these options to something maintainable Merged libs allow easier maintenance. 11 different libs have been merged into EFL All of these actions had direct influence on how much different configurations we can test The reduced set of libraries also eased the release process
  • 17. General Social Changes Once we had IRC and email notification about broken builds social pressure grow to fix them Keep people in the loop and highlight positive changes (e.g. weekly QA newsletter) Most people have been ok with adapting to changes but you have to provide docs and guidance People follow the lead but would not have done it on their own. (e.g. backports of fixes to stable branches)
  • 18. Towards Releases Easier once we came over a long time without a release Getting into the habit to do releases more often Core application now do releases a while after the libraries Happened naturally Switch to time based releases. Now fine tuning the process to identify problems Took over as release manager (Only because I build up trust to the code base due to all the automation) There need to be proof that it will really work Invest time to make a sane and realistic schedule
  • 20. Changes to come ABI checker to avoid breakage surprises after a release Jenkins job that builds a magic developer branch Allowing developers to tests their changes for many configurations Thinking about adding arm builds to jenkins Thinking about running automated valgrind runs to detect memory issues (-fsanitize* could be an alternative) Fine tuning of the release process Think about regression test. Having them mandatory for fixes might blow our man power. Integrate the pixel perfect regression tester with jenkins for fast feedback
  • 21. Changes that might never come Every commit runs through our jenkins testing before it goes into master (Qt project does this) More code review for core developers before changes hit the repo Hard to bring in as many developers want to avoid any delay before the code hits the repo Automate the release process (NEWS generation, announcement templates, upload tarballs, etc) A simple version bump and pushed git tag might be enough to get it all done :-)
  • 22. Summary – What you should take home Automate as much as possible to keep the workload down and the project always in a good state Invest in all kind of tools to make your job easier Show the benefits of more regular releases and proof that it is possible Keep on fine tuning the process to avoid as much problems as possible Expect that people will only follow if you give them the lead and show how the process could work