SlideShare uma empresa Scribd logo
1 de 66
Baixar para ler offline
Towards a Catalog of Variability Evolution Patterns – The
                      Linux Kernel Case




          Leonardo Passos                   Krzysztof Czarnecki                    Andrzej Wasowski
        University of Waterloo             University of Waterloo             IT University of Copenhagen
       lpassos@gsd.uwaterloo.ca          kczarnec@gsd.uwaterloo.ca                   wasowski@itu.dk



1/28               IV International Workshop on Feature Oriented Software Development (FOSD’12)
In evolving variant-rich
             software. . .



2/28
In evolving variant-rich software. . .

       • New features are added




3/28
In evolving variant-rich software. . .

       • New features are added

       • Features are removed




3/28
In evolving variant-rich software. . .

       • New features are added

       • Features are removed

         1. feature is no longer supported: complete removal




3/28
In evolving variant-rich software. . .

       • New features are added

       • Features are removed

         1. feature is no longer supported: complete removal

         2. feature continues to be supported, but its abstraction is no longer
            present (disappears from the variability model).




3/28
In evolving variant-rich software. . .

       • New features are added

       • Features are removed

         1. feature is no longer supported: complete removal

         2. feature continues to be supported, but its abstraction is no longer
            present (disappears from the variability model).

            Examples:




3/28
In evolving variant-rich software. . .

       • New features are added

       • Features are removed

         1. feature is no longer supported: complete removal

         2. feature continues to be supported, but its abstraction is no longer
            present (disappears from the variability model).

            Examples:
             • merge




3/28
In evolving variant-rich software. . .

       • New features are added

       • Features are removed

         1. feature is no longer supported: complete removal

         2. feature continues to be supported, but its abstraction is no longer
            present (disappears from the variability model).

            Examples:
             • merge

             • split




3/28
In evolving variant-rich software. . .

       • New features are added

       • Features are removed

         1. feature is no longer supported: complete removal

         2. feature continues to be supported, but its abstraction is no longer
            present (disappears from the variability model).

            Examples:
             • merge

             • split

             • rename



3/28
In evolving variant-rich software. . .

       • New features are added

       • Features are removed

         1. feature is no longer supported: complete removal

         2. feature continues to be supported, but its abstraction is no longer
            present (disappears from the variability model).

            Examples:
             • merge

             • split

             • rename

       • Constraints are changed, etc.
3/28
Example
       (from Linux)



4/28
...


               Ralink Drivers


       ...   RT2860         RT3090   ...



4/28
...


               Ralink Drivers


       ...   RT2860         RT3090   ...



4/28
...


             Ralink Drivers


       ...     RT2860         ...



4/28
...


             Ralink Drivers


       ...      RT2860           ...

             Complete removal?


4/28
Existing evolution studies tend
       to focus on the variability model
                     alone


5/28
That doesn’t tell the whole
               story. . .



6/28
Ralink Drivers


       ...   RT2860    RT3090   ...




7/28
Ralink Drivers
                                      Configuration space

       ...   RT2860    RT3090   ...




7/28
Ralink Drivers


       ...   RT2860    RT3090   ...

                                      Compilation space




7/28
Ralink Drivers


       ...   RT2860    RT3090   ...




                                      Implementation
                                          space



7/28
Spaces are connected. . .




7/28
Ralink Drivers


       ...   RT2860    RT3090   ...




7/28
Ralink Drivers


       ...   RT2860    RT3090   ...




7/28
Ralink Drivers


       ...   RT2860    RT3090   ...




7/28
Ralink Drivers


       ...   RT2860    RT3090   ...




7/28
With the three spaces in mind,
           the real picture of . . .



8/28
...


               Ralink Drivers


       ...   RT2860         RT3090   ...

                      is
8/28
Ralink Drivers


       ...   RT2860    RT3090   ...




8/28
Ralink Drivers


       ...   RT2860        RT3090   ...



                 copy



                        copy



                        copy




8/28
Ralink Drivers


       ...   RT2860           RT3090        ...



                   copy



                           copy



                           copy



             RT3090 is merged into RT2860
8/28
We want to know. . .




