SlideShare a Scribd company logo
Orfeo ToolBox users meeting and hackfest 2015
The new modular build system of OTB 5
OTB development team
3 - 5 june 2015, Toulouse
Motivations : the status with OTB <= 4.0
Code in directories but no real build dependency (cyclic dependencies between
directories)
Third parties : a maintainance hell (activation/deactivation, external/internal,
interdependencies)
Build system written in ancient CMake times ( version 2.4), no redesign since
then
Hard for newcomers to add new functionnalities without touching everything,
even more when introducing new third parties
Design choices
Let’s do it the ITK way : they faced the same issue a few years ago. The CMake
gurus did the work
State-of-the-art renewed CMake code : a bunch of new features, and ready for
later improvements
No more third party code inside OTB code (to the maximum extent...)
What modular means ?
The OTB classes are organized in self-contained directories called modules
One module contain headers, definitions, tests, applications, ... for all classes of
the module
Dependency tracking between modules is at the heart of the system : enable a
module and its dependencies are enabled automatically
Only build what you want/use
Third parties are also modules now
Modules are organized in thematic Groups (no real build consequences here)
How do I build OTB now?
Still with CMake, but way easier.
Less CMake options visible (unless you switch to advanced mode)
Better option naming, systematic : OTB USE XXX for third parties
Third parties are always external now. They can only be activated or not.
A default set of modules is defined
The internals
Module enablement evaluated in two passes
Modules which are activated
Third party deactivated, with all its dependees
BUILD DEFAULT MODULE
ON = all modules activated, except Mapnik and its dependees
OFF = you choose each enabled module with the Module XXX option
OTB USE XXX
Only for third parties
Easy way to disable a third party and all its dependees
Is evaluated after the first
What does a module look like ?
A directory in the Modules subdir :
otb-module.cmake and CMakeLists.txt file
include subdir : for .hxx files
src subdir : for .cxx files and a CMakeLists.txt. headers in here are not installed
test subdir : for tests
app subdir : for applications
See the Remote Module presentation for building a module from scratch in 5 minutes.
Hey wait !
I don’t care about your dependency hell, just build me the damned thing :
Superbuild (in a few minutes)
Can I reuse this for my work : Remote modules (in a few minutes)

More Related Content

Viewers also liked

Monteverdi 2.0 - Remote sensing software for Pleiades images analysis
Monteverdi 2.0 - Remote sensing software for Pleiades images analysisMonteverdi 2.0 - Remote sensing software for Pleiades images analysis
Monteverdi 2.0 - Remote sensing software for Pleiades images analysis
otb
 
Monitoring tropical forest cover Activities of ONFI in remote sensing
Monitoring tropical forest cover Activities of ONFI in remote sensingMonitoring tropical forest cover Activities of ONFI in remote sensing
Monitoring tropical forest cover Activities of ONFI in remote sensing
otb
 
ONLINE IMAGE PROCESSING WITH ORFEOTOOLBOX WPS
ONLINE IMAGE PROCESSING WITH ORFEOTOOLBOX WPSONLINE IMAGE PROCESSING WITH ORFEOTOOLBOX WPS
ONLINE IMAGE PROCESSING WITH ORFEOTOOLBOX WPS
otb
 
