SlideShare uma empresa Scribd logo
1 de 24
Baixar para ler offline
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

Mais conteúdo relacionado

Mais procurados

Jenkins Introduction
Jenkins IntroductionJenkins Introduction
Jenkins IntroductionPavan 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 developerAbe Diaz
 
Intro to DevOps 4 undergraduates
Intro to DevOps 4 undergraduates Intro to DevOps 4 undergraduates
Intro to DevOps 4 undergraduates Liran Levy
 
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 DeploymentChristopher Read
 
Continuous integration
Continuous integrationContinuous integration
Continuous integrationhugo 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 cloudPaolo 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 JenkinsCollabNet
 
Yale Jenkins Show and Tell
Yale Jenkins Show and TellYale Jenkins Show and Tell
Yale Jenkins Show and TellE. 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 EFLSamsung Open Source Group
 
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) PipelineRobert McDermott
 
DevOps - Understanding Core Concepts
DevOps - Understanding Core ConceptsDevOps - Understanding Core Concepts
DevOps - Understanding Core ConceptsNitin Bhide
 
Introduction to CICD
Introduction to CICDIntroduction to CICD
Introduction to CICDKnoldus Inc.
 
Continuous integration using jenkins
Continuous integration using jenkinsContinuous integration using jenkins
Continuous integration using jenkinsVinay H G
 