9/28
How do the three spaces evolve
         together in real world variant
                rich software?




10/28
How do the three spaces evolve
         together in real world variant
                rich software?

         Focus: features that disappear from the
                   configuration space


10/28
Two goals




          Understand the evolution of the three spaces in a
                   real-word variant rich software




11/28
Two goals




          Understand the evolution of the three spaces in a
                   real-word variant rich software

        Document our understanding in the form of evolution
                     patterns (preliminary).




11/28
Our subject of analysis




12/28
Qualities of Linux as a subject of study

        • Mature: over 20 years since its first release




13/28
Qualities of Linux as a subject of study

        • Mature: over 20 years since its first release

        • Complex: over 6,000 features




13/28
Qualities of Linux as a subject of study

        • Mature: over 20 years since its first release

        • Complex: over 6,000 features

        • Changes are kept in a publicly available SCM Repository (git)




13/28
Qualities of Linux as a subject of study

        • Mature: over 20 years since its first release

        • Complex: over 6,000 features

        • Changes are kept in a publicly available SCM Repository (git)

        • Continuous development




13/28
Qualities of Linux as a subject of study

        • Mature: over 20 years since its first release

        • Complex: over 6,000 features

        • Changes are kept in a publicly available SCM Repository (git)

        • Continuous development

        • Contains multiple spaces:




13/28
Qualities of Linux as a subject of study

        • Mature: over 20 years since its first release

        • Complex: over 6,000 features

        • Changes are kept in a publicly available SCM Repository (git)

        • Continuous development

        • Contains multiple spaces:

          ◦ configuration space: Kconfig




13/28
Qualities of Linux as a subject of study

        • Mature: over 20 years since its first release

        • Complex: over 6,000 features

        • Changes are kept in a publicly available SCM Repository (git)

        • Continuous development

        • Contains multiple spaces:

          ◦ configuration space: Kconfig

          ◦ compilation space: Makefile



13/28
Qualities of Linux as a subject of study

        • Mature: over 20 years since its first release

        • Complex: over 6,000 features

        • Changes are kept in a publicly available SCM Repository (git)

        • Continuous development

        • Contains multiple spaces:

          ◦ configuration space: Kconfig

          ◦ compilation space: Makefile

          ◦ implementation space: C code

13/28
Variability evolution patterns
                  from Linux



14/28
Data collection & Analysis




        • Data collection is limited to three pairs of stable kernel releases in
          x86 64

        • For each pair, we considered only the features that disappeared
          from the configuration space

        • Manual analysis of 140 removals from a total of 220 (63%)




15/28
Infrastructure



        • Extraction and reuse of Kconfig parsing infrastructure from Linux
          itself

          ◦ allow us to compute disappearing features among each release kernel

        • Conversion of Linux patches from git into a relational database

          ◦ allow us to quickly identify which commit erases a feature from the
            configuration space

        • git log + gitk, grep: visualize and search logs




16/28
Extracting patterns is hard!


        Difficulties in analyzing patches when collecting patterns:

        • unrelated changes (noise)

        • technical comments (too much jargon)

        • extensive set of changes

        • everything is recorded in the SCM as addition/removal of lines
          (too low level)




17/28
Four identified patterns



        • Optional feature to implicit mandatory

        • Computed attributed feature to code

        • Merge features by module aliasing

        • Optional feature to kernel parameter


        Template: structure, instance and discussion



18/28
Four identified patterns



        • Optional feature to implicit mandatory

        • Computed attributed feature to code

        • Merge features by module aliasing

        • Optional feature to kernel parameter


        Template: structure, instance and discussion



18/28
Optional feature to implicit
                mandatory



19/28
Structure & Instance

                      X                                     X
             ...               ...                 ...               ...
                       Y                CTC                                   CTC[XY]

              if Y,                                 if Y, if X,
                 compile Y.c into Y.o                  compile Y.c into Y.o
                 compile X.c into X.c                  compile X.c into X.c



                                                                              #ifdef X
             Y.c                        #ifdef Y
                                           ...
                                                   Y.c                        #ifdef Y
                                                                                 ...
                                        #endif                                #endif

                      (Before)                               (After)