Teaching Remote Sensing with OTB Applications & Monterverdi (and a little of ...
Teaching Remote Sensing with OTB Applications & Monterverdi (and a little of ...Teaching Remote Sensing with OTB Applications & Monterverdi (and a little of ...
Teaching Remote Sensing with OTB Applications & Monterverdi (and a little of ...
otb
 
ORFEO ToolBox Project Steering committee
ORFEO ToolBox Project Steering committeeORFEO ToolBox Project Steering committee
ORFEO ToolBox Project Steering committee
otb
 
Développement des chaînes de traitement d'images GEOSUD
Développement des chaînes de traitement d'images GEOSUDDéveloppement des chaînes de traitement d'images GEOSUD
Développement des chaînes de traitement d'images GEOSUD
otb
 
Orfeo ToolBox workshop at FOSS4G Europe 2015
Orfeo ToolBox workshop at FOSS4G Europe 2015Orfeo ToolBox workshop at FOSS4G Europe 2015
Orfeo ToolBox workshop at FOSS4G Europe 2015
otb
 
General presentation of OTB
General presentation of OTBGeneral presentation of OTB
General presentation of OTB
otb
 
OTB: logiciel libre de traitement d'images satellites
OTB: logiciel libre de traitement d'images satellitesOTB: logiciel libre de traitement d'images satellites
OTB: logiciel libre de traitement d'images satellites
otb
 
Présentation générale de l'Orfeo ToolBox (12.2014)
Présentation générale de l'Orfeo ToolBox (12.2014)Présentation générale de l'Orfeo ToolBox (12.2014)
Présentation générale de l'Orfeo ToolBox (12.2014)
otb
 

Viewers also liked (10)

Monteverdi 2.0 - Remote sensing software for Pleiades images analysis
Monteverdi 2.0 - Remote sensing software for Pleiades images analysisMonteverdi 2.0 - Remote sensing software for Pleiades images analysis
Monteverdi 2.0 - Remote sensing software for Pleiades images analysis
 
Monitoring tropical forest cover Activities of ONFI in remote sensing
Monitoring tropical forest cover Activities of ONFI in remote sensingMonitoring tropical forest cover Activities of ONFI in remote sensing
Monitoring tropical forest cover Activities of ONFI in remote sensing
 
ONLINE IMAGE PROCESSING WITH ORFEOTOOLBOX WPS
ONLINE IMAGE PROCESSING WITH ORFEOTOOLBOX WPSONLINE IMAGE PROCESSING WITH ORFEOTOOLBOX WPS
ONLINE IMAGE PROCESSING WITH ORFEOTOOLBOX WPS
 
Teaching Remote Sensing with OTB Applications & Monterverdi (and a little of ...
Teaching Remote Sensing with OTB Applications & Monterverdi (and a little of ...Teaching Remote Sensing with OTB Applications & Monterverdi (and a little of ...
Teaching Remote Sensing with OTB Applications & Monterverdi (and a little of ...
 
ORFEO ToolBox Project Steering committee
ORFEO ToolBox Project Steering committeeORFEO ToolBox Project Steering committee
ORFEO ToolBox Project Steering committee
 
Développement des chaînes de traitement d'images GEOSUD
Développement des chaînes de traitement d'images GEOSUDDéveloppement des chaînes de traitement d'images GEOSUD
Développement des chaînes de traitement d'images GEOSUD
 
Orfeo ToolBox workshop at FOSS4G Europe 2015
Orfeo ToolBox workshop at FOSS4G Europe 2015Orfeo ToolBox workshop at FOSS4G Europe 2015
Orfeo ToolBox workshop at FOSS4G Europe 2015
 
General presentation of OTB
General presentation of OTBGeneral presentation of OTB
General presentation of OTB
 
OTB: logiciel libre de traitement d'images satellites
OTB: logiciel libre de traitement d'images satellitesOTB: logiciel libre de traitement d'images satellites
OTB: logiciel libre de traitement d'images satellites
 
Présentation générale de l'Orfeo ToolBox (12.2014)
Présentation générale de l'Orfeo ToolBox (12.2014)Présentation générale de l'Orfeo ToolBox (12.2014)
Présentation générale de l'Orfeo ToolBox (12.2014)
 

Similar to OTB modular architecture

Mocking the unmockable with Moles
Mocking the unmockable with MolesMocking the unmockable with Moles
Mocking the unmockable with Moles
Orbit One - We create coherence
 
OOSCM. Object Oriented SCM
OOSCM. Object Oriented SCMOOSCM. Object Oriented SCM
OOSCM. Object Oriented SCM
ESUG
 
Developer's Approach to Code Management
Developer's Approach to Code ManagementDeveloper's Approach to Code Management
Developer's Approach to Code Management
Michael Rosenblum
 
How effective is modularization
How effective is modularizationHow effective is modularization
How effective is modularization
SyedArsal
 
Software Architectures, Week 2 - Decomposition techniques
Software Architectures, Week 2 - Decomposition techniquesSoftware Architectures, Week 2 - Decomposition techniques
Software Architectures, Week 2 - Decomposition techniques
Angelos Kapsimanis
 
Bending Open Atrium to your will!
Bending Open Atrium to your will!Bending Open Atrium to your will!
Bending Open Atrium to your will!
Jeff Miccolis
 
Metasploit
MetasploitMetasploit
Unit 6 Operating System TEIT Savitribai Phule Pune University by Tushar B Kute
Unit 6 Operating System TEIT Savitribai Phule Pune University by Tushar B KuteUnit 6 Operating System TEIT Savitribai Phule Pune University by Tushar B Kute
Unit 6 Operating System TEIT Savitribai Phule Pune University by Tushar B Kute
Tushar B Kute
 
ALT
ALTALT
DOC-20210303-WA0017..pptx,coding stuff in c
DOC-20210303-WA0017..pptx,coding stuff in cDOC-20210303-WA0017..pptx,coding stuff in c
DOC-20210303-WA0017..pptx,coding stuff in c
floraaluoch3
 
3.5 App structure.ppt
3.5 App structure.ppt3.5 App structure.ppt
3.5 App structure.ppt
ssuserd973fe
 
Solid principles, Design Patterns, and Domain Driven Design
Solid principles, Design Patterns, and Domain Driven DesignSolid principles, Design Patterns, and Domain Driven Design
Solid principles, Design Patterns, and Domain Driven Design
Irwansyah Irwansyah
 
Software Qualitiy with Sonar Tool 2013_4
Software Qualitiy with Sonar Tool 2013_4Software Qualitiy with Sonar Tool 2013_4
Software Qualitiy with Sonar Tool 2013_4
Max Kleiner
 
Kernel module programming
Kernel module programmingKernel module programming
Kernel module programming
Vandana Salve
 
Wireless Communication Network Communication
Wireless Communication Network CommunicationWireless Communication Network Communication
Wireless Communication Network Communication
Vrushali Lanjewar
 
simulink
simulinksimulink
simulink
Aditi Tiwari
 
Factory Pattern
Factory PatternFactory Pattern
Factory Pattern
Deepti C
 
Studienarb linux kernel-dev
Studienarb linux kernel-devStudienarb linux kernel-dev
Studienarb linux kernel-dev
murali_purushothaman
 
Linux kernel code
Linux kernel codeLinux kernel code
Linux kernel code
Ganesh Naik
 
Module 3: Introduction to LINQ (Material)
Module 3: Introduction to LINQ (Material)Module 3: Introduction to LINQ (Material)
Module 3: Introduction to LINQ (Material)
Mohamed Saleh
 

Similar to OTB modular architecture (20)

Mocking the unmockable with Moles
Mocking the unmockable with MolesMocking the unmockable with Moles
Mocking the unmockable with Moles
 
OOSCM. Object Oriented SCM
OOSCM. Object Oriented SCMOOSCM. Object Oriented SCM
OOSCM. Object Oriented SCM
 
Developer's Approach to Code Management
Developer's Approach to Code ManagementDeveloper's Approach to Code Management
Developer's Approach to Code Management
 
How effective is modularization
How effective is modularizationHow effective is modularization
How effective is modularization
 
Software Architectures, Week 2 - Decomposition techniques
Software Architectures, Week 2 - Decomposition techniquesSoftware Architectures, Week 2 - Decomposition techniques
Software Architectures, Week 2 - Decomposition techniques
 
Bending Open Atrium to your will!
Bending Open Atrium to your will!Bending Open Atrium to your will!
Bending Open Atrium to your will!
 
Metasploit
MetasploitMetasploit
Metasploit
 
Unit 6 Operating System TEIT Savitribai Phule Pune University by Tushar B Kute
Unit 6 Operating System TEIT Savitribai Phule Pune University by Tushar B KuteUnit 6 Operating System TEIT Savitribai Phule Pune University by Tushar B Kute
Unit 6 Operating System TEIT Savitribai Phule Pune University by Tushar B Kute
 
ALT
ALTALT
ALT
 
DOC-20210303-WA0017..pptx,coding stuff in c
DOC-20210303-WA0017..pptx,coding stuff in cDOC-20210303-WA0017..pptx,coding stuff in c
DOC-20210303-WA0017..pptx,coding stuff in c
 
3.5 App structure.ppt
3.5 App structure.ppt3.5 App structure.ppt
3.5 App structure.ppt
 
Solid principles, Design Patterns, and Domain Driven Design
Solid principles, Design Patterns, and Domain Driven DesignSolid principles, Design Patterns, and Domain Driven Design
Solid principles, Design Patterns, and Domain Driven Design
 
Software Qualitiy with Sonar Tool 2013_4
Software Qualitiy with Sonar Tool 2013_4Software Qualitiy with Sonar Tool 2013_4
Software Qualitiy with Sonar Tool 2013_4
 
Kernel module programming
Kernel module programmingKernel module programming
Kernel module programming
 
Wireless Communication Network Communication
Wireless Communication Network CommunicationWireless Communication Network Communication
Wireless Communication Network Communication
 
simulink
simulinksimulink
simulink
 
Factory Pattern
Factory PatternFactory Pattern
Factory Pattern
 
Studienarb linux kernel-dev
Studienarb linux kernel-devStudienarb linux kernel-dev
Studienarb linux kernel-dev
 
Linux kernel code
Linux kernel codeLinux kernel code
Linux kernel code
 
Module 3: Introduction to LINQ (Material)
Module 3: Introduction to LINQ (Material)Module 3: Introduction to LINQ (Material)
Module 3: Introduction to LINQ (Material)
 

More from otb

Ice: lightweight, efficient rendering for remote sensing images
Ice: lightweight, efficient rendering for remote sensing imagesIce: lightweight, efficient rendering for remote sensing images
Ice: lightweight, efficient rendering for remote sensing images
otb
 
Présentation de l'ORFEO ToolBox au FROG2013
Présentation de l'ORFEO ToolBox au FROG2013Présentation de l'ORFEO ToolBox au FROG2013
Présentation de l'ORFEO ToolBox au FROG2013
otb
 
Pragmatic remote sensing handout
Pragmatic remote sensing handoutPragmatic remote sensing handout
Pragmatic remote sensing handout
otb
 
Madagascar2011 - 09 OTB Change detection framework
Madagascar2011 - 09 OTB Change detection frameworkMadagascar2011 - 09 OTB Change detection framework
Madagascar2011 - 09 OTB Change detection framework
otb
 
Madagascar2011 - 08 - OTB segmentation and classification
Madagascar2011 - 08 - OTB segmentation and classificationMadagascar2011 - 08 - OTB segmentation and classification
Madagascar2011 - 08 - OTB segmentation and classification
otb
 
Madagascar2011 - 07 - OTB radiometry processing
Madagascar2011 - 07 -  OTB radiometry processingMadagascar2011 - 07 -  OTB radiometry processing
Madagascar2011 - 07 - OTB radiometry processing
otb
 
Madagascar2011 - 06 - OTB geometry processing
Madagascar2011 - 06 - OTB geometry processingMadagascar2011 - 06 - OTB geometry processing
Madagascar2011 - 06 - OTB geometry processing
otb
 
Madagascar2011 - 05 - Monteverdi first steps
Madagascar2011 - 05 - Monteverdi first stepsMadagascar2011 - 05 - Monteverdi first steps
Madagascar2011 - 05 - Monteverdi first steps
otb
 
Madagascar2011 - 04 - Présentation configuration pratical work
Madagascar2011 - 04 - Présentation configuration pratical workMadagascar2011 - 04 - Présentation configuration pratical work
Madagascar2011 - 04 - Présentation configuration pratical work
otb
 
Madagascar2011 - 03 - Présentation Monteverdi
Madagascar2011 - 03 - Présentation MonteverdiMadagascar2011 - 03 - Présentation Monteverdi
Madagascar2011 - 03 - Présentation Monteverdi
otb
 
Madagascar2011 - 02 - Présentation OTB
Madagascar2011 - 02 - Présentation OTBMadagascar2011 - 02 - Présentation OTB
Madagascar2011 - 02 - Présentation OTB
otb
 
Madagascar2011 - 10 - OTB Object Based Image Analysis
Madagascar2011 - 10 -  OTB Object Based Image AnalysisMadagascar2011 - 10 -  OTB Object Based Image Analysis
Madagascar2011 - 10 - OTB Object Based Image Analysis
otb
 
AUF 11 - 02 Geometrie
AUF 11 - 02 GeometrieAUF 11 - 02 Geometrie
AUF 11 - 02 Geometrieotb
 
AUF 11 - 03 Radiometrie
AUF 11 - 03 RadiometrieAUF 11 - 03 Radiometrie
AUF 11 - 03 Radiometrieotb
 
AUF 11 - 04 Primitives
AUF 11 - 04 PrimitivesAUF 11 - 04 Primitives
AUF 11 - 04 Primitives
otb
 

More from otb (15)

Ice: lightweight, efficient rendering for remote sensing images
Ice: lightweight, efficient rendering for remote sensing imagesIce: lightweight, efficient rendering for remote sensing images
Ice: lightweight, efficient rendering for remote sensing images
 
Présentation de l'ORFEO ToolBox au FROG2013
Présentation de l'ORFEO ToolBox au FROG2013Présentation de l'ORFEO ToolBox au FROG2013
Présentation de l'ORFEO ToolBox au FROG2013
 
Pragmatic remote sensing handout
Pragmatic remote sensing handoutPragmatic remote sensing handout
Pragmatic remote sensing handout
 
Madagascar2011 - 09 OTB Change detection framework
Madagascar2011 - 09 OTB Change detection frameworkMadagascar2011 - 09 OTB Change detection framework
Madagascar2011 - 09 OTB Change detection framework
 
Madagascar2011 - 08 - OTB segmentation and classification
Madagascar2011 - 08 - OTB segmentation and classificationMadagascar2011 - 08 - OTB segmentation and classification
Madagascar2011 - 08 - OTB segmentation and classification
 
Madagascar2011 - 07 - OTB radiometry processing
Madagascar2011 - 07 -  OTB radiometry processingMadagascar2011 - 07 -  OTB radiometry processing
Madagascar2011 - 07 - OTB radiometry processing
 
Madagascar2011 - 06 - OTB geometry processing
Madagascar2011 - 06 - OTB geometry processingMadagascar2011 - 06 - OTB geometry processing
Madagascar2011 - 06 - OTB geometry processing
 
Madagascar2011 - 05 - Monteverdi first steps
Madagascar2011 - 05 - Monteverdi first stepsMadagascar2011 - 05 - Monteverdi first steps
Madagascar2011 - 05 - Monteverdi first steps
 
Madagascar2011 - 04 - Présentation configuration pratical work
Madagascar2011 - 04 - Présentation configuration pratical workMadagascar2011 - 04 - Présentation configuration pratical work
Madagascar2011 - 04 - Présentation configuration pratical work
 
Madagascar2011 - 03 - Présentation Monteverdi
Madagascar2011 - 03 - Présentation MonteverdiMadagascar2011 - 03 - Présentation Monteverdi
Madagascar2011 - 03 - Présentation Monteverdi
 
Madagascar2011 - 02 - Présentation OTB
Madagascar2011 - 02 - Présentation OTBMadagascar2011 - 02 - Présentation OTB
Madagascar2011 - 02 - Présentation OTB
 
Madagascar2011 - 10 - OTB Object Based Image Analysis
Madagascar2011 - 10 -  OTB Object Based Image AnalysisMadagascar2011 - 10 -  OTB Object Based Image Analysis
Madagascar2011 - 10 - OTB Object Based Image Analysis
 
AUF 11 - 02 Geometrie
AUF 11 - 02 GeometrieAUF 11 - 02 Geometrie
AUF 11 - 02 Geometrie
 
AUF 11 - 03 Radiometrie
AUF 11 - 03 RadiometrieAUF 11 - 03 Radiometrie
AUF 11 - 03 Radiometrie
 
AUF 11 - 04 Primitives
AUF 11 - 04 PrimitivesAUF 11 - 04 Primitives
AUF 11 - 04 Primitives
 

Recently uploaded

Your One-Stop Shop for Python Success: Top 10 US Python Development Providers
Your One-Stop Shop for Python Success: Top 10 US Python Development ProvidersYour One-Stop Shop for Python Success: Top 10 US Python Development Providers
Your One-Stop Shop for Python Success: Top 10 US Python Development Providers
akankshawande
 
Overcoming the PLG Trap: Lessons from Canva's Head of Sales & Head of EMEA Da...
Overcoming the PLG Trap: Lessons from Canva's Head of Sales & Head of EMEA Da...Overcoming the PLG Trap: Lessons from Canva's Head of Sales & Head of EMEA Da...
Overcoming the PLG Trap: Lessons from Canva's Head of Sales & Head of EMEA Da...
saastr
 
Taking AI to the Next Level in Manufacturing.pdf
Taking AI to the Next Level in Manufacturing.pdfTaking AI to the Next Level in Manufacturing.pdf
Taking AI to the Next Level in Manufacturing.pdf
ssuserfac0301
 
System Design Case Study: Building a Scalable E-Commerce Platform - Hiike
System Design Case Study: Building a Scalable E-Commerce Platform - HiikeSystem Design Case Study: Building a Scalable E-Commerce Platform - Hiike
System Design Case Study: Building a Scalable E-Commerce Platform - Hiike
Hiike
 
Skybuffer SAM4U tool for SAP license adoption
Skybuffer SAM4U tool for SAP license adoptionSkybuffer SAM4U tool for SAP license adoption
Skybuffer SAM4U tool for SAP license adoption
Tatiana Kojar
 
Fueling AI with Great Data with Airbyte Webinar
Fueling AI with Great Data with Airbyte WebinarFueling AI with Great Data with Airbyte Webinar
Fueling AI with Great Data with Airbyte Webinar
Zilliz
 
Generating privacy-protected synthetic data using Secludy and Milvus
Generating privacy-protected synthetic data using Secludy and MilvusGenerating privacy-protected synthetic data using Secludy and Milvus
Generating privacy-protected synthetic data using Secludy and Milvus
Zilliz
 
Presentation of the OECD Artificial Intelligence Review of Germany
Presentation of the OECD Artificial Intelligence Review of GermanyPresentation of the OECD Artificial Intelligence Review of Germany
Presentation of the OECD Artificial Intelligence Review of Germany
innovationoecd
 
FREE A4 Cyber Security Awareness Posters-Social Engineering part 3
FREE A4 Cyber Security Awareness  Posters-Social Engineering part 3FREE A4 Cyber Security Awareness  Posters-Social Engineering part 3
FREE A4 Cyber Security Awareness Posters-Social Engineering part 3
Data Hops
 
Monitoring and Managing Anomaly Detection on OpenShift.pdf
Monitoring and Managing Anomaly Detection on OpenShift.pdfMonitoring and Managing Anomaly Detection on OpenShift.pdf
Monitoring and Managing Anomaly Detection on OpenShift.pdf
Tosin Akinosho
 
Nordic Marketo Engage User Group_June 13_ 2024.pptx
Nordic Marketo Engage User Group_June 13_ 2024.pptxNordic Marketo Engage User Group_June 13_ 2024.pptx
Nordic Marketo Engage User Group_June 13_ 2024.pptx
MichaelKnudsen27
 
SAP S/4 HANA sourcing and procurement to Public cloud
SAP S/4 HANA sourcing and procurement to Public cloudSAP S/4 HANA sourcing and procurement to Public cloud
SAP S/4 HANA sourcing and procurement to Public cloud
maazsz111
 
Public CyberSecurity Awareness Presentation 2024.pptx
Public CyberSecurity Awareness Presentation 2024.pptxPublic CyberSecurity Awareness Presentation 2024.pptx
Public CyberSecurity Awareness Presentation 2024.pptx
marufrahmanstratejm
 
leewayhertz.com-AI in predictive maintenance Use cases technologies benefits ...
leewayhertz.com-AI in predictive maintenance Use cases technologies benefits ...leewayhertz.com-AI in predictive maintenance Use cases technologies benefits ...
leewayhertz.com-AI in predictive maintenance Use cases technologies benefits ...
alexjohnson7307
 
Programming Foundation Models with DSPy - Meetup Slides
Programming Foundation Models with DSPy - Meetup SlidesProgramming Foundation Models with DSPy - Meetup Slides
Programming Foundation Models with DSPy - Meetup Slides
Zilliz
 
Driving Business Innovation: Latest Generative AI Advancements & Success Story
Driving Business Innovation: Latest Generative AI Advancements & Success StoryDriving Business Innovation: Latest Generative AI Advancements & Success Story
Driving Business Innovation: Latest Generative AI Advancements & Success Story
Safe Software
 
Digital Banking in the Cloud: How Citizens Bank Unlocked Their Mainframe
Digital Banking in the Cloud: How Citizens Bank Unlocked Their MainframeDigital Banking in the Cloud: How Citizens Bank Unlocked Their Mainframe
Digital Banking in the Cloud: How Citizens Bank Unlocked Their Mainframe
Precisely
 
Building Production Ready Search Pipelines with Spark and Milvus
Building Production Ready Search Pipelines with Spark and MilvusBuilding Production Ready Search Pipelines with Spark and Milvus
Building Production Ready Search Pipelines with Spark and Milvus
Zilliz
 
AWS Cloud Cost Optimization Presentation.pptx
AWS Cloud Cost Optimization Presentation.pptxAWS Cloud Cost Optimization Presentation.pptx
AWS Cloud Cost Optimization Presentation.pptx
HarisZaheer8
 
dbms calicut university B. sc Cs 4th sem.pdf
dbms  calicut university B. sc Cs 4th sem.pdfdbms  calicut university B. sc Cs 4th sem.pdf
dbms calicut university B. sc Cs 4th sem.pdf
Shinana2
 

Recently uploaded (20)

Your One-Stop Shop for Python Success: Top 10 US Python Development Providers
Your One-Stop Shop for Python Success: Top 10 US Python Development ProvidersYour One-Stop Shop for Python Success: Top 10 US Python Development Providers
Your One-Stop Shop for Python Success: Top 10 US Python Development Providers
 
Overcoming the PLG Trap: Lessons from Canva's Head of Sales & Head of EMEA Da...
Overcoming the PLG Trap: Lessons from Canva's Head of Sales & Head of EMEA Da...Overcoming the PLG Trap: Lessons from Canva's Head of Sales & Head of EMEA Da...
Overcoming the PLG Trap: Lessons from Canva's Head of Sales & Head of EMEA Da...
 
Taking AI to the Next Level in Manufacturing.pdf
Taking AI to the Next Level in Manufacturing.pdfTaking AI to the Next Level in Manufacturing.pdf
Taking AI to the Next Level in Manufacturing.pdf
 
System Design Case Study: Building a Scalable E-Commerce Platform - Hiike
System Design Case Study: Building a Scalable E-Commerce Platform - HiikeSystem Design Case Study: Building a Scalable E-Commerce Platform - Hiike
System Design Case Study: Building a Scalable E-Commerce Platform - Hiike
 
Skybuffer SAM4U tool for SAP license adoption
Skybuffer SAM4U tool for SAP license adoptionSkybuffer SAM4U tool for SAP license adoption
Skybuffer SAM4U tool for SAP license adoption
 
Fueling AI with Great Data with Airbyte Webinar
Fueling AI with Great Data with Airbyte WebinarFueling AI with Great Data with Airbyte Webinar
Fueling AI with Great Data with Airbyte Webinar
 
Generating privacy-protected synthetic data using Secludy and Milvus
Generating privacy-protected synthetic data using Secludy and MilvusGenerating privacy-protected synthetic data using Secludy and Milvus
Generating privacy-protected synthetic data using Secludy and Milvus
 
Presentation of the OECD Artificial Intelligence Review of Germany
Presentation of the OECD Artificial Intelligence Review of GermanyPresentation of the OECD Artificial Intelligence Review of Germany
Presentation of the OECD Artificial Intelligence Review of Germany
 
FREE A4 Cyber Security Awareness Posters-Social Engineering part 3
FREE A4 Cyber Security Awareness  Posters-Social Engineering part 3FREE A4 Cyber Security Awareness  Posters-Social Engineering part 3
FREE A4 Cyber Security Awareness Posters-Social Engineering part 3
 
Monitoring and Managing Anomaly Detection on OpenShift.pdf
Monitoring and Managing Anomaly Detection on OpenShift.pdfMonitoring and Managing Anomaly Detection on OpenShift.pdf
Monitoring and Managing Anomaly Detection on OpenShift.pdf
 
Nordic Marketo Engage User Group_June 13_ 2024.pptx
Nordic Marketo Engage User Group_June 13_ 2024.pptxNordic Marketo Engage User Group_June 13_ 2024.pptx
Nordic Marketo Engage User Group_June 13_ 2024.pptx
 
SAP S/4 HANA sourcing and procurement to Public cloud
SAP S/4 HANA sourcing and procurement to Public cloudSAP S/4 HANA sourcing and procurement to Public cloud
SAP S/4 HANA sourcing and procurement to Public cloud
 
Public CyberSecurity Awareness Presentation 2024.pptx
Public CyberSecurity Awareness Presentation 2024.pptxPublic CyberSecurity Awareness Presentation 2024.pptx
Public CyberSecurity Awareness Presentation 2024.pptx
 
leewayhertz.com-AI in predictive maintenance Use cases technologies benefits ...
leewayhertz.com-AI in predictive maintenance Use cases technologies benefits ...leewayhertz.com-AI in predictive maintenance Use cases technologies benefits ...
leewayhertz.com-AI in predictive maintenance Use cases technologies benefits ...
 
Programming Foundation Models with DSPy - Meetup Slides
Programming Foundation Models with DSPy - Meetup SlidesProgramming Foundation Models with DSPy - Meetup Slides
Programming Foundation Models with DSPy - Meetup Slides
 
Driving Business Innovation: Latest Generative AI Advancements & Success Story
Driving Business Innovation: Latest Generative AI Advancements & Success StoryDriving Business Innovation: Latest Generative AI Advancements & Success Story
Driving Business Innovation: Latest Generative AI Advancements & Success Story
 
Digital Banking in the Cloud: How Citizens Bank Unlocked Their Mainframe
Digital Banking in the Cloud: How Citizens Bank Unlocked Their MainframeDigital Banking in the Cloud: How Citizens Bank Unlocked Their Mainframe
Digital Banking in the Cloud: How Citizens Bank Unlocked Their Mainframe
 
Building Production Ready Search Pipelines with Spark and Milvus
Building Production Ready Search Pipelines with Spark and MilvusBuilding Production Ready Search Pipelines with Spark and Milvus
Building Production Ready Search Pipelines with Spark and Milvus
 
AWS Cloud Cost Optimization Presentation.pptx
AWS Cloud Cost Optimization Presentation.pptxAWS Cloud Cost Optimization Presentation.pptx
AWS Cloud Cost Optimization Presentation.pptx
 
dbms calicut university B. sc Cs 4th sem.pdf
dbms  calicut university B. sc Cs 4th sem.pdfdbms  calicut university B. sc Cs 4th sem.pdf
dbms calicut university B. sc Cs 4th sem.pdf
 

OTB modular architecture

  • 1. Orfeo ToolBox users meeting and hackfest 2015 The new modular build system of OTB 5 OTB development team 3 - 5 june 2015, Toulouse
  • 2. Motivations : the status with OTB <= 4.0 Code in directories but no real build dependency (cyclic dependencies between directories) Third parties : a maintainance hell (activation/deactivation, external/internal, interdependencies) Build system written in ancient CMake times ( version 2.4), no redesign since then Hard for newcomers to add new functionnalities without touching everything, even more when introducing new third parties
  • 3. Design choices Let’s do it the ITK way : they faced the same issue a few years ago. The CMake gurus did the work State-of-the-art renewed CMake code : a bunch of new features, and ready for later improvements No more third party code inside OTB code (to the maximum extent...)
  • 4. What modular means ? The OTB classes are organized in self-contained directories called modules One module contain headers, definitions, tests, applications, ... for all classes of the module Dependency tracking between modules is at the heart of the system : enable a module and its dependencies are enabled automatically Only build what you want/use Third parties are also modules now Modules are organized in thematic Groups (no real build consequences here)
  • 5. How do I build OTB now? Still with CMake, but way easier. Less CMake options visible (unless you switch to advanced mode) Better option naming, systematic : OTB USE XXX for third parties Third parties are always external now. They can only be activated or not. A default set of modules is defined
  • 6. The internals Module enablement evaluated in two passes Modules which are activated Third party deactivated, with all its dependees BUILD DEFAULT MODULE ON = all modules activated, except Mapnik and its dependees OFF = you choose each enabled module with the Module XXX option OTB USE XXX Only for third parties Easy way to disable a third party and all its dependees Is evaluated after the first
  • 7. What does a module look like ? A directory in the Modules subdir : otb-module.cmake and CMakeLists.txt file include subdir : for .hxx files src subdir : for .cxx files and a CMakeLists.txt. headers in here are not installed test subdir : for tests app subdir : for applications See the Remote Module presentation for building a module from scratch in 5 minutes.
  • 8. Hey wait ! I don’t care about your dependency hell, just build me the damned thing : Superbuild (in a few minutes) Can I reuse this for my work : Remote modules (in a few minutes)