Mais procurados (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
 

Destaque

Editable Powerpoint office schedule template
Editable Powerpoint office schedule templateEditable Powerpoint office schedule template
Editable Powerpoint office schedule templateOffice Timeline
 
Continuous Delivery with TeamCity8
Continuous Delivery with TeamCity8Continuous Delivery with TeamCity8
Continuous Delivery with TeamCity8Volodymyr Melymuka
 
Release process for a project
Release process for a projectRelease process for a project
Release process for a projectMd Jawed
 
Manuel du marketing fondamental
Manuel du marketing fondamentalManuel du marketing fondamental
Manuel du marketing fondamentalMehdia 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 StartupsTommaso Di Bartolo
 

Destaque (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
 

Semelhante a 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 codeKim Moir
 
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
 
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
 
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 LinuxPVS-Studio
 
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_23msohn
 
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-fragilitySpyros Lambrinidis
 
DevOps and Build Automation
DevOps and Build AutomationDevOps and Build Automation
DevOps and Build AutomationHeiswayi Nrird
 
Introducing Continuous Integration Using Vsts
Introducing Continuous Integration Using VstsIntroducing Continuous Integration Using Vsts
Introducing Continuous Integration Using VstsMohamed Samy
 
Continuous Everything
Continuous EverythingContinuous Everything
Continuous EverythingAndrea 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 CyclePerforce
 
Devops - Continuous Integration And Continuous Development
Devops - Continuous Integration And Continuous DevelopmentDevops - Continuous Integration And Continuous Development
Devops - Continuous Integration And Continuous DevelopmentSandyJohn5
 
[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 SurveyObeo
 
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 EngineeringGeorg 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    .docxrhetttrevannion
 
#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 #SPFxVincent 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-PDFMayank Kumar
 
DevOps culture, concepte , philosophie and practices
DevOps culture, concepte , philosophie and practicesDevOps culture, concepte , philosophie and practices
DevOps culture, concepte , philosophie and practicesayoubbahaddouayoub
 

Semelhante a 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 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.
 
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.
 
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
 

Mais de 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
 
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 USBSamsung 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 DevicesSamsung 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 BeyondSamsung 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 tutorialSamsung 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 StrategySamsung Open Source Group
 
IoTivity for Automotive IoT Interoperability
IoTivity for Automotive IoT InteroperabilityIoTivity for Automotive IoT Interoperability
IoTivity for Automotive IoT InteroperabilitySamsung 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 DeviceSamsung 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 IoTivitySamsung 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 LinuxSamsung 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/LinuxSamsung 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 ThingsSamsung Open Source Group
 

Mais de 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
 

Último

Ransomware_Q4_2023. The report. [EN].pdf
Ransomware_Q4_2023. The report. [EN].pdfRansomware_Q4_2023. The report. [EN].pdf
Ransomware_Q4_2023. The report. [EN].pdfOverkill Security
 
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...Zilliz
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Scriptwesley chun
 
Apidays Singapore 2024 - Modernizing Securities Finance by Madhu Subbu
Apidays Singapore 2024 - Modernizing Securities Finance by Madhu SubbuApidays Singapore 2024 - Modernizing Securities Finance by Madhu Subbu
Apidays Singapore 2024 - Modernizing Securities Finance by Madhu Subbuapidays
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonAnna Loughnan Colquhoun
 
Navi Mumbai Call Girls 🥰 8617370543 Service Offer VIP Hot Model
Navi Mumbai Call Girls 🥰 8617370543 Service Offer VIP Hot ModelNavi Mumbai Call Girls 🥰 8617370543 Service Offer VIP Hot Model
Navi Mumbai Call Girls 🥰 8617370543 Service Offer VIP Hot ModelDeepika Singh
 
Why Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businessWhy Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businesspanagenda
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processorsdebabhi2
 
ICT role in 21st century education and its challenges
ICT role in 21st century education and its challengesICT role in 21st century education and its challenges
ICT role in 21st century education and its challengesrafiqahmad00786416
 
MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024MIND CTI
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfsudhanshuwaghmare1
 
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost SavingRepurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost SavingEdi Saputra
 
presentation ICT roal in 21st century education
presentation ICT roal in 21st century educationpresentation ICT roal in 21st century education
presentation ICT roal in 21st century educationjfdjdjcjdnsjd
 
Corporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptxCorporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptxRustici Software
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FMESafe Software
 
Artificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : UncertaintyArtificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : UncertaintyKhushali Kathiriya
 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProduct Anonymous
 
Apidays Singapore 2024 - Scalable LLM APIs for AI and Generative AI Applicati...
Apidays Singapore 2024 - Scalable LLM APIs for AI and Generative AI Applicati...Apidays Singapore 2024 - Scalable LLM APIs for AI and Generative AI Applicati...
Apidays Singapore 2024 - Scalable LLM APIs for AI and Generative AI Applicati...apidays
 
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoffsammart93
 
Architecting Cloud Native Applications
Architecting Cloud Native ApplicationsArchitecting Cloud Native Applications
Architecting Cloud Native ApplicationsWSO2
 

Último (20)

Ransomware_Q4_2023. The report. [EN].pdf
Ransomware_Q4_2023. The report. [EN].pdfRansomware_Q4_2023. The report. [EN].pdf
Ransomware_Q4_2023. The report. [EN].pdf
 
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Script
 
Apidays Singapore 2024 - Modernizing Securities Finance by Madhu Subbu
Apidays Singapore 2024 - Modernizing Securities Finance by Madhu SubbuApidays Singapore 2024 - Modernizing Securities Finance by Madhu Subbu
Apidays Singapore 2024 - Modernizing Securities Finance by Madhu Subbu
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt Robison
 
Navi Mumbai Call Girls 🥰 8617370543 Service Offer VIP Hot Model
Navi Mumbai Call Girls 🥰 8617370543 Service Offer VIP Hot ModelNavi Mumbai Call Girls 🥰 8617370543 Service Offer VIP Hot Model
Navi Mumbai Call Girls 🥰 8617370543 Service Offer VIP Hot Model
 
Why Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businessWhy Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire business
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processors
 
ICT role in 21st century education and its challenges
ICT role in 21st century education and its challengesICT role in 21st century education and its challenges
ICT role in 21st century education and its challenges
 
MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdf
 
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost SavingRepurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
 
presentation ICT roal in 21st century education
presentation ICT roal in 21st century educationpresentation ICT roal in 21st century education
presentation ICT roal in 21st century education
 
Corporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptxCorporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptx
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
 
Artificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : UncertaintyArtificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : Uncertainty
 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
 
Apidays Singapore 2024 - Scalable LLM APIs for AI and Generative AI Applicati...
Apidays Singapore 2024 - Scalable LLM APIs for AI and Generative AI Applicati...Apidays Singapore 2024 - Scalable LLM APIs for AI and Generative AI Applicati...
Apidays Singapore 2024 - Scalable LLM APIs for AI and Generative AI Applicati...
 
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
 
Architecting Cloud Native Applications
Architecting Cloud Native ApplicationsArchitecting Cloud Native Applications
Architecting Cloud Native Applications
 

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