20/28
Structure & Instance

                      X                                     X
             ...               ...                 ...               ...
                       Y                CTC                                   CTC[XY]

              if Y,                                 if Y, if X,
                 compile Y.c into Y.o                  compile Y.c into Y.o
                 compile X.c into X.c                  compile X.c into X.c



                                                                              #ifdef X
             Y.c                        #ifdef Y
                                           ...
                                                   Y.c                        #ifdef Y
                                                                                 ...
                                        #endif                                #endif

                      (Before)                               (After)




20/28
Structure & Instance

                      X                                     X
             ...               ...                 ...               ...
                       Y                CTC                                   CTC[XY]

              if Y,                                 if Y, if X,
                 compile Y.c into Y.o                  compile Y.c into Y.o
                 compile X.c into X.c                  compile X.c into X.c



                                                                              #ifdef X
             Y.c                        #ifdef Y
                                           ...
                                                   Y.c                        #ifdef Y
                                                                                 ...
                                        #endif                                #endif

                      (Before)                               (After)




20/28
Structure & Instance

                      X                                     X
             ...               ...                 ...               ...
                       Y                CTC                                   CTC[XY]

              if Y,                                 if Y, if X,
                 compile Y.c into Y.o                  compile Y.c into Y.o
                 compile X.c into X.c                  compile X.c into X.c



                                                                              #ifdef X
             Y.c                        #ifdef Y
                                           ...
                                                   Y.c                        #ifdef Y
                                                                                 ...
                                        #endif                                #endif

                      (Before)                               (After)




20/28
Structure & Instance

                      X                                     X
             ...               ...                 ...               ...
                       Y                CTC                                   CTC[XY]

              if Y,                                 if Y, if X,
                 compile Y.c into Y.o                  compile Y.c into Y.o
                 compile X.c into X.c                  compile X.c into X.c



                                                                              #ifdef X
             Y.c                        #ifdef Y
                                           ...
                                                   Y.c                        #ifdef Y
                                                                                 ...
                                        #endif                                #endif

                      (Before)                               (After)


              Instance: X = OCFS, Y= OCFS Access Control List

20/28
Discussion



        Pattern should be used when:

        • users should not be given the freedom to configure Y

           ◦ e.g.: they may inadvertly forget to select it, as in Access Control List
             (Y)

        • Y is a critical feature that makes sense to exist in the software,
          given the presence of its parent X




21/28
Our patterns have direct
            implications. . .



22/28
Direct implications



        • Existing evolution studies (She et al. at Vamos’10, Lotufo et. al.
          at SPLC’10) focus on the variability model alone: our patterns
          show that features can be erased from the configuration space,
          while still present in the implementation space

        • Our patterns capture situations not covered by the existing SPL
          evolution theory (Borba et al. at ITAC’10)

          ◦ compatibility of product is not guaranteed (evolution is not safe)




23/28
Conclusions




24/28
Conclusions



        • Evolution must focus on all spaces

        • We presented 4 patterns extracted from Linux

        • Our patterns explain the evolution of features removed from the
          configuration space

        • They show evolution steps not captured in previous studies (both
          theoretical and empirical).




25/28
Future work




26/28
Future work




        • Collect patterns not restricted to removals

        • Measure frequency

        • Study other systems




27/28
Thanks for listening!




28/28

Mais conteúdo relacionado

Semelhante a Catalog of Variability Evolution Patterns in Linux Kernel

Efficient kernel backporting
Efficient kernel backportingEfficient kernel backporting
Efficient kernel backportingLF Events
 
Training Slides: Advanced 303: Upgrading from Tungsten Clustering 5.x Multi-S...
Training Slides: Advanced 303: Upgrading from Tungsten Clustering 5.x Multi-S...Training Slides: Advanced 303: Upgrading from Tungsten Clustering 5.x Multi-S...
Training Slides: Advanced 303: Upgrading from Tungsten Clustering 5.x Multi-S...Continuent
 
Directive-based approach to Heterogeneous Computing
Directive-based approach to Heterogeneous ComputingDirective-based approach to Heterogeneous Computing
Directive-based approach to Heterogeneous ComputingRuymán Reyes
 
