SlideShare a Scribd company logo
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
                                      Conļ¬guration 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
                   conļ¬guration 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 ļ¬rst release




13/28
Qualities of Linux as a subject of study

        ā€¢ Mature: over 20 years since its ļ¬rst release

        ā€¢ Complex: over 6,000 features




13/28
Qualities of Linux as a subject of study

        ā€¢ Mature: over 20 years since its ļ¬rst 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 ļ¬rst 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 ļ¬rst 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 ļ¬rst release

        ā€¢ Complex: over 6,000 features

        ā€¢ Changes are kept in a publicly available SCM Repository (git)

        ā€¢ Continuous development

        ā€¢ Contains multiple spaces:

          ā—¦ conļ¬guration space: Kconļ¬g




13/28
Qualities of Linux as a subject of study

        ā€¢ Mature: over 20 years since its ļ¬rst release

        ā€¢ Complex: over 6,000 features

        ā€¢ Changes are kept in a publicly available SCM Repository (git)

        ā€¢ Continuous development

        ā€¢ Contains multiple spaces:

          ā—¦ conļ¬guration space: Kconļ¬g

          ā—¦ compilation space: Makeļ¬le



13/28
Qualities of Linux as a subject of study

        ā€¢ Mature: over 20 years since its ļ¬rst release

        ā€¢ Complex: over 6,000 features

        ā€¢ Changes are kept in a publicly available SCM Repository (git)

        ā€¢ Continuous development

        ā€¢ Contains multiple spaces:

          ā—¦ conļ¬guration space: Kconļ¬g

          ā—¦ compilation space: Makeļ¬le

          ā—¦ 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 conļ¬guration space

        ā€¢ Manual analysis of 140 removals from a total of 220 (63%)




15/28
Infrastructure



        ā€¢ Extraction and reuse of Kconļ¬g 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
            conļ¬guration space

        ā€¢ git log + gitk, grep: visualize and search logs




16/28
Extracting patterns is hard!


        Diļ¬ƒculties 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 identiļ¬ed 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 identiļ¬ed 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 conļ¬gure 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 conļ¬guration 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
          conļ¬guration 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

More Related Content

Similar to FOSD Presentation

Efficient kernel backporting
Efficient kernel backportingEfficient kernel backporting
Efficient kernel backporting
LF 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 Computing
RuymƔ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 Practices
christophm
Ā 
Functional Programming in Java
Functional Programming in JavaFunctional Programming in Java
Functional Programming in Java
Jim Bethancourt
Ā 
Universal metrics with Apache Beam
Universal metrics with Apache BeamUniversal metrics with Apache Beam
Universal metrics with Apache Beam
Etienne 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 Pipelines
Brent Laster
Ā 
OpenTelemetry For Architects
OpenTelemetry For ArchitectsOpenTelemetry For Architects
OpenTelemetry For Architects
Kevin 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 MeetUp
JosƩ RomƔn Martƭn Gil
Ā 
XNAT Open Source Development
XNAT Open Source DevelopmentXNAT Open Source Development
XNAT Open Source Development
John 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 practices
Ankush 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
Ā 
Matlab module
Matlab moduleMatlab module
Matlab module
Arif Yunus
Ā 
Intro to Kubernetes & GitOps Workshop
Intro to Kubernetes & GitOps WorkshopIntro to Kubernetes & GitOps Workshop
Intro to Kubernetes & GitOps Workshop
Weaveworks
Ā 
robert-kovacsics-part-ii-dissertation
robert-kovacsics-part-ii-dissertationrobert-kovacsics-part-ii-dissertation
robert-kovacsics-part-ii-dissertation
Robert 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.pdf
albusfons939393
Ā 
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Victor Rentea
Ā 
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
JITENDRA LENKA
Ā 