3450 - Writing and optimising applications for performance in a hybrid messag...
3450 - Writing and optimising applications for performance in a hybrid messag...3450 - Writing and optimising applications for performance in a hybrid messag...
3450 - Writing and optimising applications for performance in a hybrid messag...Timothy McCormick
 
Linuxcon Barcelon 2012: LXC Best Practices
Linuxcon Barcelon 2012: LXC Best PracticesLinuxcon Barcelon 2012: LXC Best Practices
Linuxcon Barcelon 2012: LXC Best Practiceschristophm
 
Functional Programming in Java
Functional Programming in JavaFunctional Programming in Java
Functional Programming in JavaJim Bethancourt
 
Universal metrics with Apache Beam
Universal metrics with Apache BeamUniversal metrics with Apache Beam
Universal metrics with Apache BeamEtienne Chauchot
 
LINEデリマでのElasticsearchの運用と監視の話
LINEデリマでのElasticsearchの運用と監視の話LINEデリマでのElasticsearchの運用と監視の話
LINEデリマでのElasticsearchの運用と監視の話LINE Corporation
 
Jenkins2 - Coding Continuous Delivery Pipelines
Jenkins2 - Coding Continuous Delivery PipelinesJenkins2 - Coding Continuous Delivery Pipelines
Jenkins2 - Coding Continuous Delivery PipelinesBrent Laster
 
OpenTelemetry For Architects
OpenTelemetry For ArchitectsOpenTelemetry For Architects
OpenTelemetry For ArchitectsKevin Brockhoff
 
Strimzi - Where Apache Kafka meets OpenShift - OpenShift Spain MeetUp
Strimzi - Where Apache Kafka meets OpenShift - OpenShift Spain MeetUpStrimzi - Where Apache Kafka meets OpenShift - OpenShift Spain MeetUp
Strimzi - Where Apache Kafka meets OpenShift - OpenShift Spain MeetUpJosé Román Martín Gil
 
XNAT Open Source Development
XNAT Open Source DevelopmentXNAT Open Source Development
XNAT Open Source DevelopmentJohn Paulett
 
From shipping rpms to helm charts - Lessons learned and best practices
From shipping rpms to helm charts - Lessons learned and best practicesFrom shipping rpms to helm charts - Lessons learned and best practices
From shipping rpms to helm charts - Lessons learned and best practicesAnkush Chadha, MBA, MS
 
Robotics Toolbox for MATLAB (Relese 9)
Robotics Toolbox for MATLAB (Relese 9)Robotics Toolbox for MATLAB (Relese 9)
Robotics Toolbox for MATLAB (Relese 9)CHIH-PEI WEN
 
Intro to Kubernetes & GitOps Workshop
Intro to Kubernetes & GitOps WorkshopIntro to Kubernetes & GitOps Workshop
Intro to Kubernetes & GitOps WorkshopWeaveworks
 
robert-kovacsics-part-ii-dissertation
robert-kovacsics-part-ii-dissertationrobert-kovacsics-part-ii-dissertation
robert-kovacsics-part-ii-dissertationRobert Kovacsics
 
CS_Note_Introduction to Git Workflow.pdf
CS_Note_Introduction to Git Workflow.pdfCS_Note_Introduction to Git Workflow.pdf
CS_Note_Introduction to Git Workflow.pdfalbusfons939393
 
torque - Automation Testing Tool for C-C++ on Linux
torque -  Automation Testing Tool for C-C++ on Linuxtorque -  Automation Testing Tool for C-C++ on Linux
torque - Automation Testing Tool for C-C++ on LinuxJITENDRA LENKA
 
Using Spark Mllib Models in a Production Training and Serving Platform: Exper...
Using Spark Mllib Models in a Production Training and Serving Platform: Exper...Using Spark Mllib Models in a Production Training and Serving Platform: Exper...
Using Spark Mllib Models in a Production Training and Serving Platform: Exper...Databricks
 

Semelhante a Catalog of Variability Evolution Patterns in Linux Kernel (20)

Efficient kernel backporting
Efficient kernel backportingEfficient kernel backporting
Efficient kernel backporting
 
Training Slides: Advanced 303: Upgrading from Tungsten Clustering 5.x Multi-S...
Training Slides: Advanced 303: Upgrading from Tungsten Clustering 5.x Multi-S...Training Slides: Advanced 303: Upgrading from Tungsten Clustering 5.x Multi-S...
Training Slides: Advanced 303: Upgrading from Tungsten Clustering 5.x Multi-S...
 
Directive-based approach to Heterogeneous Computing
Directive-based approach to Heterogeneous ComputingDirective-based approach to Heterogeneous Computing
Directive-based approach to Heterogeneous Computing
 
3450 - Writing and optimising applications for performance in a hybrid messag...
3450 - Writing and optimising applications for performance in a hybrid messag...3450 - Writing and optimising applications for performance in a hybrid messag...
3450 - Writing and optimising applications for performance in a hybrid messag...
 
Linuxcon Barcelon 2012: LXC Best Practices
Linuxcon Barcelon 2012: LXC Best PracticesLinuxcon Barcelon 2012: LXC Best Practices
Linuxcon Barcelon 2012: LXC Best Practices
 
Functional Programming in Java
Functional Programming in JavaFunctional Programming in Java
Functional Programming in Java
 
Universal metrics with Apache Beam
Universal metrics with Apache BeamUniversal metrics with Apache Beam
Universal metrics with Apache Beam
 
LINEデリマでのElasticsearchの運用と監視の話
LINEデリマでのElasticsearchの運用と監視の話LINEデリマでのElasticsearchの運用と監視の話
LINEデリマでのElasticsearchの運用と監視の話
 
Jenkins2 - Coding Continuous Delivery Pipelines
Jenkins2 - Coding Continuous Delivery PipelinesJenkins2 - Coding Continuous Delivery Pipelines
Jenkins2 - Coding Continuous Delivery Pipelines
 
OpenTelemetry For Architects
OpenTelemetry For ArchitectsOpenTelemetry For Architects
OpenTelemetry For Architects
 
Strimzi - Where Apache Kafka meets OpenShift - OpenShift Spain MeetUp
Strimzi - Where Apache Kafka meets OpenShift - OpenShift Spain MeetUpStrimzi - Where Apache Kafka meets OpenShift - OpenShift Spain MeetUp
Strimzi - Where Apache Kafka meets OpenShift - OpenShift Spain MeetUp
 
XNAT Open Source Development
XNAT Open Source DevelopmentXNAT Open Source Development
XNAT Open Source Development
 
From shipping rpms to helm charts - Lessons learned and best practices
From shipping rpms to helm charts - Lessons learned and best practicesFrom shipping rpms to helm charts - Lessons learned and best practices
From shipping rpms to helm charts - Lessons learned and best practices
 
Robotics Toolbox for MATLAB (Relese 9)
Robotics Toolbox for MATLAB (Relese 9)Robotics Toolbox for MATLAB (Relese 9)
Robotics Toolbox for MATLAB (Relese 9)
 
Matlab module
Matlab moduleMatlab module
Matlab module
 
Intro to Kubernetes & GitOps Workshop
Intro to Kubernetes & GitOps WorkshopIntro to Kubernetes & GitOps Workshop
Intro to Kubernetes & GitOps Workshop
 
robert-kovacsics-part-ii-dissertation
robert-kovacsics-part-ii-dissertationrobert-kovacsics-part-ii-dissertation
robert-kovacsics-part-ii-dissertation
 
CS_Note_Introduction to Git Workflow.pdf
CS_Note_Introduction to Git Workflow.pdfCS_Note_Introduction to Git Workflow.pdf
CS_Note_Introduction to Git Workflow.pdf
 
torque - Automation Testing Tool for C-C++ on Linux
torque -  Automation Testing Tool for C-C++ on Linuxtorque -  Automation Testing Tool for C-C++ on Linux
torque - Automation Testing Tool for C-C++ on Linux
 