Similar to FOSD Presentation (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
Ā 
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Ā 
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
Ā 

Recently uploaded

Communications Mining Series - Zero to Hero - Session 1
Communications Mining Series - Zero to Hero - Session 1Communications Mining Series - Zero to Hero - Session 1
Communications Mining Series - Zero to Hero - Session 1
DianaGray10
Ā 
GraphRAG for Life Science to increase LLM accuracy
GraphRAG for Life Science to increase LLM accuracyGraphRAG for Life Science to increase LLM accuracy
GraphRAG for Life Science to increase LLM accuracy
Tomaz Bratanic
Ā 
Unlock the Future of Search with MongoDB Atlas_ Vector Search Unleashed.pdf
Unlock the Future of Search with MongoDB Atlas_ Vector Search Unleashed.pdfUnlock the Future of Search with MongoDB Atlas_ Vector Search Unleashed.pdf
Unlock the Future of Search with MongoDB Atlas_ Vector Search Unleashed.pdf
Malak Abu Hammad
Ā 
GenAI Pilot Implementation in the organizations
GenAI Pilot Implementation in the organizationsGenAI Pilot Implementation in the organizations
GenAI Pilot Implementation in the organizations
kumardaparthi1024
Ā 
Removing Uninteresting Bytes in Software Fuzzing
Removing Uninteresting Bytes in Software FuzzingRemoving Uninteresting Bytes in Software Fuzzing
Removing Uninteresting Bytes in Software Fuzzing
Aftab Hussain
Ā 
Introduction to CHERI technology - Cybersecurity
Introduction to CHERI technology - CybersecurityIntroduction to CHERI technology - Cybersecurity
Introduction to CHERI technology - Cybersecurity
mikeeftimakis1
Ā 
Full-RAG: A modern architecture for hyper-personalization
Full-RAG: A modern architecture for hyper-personalizationFull-RAG: A modern architecture for hyper-personalization
Full-RAG: A modern architecture for hyper-personalization
Zilliz
Ā 
Artificial Intelligence for XMLDevelopment
Artificial Intelligence for XMLDevelopmentArtificial Intelligence for XMLDevelopment
Artificial Intelligence for XMLDevelopment
Octavian Nadolu
Ā 
HCL Notes und Domino Lizenzkostenreduzierung in der Welt von DLAU
HCL Notes und Domino Lizenzkostenreduzierung in der Welt von DLAUHCL Notes und Domino Lizenzkostenreduzierung in der Welt von DLAU
HCL Notes und Domino Lizenzkostenreduzierung in der Welt von DLAU
panagenda
Ā 
Observability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdf
Observability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdfObservability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdf
Observability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdf
Paige Cruz
Ā 
UiPath Test Automation using UiPath Test Suite series, part 5
UiPath Test Automation using UiPath Test Suite series, part 5UiPath Test Automation using UiPath Test Suite series, part 5
UiPath Test Automation using UiPath Test Suite series, part 5
DianaGray10
Ā 
TrustArc Webinar - 2024 Global Privacy Survey
TrustArc Webinar - 2024 Global Privacy SurveyTrustArc Webinar - 2024 Global Privacy Survey
TrustArc Webinar - 2024 Global Privacy Survey
TrustArc
Ā 
ā€œIā€™m still / Iā€™m still / Chaining from the Blockā€
ā€œIā€™m still / Iā€™m still / Chaining from the Blockā€ā€œIā€™m still / Iā€™m still / Chaining from the Blockā€
ā€œIā€™m still / Iā€™m still / Chaining from the Blockā€
Claudio Di Ciccio
Ā 
GraphSummit Singapore | Enhancing Changi Airport Group's Passenger Experience...
GraphSummit Singapore | Enhancing Changi Airport Group's Passenger Experience...GraphSummit Singapore | Enhancing Changi Airport Group's Passenger Experience...
GraphSummit Singapore | Enhancing Changi Airport Group's Passenger Experience...
Neo4j
Ā 
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
Ā 
Pushing the limits of ePRTC: 100ns holdover for 100 days
Pushing the limits of ePRTC: 100ns holdover for 100 daysPushing the limits of ePRTC: 100ns holdover for 100 days
Pushing the limits of ePRTC: 100ns holdover for 100 days
Adtran
Ā 
AI 101: An Introduction to the Basics and Impact of Artificial Intelligence
AI 101: An Introduction to the Basics and Impact of Artificial IntelligenceAI 101: An Introduction to the Basics and Impact of Artificial Intelligence
AI 101: An Introduction to the Basics and Impact of Artificial Intelligence
IndexBug
Ā 
GraphSummit Singapore | The Art of the Possible with Graph - Q2 2024
GraphSummit Singapore | The Art of the  Possible with Graph - Q2 2024GraphSummit Singapore | The Art of the  Possible with Graph - Q2 2024
GraphSummit Singapore | The Art of the Possible with Graph - Q2 2024
Neo4j
Ā 
Microsoft - Power Platform_G.Aspiotis.pdf
Microsoft - Power Platform_G.Aspiotis.pdfMicrosoft - Power Platform_G.Aspiotis.pdf
Microsoft - Power Platform_G.Aspiotis.pdf
Uni Systems S.M.S.A.
Ā 
Why You Should Replace Windows 11 with Nitrux Linux 3.5.0 for enhanced perfor...
Why You Should Replace Windows 11 with Nitrux Linux 3.5.0 for enhanced perfor...Why You Should Replace Windows 11 with Nitrux Linux 3.5.0 for enhanced perfor...
Why You Should Replace Windows 11 with Nitrux Linux 3.5.0 for enhanced perfor...
SOFTTECHHUB
Ā 

Recently uploaded (20)

Communications Mining Series - Zero to Hero - Session 1
Communications Mining Series - Zero to Hero - Session 1Communications Mining Series - Zero to Hero - Session 1
Communications Mining Series - Zero to Hero - Session 1
Ā 
GraphRAG for Life Science to increase LLM accuracy
GraphRAG for Life Science to increase LLM accuracyGraphRAG for Life Science to increase LLM accuracy
GraphRAG for Life Science to increase LLM accuracy
Ā 
Unlock the Future of Search with MongoDB Atlas_ Vector Search Unleashed.pdf
Unlock the Future of Search with MongoDB Atlas_ Vector Search Unleashed.pdfUnlock the Future of Search with MongoDB Atlas_ Vector Search Unleashed.pdf
Unlock the Future of Search with MongoDB Atlas_ Vector Search Unleashed.pdf
Ā 
GenAI Pilot Implementation in the organizations
GenAI Pilot Implementation in the organizationsGenAI Pilot Implementation in the organizations
GenAI Pilot Implementation in the organizations
Ā 
Removing Uninteresting Bytes in Software Fuzzing
Removing Uninteresting Bytes in Software FuzzingRemoving Uninteresting Bytes in Software Fuzzing
Removing Uninteresting Bytes in Software Fuzzing
Ā 
Introduction to CHERI technology - Cybersecurity
Introduction to CHERI technology - CybersecurityIntroduction to CHERI technology - Cybersecurity
Introduction to CHERI technology - Cybersecurity
Ā 
Full-RAG: A modern architecture for hyper-personalization
Full-RAG: A modern architecture for hyper-personalizationFull-RAG: A modern architecture for hyper-personalization
Full-RAG: A modern architecture for hyper-personalization
Ā 
Artificial Intelligence for XMLDevelopment
Artificial Intelligence for XMLDevelopmentArtificial Intelligence for XMLDevelopment
Artificial Intelligence for XMLDevelopment
Ā 
HCL Notes und Domino Lizenzkostenreduzierung in der Welt von DLAU
HCL Notes und Domino Lizenzkostenreduzierung in der Welt von DLAUHCL Notes und Domino Lizenzkostenreduzierung in der Welt von DLAU
HCL Notes und Domino Lizenzkostenreduzierung in der Welt von DLAU
Ā 
Observability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdf
Observability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdfObservability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdf
Observability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdf
Ā 
UiPath Test Automation using UiPath Test Suite series, part 5
UiPath Test Automation using UiPath Test Suite series, part 5UiPath Test Automation using UiPath Test Suite series, part 5
UiPath Test Automation using UiPath Test Suite series, part 5
Ā 
TrustArc Webinar - 2024 Global Privacy Survey
TrustArc Webinar - 2024 Global Privacy SurveyTrustArc Webinar - 2024 Global Privacy Survey
TrustArc Webinar - 2024 Global Privacy Survey
Ā 
ā€œIā€™m still / Iā€™m still / Chaining from the Blockā€
ā€œIā€™m still / Iā€™m still / Chaining from the Blockā€ā€œIā€™m still / Iā€™m still / Chaining from the Blockā€
ā€œIā€™m still / Iā€™m still / Chaining from the Blockā€
Ā 
GraphSummit Singapore | Enhancing Changi Airport Group's Passenger Experience...
GraphSummit Singapore | Enhancing Changi Airport Group's Passenger Experience...GraphSummit Singapore | Enhancing Changi Airport Group's Passenger Experience...
GraphSummit Singapore | Enhancing Changi Airport Group's Passenger Experience...
Ā 
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
Ā 
Pushing the limits of ePRTC: 100ns holdover for 100 days
Pushing the limits of ePRTC: 100ns holdover for 100 daysPushing the limits of ePRTC: 100ns holdover for 100 days
Pushing the limits of ePRTC: 100ns holdover for 100 days
Ā 
AI 101: An Introduction to the Basics and Impact of Artificial Intelligence
AI 101: An Introduction to the Basics and Impact of Artificial IntelligenceAI 101: An Introduction to the Basics and Impact of Artificial Intelligence
AI 101: An Introduction to the Basics and Impact of Artificial Intelligence
Ā 
GraphSummit Singapore | The Art of the Possible with Graph - Q2 2024
GraphSummit Singapore | The Art of the  Possible with Graph - Q2 2024GraphSummit Singapore | The Art of the  Possible with Graph - Q2 2024
GraphSummit Singapore | The Art of the Possible with Graph - Q2 2024
Ā 
Microsoft - Power Platform_G.Aspiotis.pdf
Microsoft - Power Platform_G.Aspiotis.pdfMicrosoft - Power Platform_G.Aspiotis.pdf
Microsoft - Power Platform_G.Aspiotis.pdf
Ā 
Why You Should Replace Windows 11 with Nitrux Linux 3.5.0 for enhanced perfor...
Why You Should Replace Windows 11 with Nitrux Linux 3.5.0 for enhanced perfor...Why You Should Replace Windows 11 with Nitrux Linux 3.5.0 for enhanced perfor...
Why You Should Replace Windows 11 with Nitrux Linux 3.5.0 for enhanced perfor...
Ā 

FOSD Presentation

  • 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 Conļ¬guration 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 conļ¬guration 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 ļ¬rst release 13/28
  • 40. Qualities of Linux as a subject of study ā€¢ Mature: over 20 years since its ļ¬rst release ā€¢ Complex: over 6,000 features 13/28
  • 41. Qualities of Linux as a subject of study ā€¢ Mature: over 20 years since its ļ¬rst 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 ļ¬rst 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 ļ¬rst 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 ļ¬rst release ā€¢ Complex: over 6,000 features ā€¢ Changes are kept in a publicly available SCM Repository (git) ā€¢ Continuous development ā€¢ Contains multiple spaces: ā—¦ conļ¬guration space: Kconļ¬g 13/28
  • 45. Qualities of Linux as a subject of study ā€¢ Mature: over 20 years since its ļ¬rst release ā€¢ Complex: over 6,000 features ā€¢ Changes are kept in a publicly available SCM Repository (git) ā€¢ Continuous development ā€¢ Contains multiple spaces: ā—¦ conļ¬guration space: Kconļ¬g ā—¦ compilation space: Makeļ¬le 13/28
  • 46. Qualities of Linux as a subject of study ā€¢ Mature: over 20 years since its ļ¬rst release ā€¢ Complex: over 6,000 features ā€¢ Changes are kept in a publicly available SCM Repository (git) ā€¢ Continuous development ā€¢ Contains multiple spaces: ā—¦ conļ¬guration space: Kconļ¬g ā—¦ compilation space: Makeļ¬le ā—¦ 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 conļ¬guration space ā€¢ Manual analysis of 140 removals from a total of 220 (63%) 15/28
  • 49. Infrastructure ā€¢ Extraction and reuse of Kconļ¬g 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 conļ¬guration space ā€¢ git log + gitk, grep: visualize and search logs 16/28
  • 50. Extracting patterns is hard! Diļ¬ƒculties 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 identiļ¬ed 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 identiļ¬ed 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 conļ¬gure 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 conļ¬guration 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 conļ¬guration 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