Using Spark Mllib Models in a Production Training and Serving Platform: Exper...
Using Spark Mllib Models in a Production Training and Serving Platform: Exper...Using Spark Mllib Models in a Production Training and Serving Platform: Exper...
Using Spark Mllib Models in a Production Training and Serving Platform: Exper...
 

Último

Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationSlibray Presentation
 
Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 3652toLead Limited
 
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks..."LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...Fwdays
 
Powerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time ClashPowerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time Clashcharlottematthew16
 
Training state-of-the-art general text embedding
Training state-of-the-art general text embeddingTraining state-of-the-art general text embedding
Training state-of-the-art general text embeddingZilliz
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Commit University
 
Gen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfGen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfAddepto
 
CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):comworks
 
Vector Databases 101 - An introduction to the world of Vector Databases
Vector Databases 101 - An introduction to the world of Vector DatabasesVector Databases 101 - An introduction to the world of Vector Databases
Vector Databases 101 - An introduction to the world of Vector DatabasesZilliz
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr BaganFwdays
 
Commit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyCommit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyAlfredo García Lavilla
 
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr LapshynFwdays
 
Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfUnraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfAlex Barbosa Coqueiro
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024Lorenzo Miniero
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsSergiu Bodiu
 
My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024The Digital Insurer
 
Streamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupStreamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupFlorian Wilhelm
 
What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024Stephanie Beckett
 
SAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxSAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxNavinnSomaal
 
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024BookNet Canada
 

Último (20)

Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck Presentation
 
Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365
 
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks..."LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
 
Powerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time ClashPowerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time Clash
 
Training state-of-the-art general text embedding
Training state-of-the-art general text embeddingTraining state-of-the-art general text embedding
Training state-of-the-art general text embedding
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!
 
Gen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfGen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdf
 
CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):
 
Vector Databases 101 - An introduction to the world of Vector Databases
Vector Databases 101 - An introduction to the world of Vector DatabasesVector Databases 101 - An introduction to the world of Vector Databases
Vector Databases 101 - An introduction to the world of Vector Databases
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan
 
Commit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyCommit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easy
 
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
 
Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfUnraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdf
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platforms
 
My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024
 
Streamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupStreamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project Setup
 
What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024
 
SAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxSAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptx
 
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
 

Catalog of Variability Evolution Patterns in Linux Kernel

  • 1. Towards a Catalog of Variability Evolution Patterns – The Linux Kernel Case Leonardo Passos Krzysztof Czarnecki Andrzej Wasowski University of Waterloo University of Waterloo IT University of Copenhagen lpassos@gsd.uwaterloo.ca kczarnec@gsd.uwaterloo.ca wasowski@itu.dk 1/28 IV International Workshop on Feature Oriented Software Development (FOSD’12)
  • 2. In evolving variant-rich software. . . 2/28
  • 3. In evolving variant-rich software. . . • New features are added 3/28
  • 4. In evolving variant-rich software. . . • New features are added • Features are removed 3/28
  • 5. In evolving variant-rich software. . . • New features are added • Features are removed 1. feature is no longer supported: complete removal 3/28
  • 6. In evolving variant-rich software. . . • New features are added • Features are removed 1. feature is no longer supported: complete removal 2. feature continues to be supported, but its abstraction is no longer present (disappears from the variability model). 3/28
  • 7. In evolving variant-rich software. . . • New features are added • Features are removed 1. feature is no longer supported: complete removal 2. feature continues to be supported, but its abstraction is no longer present (disappears from the variability model). Examples: 3/28
  • 8. In evolving variant-rich software. . . • New features are added • Features are removed 1. feature is no longer supported: complete removal 2. feature continues to be supported, but its abstraction is no longer present (disappears from the variability model). Examples: • merge 3/28
  • 9. In evolving variant-rich software. . . • New features are added • Features are removed 1. feature is no longer supported: complete removal 2. feature continues to be supported, but its abstraction is no longer present (disappears from the variability model). Examples: • merge • split 3/28
  • 10. In evolving variant-rich software. . . • New features are added • Features are removed 1. feature is no longer supported: complete removal 2. feature continues to be supported, but its abstraction is no longer present (disappears from the variability model). Examples: • merge • split • rename 3/28
  • 11. In evolving variant-rich software. . . • New features are added • Features are removed 1. feature is no longer supported: complete removal 2. feature continues to be supported, but its abstraction is no longer present (disappears from the variability model). Examples: • merge • split • rename • Constraints are changed, etc. 3/28
  • 12. Example (from Linux) 4/28
  • 13. ... Ralink Drivers ... RT2860 RT3090 ... 4/28
  • 14. ... Ralink Drivers ... RT2860 RT3090 ... 4/28
  • 15. ... Ralink Drivers ... RT2860 ... 4/28
  • 16. ... Ralink Drivers ... RT2860 ... Complete removal? 4/28
  • 17. Existing evolution studies tend to focus on the variability model alone 5/28
  • 18. That doesn’t tell the whole story. . . 6/28
  • 19. Ralink Drivers ... RT2860 RT3090 ... 7/28
  • 20. Ralink Drivers Configuration space ... RT2860 RT3090 ... 7/28
  • 21. Ralink Drivers ... RT2860 RT3090 ... Compilation space 7/28
  • 22. Ralink Drivers ... RT2860 RT3090 ... Implementation space 7/28
  • 24. Ralink Drivers ... RT2860 RT3090 ... 7/28
  • 25. Ralink Drivers ... RT2860 RT3090 ... 7/28
  • 26. Ralink Drivers ... RT2860 RT3090 ... 7/28
  • 27. Ralink Drivers ... RT2860 RT3090 ... 7/28
  • 28. With the three spaces in mind, the real picture of . . . 8/28
  • 29. ... Ralink Drivers ... RT2860 RT3090 ... is 8/28
  • 30. Ralink Drivers ... RT2860 RT3090 ... 8/28
  • 31. Ralink Drivers ... RT2860 RT3090 ... copy copy copy 8/28
  • 32. Ralink Drivers ... RT2860 RT3090 ... copy copy copy RT3090 is merged into RT2860 8/28
  • 33. We want to know. . . 9/28
  • 34. How do the three spaces evolve together in real world variant rich software? 10/28
  • 35. How do the three spaces evolve together in real world variant rich software? Focus: features that disappear from the configuration space 10/28
  • 36. Two goals Understand the evolution of the three spaces in a real-word variant rich software 11/28
  • 37. Two goals Understand the evolution of the three spaces in a real-word variant rich software Document our understanding in the form of evolution patterns (preliminary). 11/28
  • 38. Our subject of analysis 12/28
  • 39. Qualities of Linux as a subject of study • Mature: over 20 years since its first release 13/28
  • 40. Qualities of Linux as a subject of study • Mature: over 20 years since its first release • Complex: over 6,000 features 13/28
  • 41. Qualities of Linux as a subject of study • Mature: over 20 years since its first release • Complex: over 6,000 features • Changes are kept in a publicly available SCM Repository (git) 13/28
  • 42. Qualities of Linux as a subject of study • Mature: over 20 years since its first release • Complex: over 6,000 features • Changes are kept in a publicly available SCM Repository (git) • Continuous development 13/28
  • 43. Qualities of Linux as a subject of study • Mature: over 20 years since its first release • Complex: over 6,000 features • Changes are kept in a publicly available SCM Repository (git) • Continuous development • Contains multiple spaces: 13/28
  • 44. Qualities of Linux as a subject of study • Mature: over 20 years since its first release • Complex: over 6,000 features • Changes are kept in a publicly available SCM Repository (git) • Continuous development • Contains multiple spaces: ◦ configuration space: Kconfig 13/28
  • 45. Qualities of Linux as a subject of study • Mature: over 20 years since its first release • Complex: over 6,000 features • Changes are kept in a publicly available SCM Repository (git) • Continuous development • Contains multiple spaces: ◦ configuration space: Kconfig ◦ compilation space: Makefile 13/28
  • 46. Qualities of Linux as a subject of study • Mature: over 20 years since its first release • Complex: over 6,000 features • Changes are kept in a publicly available SCM Repository (git) • Continuous development • Contains multiple spaces: ◦ configuration space: Kconfig ◦ compilation space: Makefile ◦ implementation space: C code 13/28
  • 47. Variability evolution patterns from Linux 14/28
  • 48. Data collection & Analysis • Data collection is limited to three pairs of stable kernel releases in x86 64 • For each pair, we considered only the features that disappeared from the configuration space • Manual analysis of 140 removals from a total of 220 (63%) 15/28
  • 49. Infrastructure • Extraction and reuse of Kconfig parsing infrastructure from Linux itself ◦ allow us to compute disappearing features among each release kernel • Conversion of Linux patches from git into a relational database ◦ allow us to quickly identify which commit erases a feature from the configuration space • git log + gitk, grep: visualize and search logs 16/28
  • 50. Extracting patterns is hard! Difficulties in analyzing patches when collecting patterns: • unrelated changes (noise) • technical comments (too much jargon) • extensive set of changes • everything is recorded in the SCM as addition/removal of lines (too low level) 17/28
  • 51. Four identified patterns • Optional feature to implicit mandatory • Computed attributed feature to code • Merge features by module aliasing • Optional feature to kernel parameter Template: structure, instance and discussion 18/28
  • 52. Four identified patterns • Optional feature to implicit mandatory • Computed attributed feature to code • Merge features by module aliasing • Optional feature to kernel parameter Template: structure, instance and discussion 18/28
  • 53. Optional feature to implicit mandatory 19/28
  • 54. Structure & Instance X X ... ... ... ... Y CTC CTC[XY] if Y, if Y, if X, compile Y.c into Y.o compile Y.c into Y.o compile X.c into X.c compile X.c into X.c #ifdef X Y.c #ifdef Y ... Y.c #ifdef Y ... #endif #endif (Before) (After) 20/28
  • 55. Structure & Instance X X ... ... ... ... Y CTC CTC[XY] if Y, if Y, if X, compile Y.c into Y.o compile Y.c into Y.o compile X.c into X.c compile X.c into X.c #ifdef X Y.c #ifdef Y ... Y.c #ifdef Y ... #endif #endif (Before) (After) 20/28
  • 56. Structure & Instance X X ... ... ... ... Y CTC CTC[XY] if Y, if Y, if X, compile Y.c into Y.o compile Y.c into Y.o compile X.c into X.c compile X.c into X.c #ifdef X Y.c #ifdef Y ... Y.c #ifdef Y ... #endif #endif (Before) (After) 20/28
  • 57. Structure & Instance X X ... ... ... ... Y CTC CTC[XY] if Y, if Y, if X, compile Y.c into Y.o compile Y.c into Y.o compile X.c into X.c compile X.c into X.c #ifdef X Y.c #ifdef Y ... Y.c #ifdef Y ... #endif #endif (Before) (After) 20/28
  • 58. Structure & Instance X X ... ... ... ... Y CTC CTC[XY] if Y, if Y, if X, compile Y.c into Y.o compile Y.c into Y.o compile X.c into X.c compile X.c into X.c #ifdef X Y.c #ifdef Y ... Y.c #ifdef Y ... #endif #endif (Before) (After) Instance: X = OCFS, Y= OCFS Access Control List 20/28
  • 59. Discussion Pattern should be used when: • users should not be given the freedom to configure Y ◦ e.g.: they may inadvertly forget to select it, as in Access Control List (Y) • Y is a critical feature that makes sense to exist in the software, given the presence of its parent X 21/28
  • 60. Our patterns have direct implications. . . 22/28
  • 61. Direct implications • Existing evolution studies (She et al. at Vamos’10, Lotufo et. al. at SPLC’10) focus on the variability model alone: our patterns show that features can be erased from the configuration space, while still present in the implementation space • Our patterns capture situations not covered by the existing SPL evolution theory (Borba et al. at ITAC’10) ◦ compatibility of product is not guaranteed (evolution is not safe) 23/28
  • 63. Conclusions • Evolution must focus on all spaces • We presented 4 patterns extracted from Linux • Our patterns explain the evolution of features removed from the configuration space • They show evolution steps not captured in previous studies (both theoretical and empirical). 25/28
  • 65. Future work • Collect patterns not restricted to removals • Measure frequency • Study other systems 27/28