SlideShare a Scribd company logo
How Do Developers React to
API Deprecation?
The Case of a Smalltalk Ecosystem

    Romain Robbes             Mircea Lungu
David Röthlisberger           Software Composition Group
        University of Chile   University of Bern


                       FSE, 2012
Software
A Natural Ecosystem
Ecosystems
A collection of software systems which are developed
and co-evolve in the same environment.




A Software Ecosystem
A collection of software systems which are developed
and co-evolve in the same environment.




                                                Activity (high)



                                            Dependency



A Software Ecosystem                      Activity (low)
                                                           size
A collection of software systems which are developed
and co-evolve in the same environment.




A Software Ecosystem
[...] where is MOLabelShape,
why was it deleted?? I use it
and now is gone!!! I even had
a specialization of it [...]
Deprecating a class in the ecosystem




   FillInTheBlank     UIManager
      (deprecated)   (recommended)
Tool Support...
Tool Support...


                  Empirical
                  Evidence
                   First!
API Changes

         Providers
          Classes
          Methods
API Changes

Ripple-inducing changes
                          Providers
• addition of provider     Classes
• change of provider       Methods
• removal of provider
API Changes

Ripple-inducing changes
                                   Providers
• addition of provider              Classes
• change of provider                Methods
• removal of provider
         Deprecation of provider
         = lower bounds
API Deprecation:
Empirical Study

   1. Frequency
   2. Magnitude
   3. Duration
   4. Adaptation
SqueakSource
        8 years   {   Contributors:
                          Projects:
                           Classes:
                         Commits:
                                        2.300
                                        2.500
                                       95.000
                                      110.000
                             LOC: 600.000.000
How to model the history of
      SqueakSource?

                                        System
                                        History
                  Ecosystem




                                         Version 1

                                                      Version 2




                                                                                          Version n
                                                                        Version i
                   History
                   History
                                                                  ...               ...
                   History

                    ...                 System
                                        Version
                   History
                                Added
                                                     Artifacts                                 ...
                              Removed

                                        Provided Required
Ecco - a lighweight model
                          System
                          History
Ecosystem




                           Version 1

                                        Version 2




                                                                            Version n
                                                          Version i
 History
 History
                                                    ...               ...
 History

  ...                     System
                          Version
 History
                  Added
                                       Artifacts                                 ...
                Removed

                          Provided Required
Methodology
1. Generate list of candidates (577 methods,
   186 classes)
2. Filter methods removed less than 3 times
3. Manual inspection of the rest of the
   candidates
4. Answer RQ for all the true deprecation-
   based ripples
Manual Inspection

+ Retrieve changes involving deprecation
+ Display changes in Ripple Browser
                                           x2
+ Validate impacted projects
+ Track replacement methods
= 180 methods + 20 classes
Results
}
Results
          Frequency
          Magnitude
          Duration
          Adaptations
RQ1: Frequency of ripple effects triggered by
API deprecation


  14% of deprecated methods triggered ripple effects.

  7% of deprecated classes triggered ripple effects.
RQ1: Frequency of ripple effects triggered by
API deprecation


  14% of deprecated methods triggered ripple effects.

  7% of deprecated classes triggered ripple effects.


      developers do not know their clients and program
  ⤷   defensively
RQ1: Frequency of ripple effects triggered by
API deprecation


  14% of deprecated methods triggered ripple effects.

  7% of deprecated classes triggered ripple effects.


      developers do not know their clients and program
  ⤷   defensively

  ⤷ clients may still be unaware of deprecations
RQ2: Magnitude of ripple effects triggered by
API deprecation
                   reacting projects
                     (i) reacting projects         (ii) reacting pack




              80
                              ●                               ●




                                             120
                                             100
              60




                                             80
                              ●                               ●
              40

                              ●
                                                              ●




                                             60
                              ●
                              ●                               ●
                                                              ●
                              ●
                              ●                               ●
                              ●                               ●
                                                              ●




                                             40
                                                              ●
              20




                                                              ●
                                                              ●




                                             20
                                             0
              0
RQ2: Magnitude of ripple effects triggered by
API deprecation
                     reacting projects
                       (i) reacting projects         (ii) reacting pack




                80
                                ●                               ●




                                               120
                                               100
                60




                                               80
                                ●                               ●
                40

                                ●
                                                                ●




                                               60
                                ●
                                ●                               ●
                                                                ●
                                ●
                                ●                               ●
                                ●                               ●
                                                                ●




                                               40
                                                                ●
                20




                                                                ●
                                                                ●




                                               20
                                               0
                0




   ⤷ several projects usually react
   ⤷ the impact on the ecosystem can be very large
Viewing the magnitude from other angles



   60
   40
   20
    0
         Projects   Developers Packages       Commits


    A project reacting to an API change ...
Viewing the magnitude from other angles



   60
   40
   20
    0
         Projects   Developers Packages       Commits


    A project reacting to an API change ...

    ⤷ may involve several developers and packages
Viewing the magnitude from other angles



   60
   40
   20
    0
         Projects   Developers Packages       Commits


    A project reacting to an API change ...

    ⤷ may involve several developers and packages
    ⤷ is often a process involving several commits
RQ3: Duration of ripple effects triggered by API
deprecation
           (i) reaction Time   Adaptation timetime days)
                                    (ii) adaptation (in

                   ●

 For a given project, the




                               60
   800




 adaptation time is the




                               50
                   ●
                   ●

 time between the first
                   ●
   600




                               40
 reaction and the last
                   ●


 reaction to the API



                               30
   400




                   ●

 change            ●
                   ●




                               20
                   ●
   200




                               10
   0




                               0
RQ3: Duration of ripple effects triggered by API
deprecation
           (i) reaction Time     Adaptation timetime days)
                                      (ii) adaptation (in

                   ●

 For a given project, the




                                60
   800




 adaptation time is the




                                50
                   ●
                   ●

 time between the first
                   ●
   600




                                40
 reaction and the last
                   ●


 reaction to the API



                                30
   400




                   ●

 change            ●
                   ●




                                20
                   ●
   200




                                10
   0




                                0


         most projects are quick to react and adapt;
   ⤷     but not all are
RQ3: Duration of ripple effects triggered by API
deprecation
           (i) reaction Time     Adaptation timetime days)
                                      (ii) adaptation (in

                   ●

 For a given project, the




                                60
   800




 adaptation time is the




                                50
                   ●
                   ●

 time between the first
                   ●
   600




                                40
 reaction and the last
                   ●


 reaction to the API



                                30
   400




                   ●

 change            ●
                   ●




                                20
                   ●
   200




                                10
   0




                                0


         most projects are quick to react and adapt;
   ⤷     but not all are
         On the scale of the ecosystem, some ripple
   ⤷     effects lasted for years.
RQ4: Do all projects adapt to API changes?


 70                              66%


 53
                     40%
 35
       20%
 18


  0
        All         Active    No counter-
                   projects    reactions
RQ4: Do all projects adapt to API changes?


 70                                      66%


 53
                             40%
 35
            20%
 18


  0
            All             Active    No counter-
                           projects    reactions
      Why so few
      reacting projects?
RQ4: Do all projects adapt to API changes?


 70                                        66%


 53
                           40%
 35
           20%
 18


  0
            All            Active       No counter-
                          projects        reactions
      Why so few         Dead or stagnant
      reacting projects? projects?
RQ4: Do all projects adapt to API changes?


 70                                      66%


 53
                             40%
 35
            20%
 18


  0
            All             Active    No counter-
                           projects    reactions
      Why so few
      reacting projects?
RQ4: Do all projects adapt to API changes?


 70                                       66%


 53
                             40%
 35
            20%
 18


  0
            All             Active    No counter-
                           projects    reactions
      Why so few                        Forks in the
      reacting projects?                ecosystem?
RQ4: Do all projects adapt to API changes?


 70                                      66%


 53
                             40%
 35
            20%
 18


  0
            All             Active    No counter-
                           projects    reactions
      Why so few
      reacting projects?
RQ4: Do all projects adapt to API changes?


 70                              66%


 53
                     40%
 35
       20%
 18


  0
        All         Active    No counter-
                   projects    reactions
RQ4: Do all projects adapt to API changes?


 70                                         66%


 53
                           40%
 35
           20%
 18


  0
           All            Active        No counter-
                         projects        reactions


      common reasons for not reacting are stagnancy,
⤷     forks, but also freezed dependencies and unawareness.
RQ5: Consistency of adaptations


  addEntity: was replaced by:

       add:
 addModel:
addObject:
    addAll:
 addSibling:

               0   20 40 60 80
RQ5: Consistency of adaptations

                                         Frequency of most
  addEntity: was replaced by:            frequent replacement
                                       Probability of most likely replacement




                                 100
       add:
 addModel:




                                 80
                                 60
addObject:




                                 40
    addAll:




                                 20
 addSibling:



                                 0
               0   20 40 60 80
RQ5: Consistency of adaptations

                                          Frequency of most
  addEntity: was replaced by:             frequent replacement
                                        Probability of most likely replacement




                                  100
       add:
 addModel:




                                  80
                                  60
addObject:




                                  40
    addAll:




                                  20
 addSibling:



                                  0
               0   20 40 60 80


  ⤷     Many API deprecation have similar reactions
RQ5: Consistency of adaptations

                                         Frequency of most
  addEntity: was replaced by:            frequent replacement
                                       Probability of most likely replacement




                                 100
       add:
 addModel:




                                 80
                                 60
addObject:




                                 40
    addAll:




                                 20
 addSibling:



                                 0
               0   20 40 60 80


  ⤷ Many API deprecation have similar reactions
  ⤷ 16% of deprecations had a systematic replacement
RQ6: Were deprecation messages useful?
 foo: x
     self deprecated: ‘use method bar instead’
RQ6: Were deprecation messages useful?
 foo: x
     self deprecated: ‘use method bar instead’

 We categorized deprecation messages according to
 whether developer followed the recommendation.
RQ6: Were deprecation messages useful?
 foo: x
     self deprecated: ‘use method bar instead’

 We categorized deprecation messages according to
 whether developer followed the recommendation.

 Mostly followed: if “X” most people did X

 Somewhat followed: most people did Y, but others did X

 Not followed: most people did Y, Z ...

 Missing: no recommendation, vague recommendation.
RQ6: Were deprecation messages useful?
 foo: x
     self deprecated: ‘use method bar instead’

 We categorized deprecation messages according to
 whether developer followed the recommendation.

 Mostly followed: if “X” most people did X

 Somewhat followed: most people did Y, but others did X

 Not followed: most people did Y, Z ...

 Missing: no recommendation, vague recommendation.

self deprecated: ‘removed functionality’
self deprecated: ‘use canvas API’
self deprecated: ‘ugly method, do not call it!’
RQ6: Were deprecation messages useful?

50
      46.8%
                                         40.4%
38


25


13                           7.4%
                  5.3%
 0
                    Recommendation ...
      Mostly    Somewhat       Not       Missing
     followed    followed   followed
RQ6: Were deprecation messages useful?

50
      46.8%
                                          40.4%
38


25


13                             7.4%
                  5.3%
 0
                    Recommendation ...
      Mostly    Somewhat        Not       Missing
     followed    followed    followed

⤷ half of deprecation messages are missing or not useful
Threats to validity



    Code duplication, name clashes introduce noise

    We only consider explicit deprecation so far

    Partially manual analysis

    Single case study with peculiarities:
      – Dynamically typed language (Smalltalk)
      – Fork in the community
Related work
 Empirical studies:
 – Studies of API changes and client evolution
     [Dig & Johnson, 2005]
 – Studies of ripple effects at the system level
     [Yau et al., 1978; Black, 2001]

 Adapting to API changes:
 – Replaying refactorings [Henkel & Diwan 2004;
       Ekman & Asklund 2005; Dig et al. 2007]
 – Detecting systematic changes
       [Kim and Notkin 2009]
 – Adapting to evolving frameworks
       [Dagenais & Robillard 2008; Shäfer et al. 2008]
 – Filtering irrelevant changes
      [Holmes and Walker, 2010]
Conclusions and implications
                                                     System
                                                     History
                               Ecosystem




                                                      Version 1

                                                                   Version 2




                                                                                                       Version n
                                                                                     Version i
                                History
                                History
                                                                               ...               ...
                                History

                                 ...                 System
                                                     Version
                                History
                                             Added
                                                                  Artifacts                                 ...
                                           Removed

                                                     Provided Required
Conclusions and implications
                                                                 System
                                                                 History
                                           Ecosystem




                                                                  Version 1

                                                                               Version 2




                                                                                                                   Version n
                                                                                                 Version i
                                            History
                                            History
                                                                                           ...               ...
                                            History

                                             ...                 System
                                                                 Version
                                            History
                                                         Added
                                                                              Artifacts                                 ...
                                                       Removed

                                                                 Provided Required




⤷ The quality of deprecation guidelines should be improved
Conclusions and implications
                                                                 System
                                                                 History
                                           Ecosystem




                                                                  Version 1

                                                                               Version 2




                                                                                                                   Version n
                                                                                                 Version i
                                            History
                                            History
                                                                                           ...               ...
                                            History

                                             ...                 System
                                                                 Version
                                            History
                                                         Added
                                                                              Artifacts                                 ...
                                                       Removed

                                                                 Provided Required




⤷ The quality of deprecation guidelines should be improved
⤷ Some API deprecations have a large impact
Conclusions and implications
                                                                 System
                                                                 History
                                           Ecosystem




                                                                  Version 1

                                                                               Version 2




                                                                                                                   Version n
                                                                                                 Version i
                                            History
                                            History
                                                                                           ...               ...
                                            History

                                             ...                 System
                                                                 Version
                                            History
                                                         Added
                                                                              Artifacts                                 ...
                                                       Removed

                                                                 Provided Required




⤷ The quality of deprecation guidelines should be improved
⤷ Some API deprecations have a large impact
⤷ Developers do not know how their software is used
Conclusions and implications
                                                                 System
                                                                 History
                                           Ecosystem




                                                                  Version 1

                                                                               Version 2




                                                                                                                   Version n
                                                                                                 Version i
                                            History
                                            History
                                                                                           ...               ...
                                            History

                                             ...                 System
                                                                 Version
                                            History
                                                         Added
                                                                              Artifacts                                 ...
                                                       Removed

                                                                 Provided Required




⤷ The quality of deprecation guidelines should be improved
⤷ Some API deprecations have a large impact
⤷ Developers do not know how their software is used
⤷ Reactions to API changes can be partially automated
Conclusions and implications
                                                                 System
                                                                 History
                                           Ecosystem




                                                                  Version 1

                                                                               Version 2




                                                                                                                   Version n
                                                                                                 Version i
                                            History
                                            History
                                                                                           ...               ...
                                            History

                                             ...                 System
                                                                 Version
                                            History
                                                         Added
                                                                              Artifacts                                 ...
                                                       Removed

                                                                 Provided Required




⤷ The quality of deprecation guidelines should be improved
⤷ Some API deprecations have a large impact
⤷ Developers do not know how their software is used
⤷ Reactions to API changes can be partially automated
⤷ Tool support is needed to help with API changes
Conclusions and implications
                                                                 System
                                                                 History
                                           Ecosystem




                                                                  Version 1

                                                                               Version 2




                                                                                                                   Version n
                                                                                                 Version i
                                            History
                                            History
                                                                                           ...               ...
                                            History

                                             ...                 System
                                                                 Version
                                            History
                                                         Added
                                                                              Artifacts                                 ...
                                                       Removed

                                                                 Provided Required




⤷ The quality of deprecation guidelines should be improved
⤷ Some API deprecations have a large impact
⤷ Developers do not know how their software is used
⤷ Reactions to API changes can be partially automated
⤷ Tool support is needed to help with API changes
THE END
Read the details
 in the paper

More Related Content

Similar to How Do Developers React to API Deprecation? The Case of a Smalltalk Ecosystem

The Mashup Component Description Language
The Mashup Component Description LanguageThe Mashup Component Description Language
The Mashup Component Description Language
Saeed Aghaee
 
Generator
GeneratorGenerator
Generator
Ramasubbu .P
 
SUBJECT
SUBJECTSUBJECT
SUBJECT
Ramasubbu .P
 
Grow and Shrink - Dynamically Extending the Ruby VM Stack
Grow and Shrink - Dynamically Extending the Ruby VM StackGrow and Shrink - Dynamically Extending the Ruby VM Stack
Grow and Shrink - Dynamically Extending the Ruby VM Stack
KeitaSugiyama1
 
Vitaliy Makogon: Migration to ivy. Angular component libraries with IVY support.
Vitaliy Makogon: Migration to ivy. Angular component libraries with IVY support.Vitaliy Makogon: Migration to ivy. Angular component libraries with IVY support.
Vitaliy Makogon: Migration to ivy. Angular component libraries with IVY support.
VitaliyMakogon
 
Modernize deployment pipeline
Modernize deployment pipelineModernize deployment pipeline
Modernize deployment pipeline
Takeshi Takizawa
 
Android RenderScript on LLVM
Android RenderScript on LLVMAndroid RenderScript on LLVM
Android RenderScript on LLVM
John Lee
 
Apache Hadoop India Summit 2011 talk "Framework for a Suite of Co-clustering ...
Apache Hadoop India Summit 2011 talk "Framework for a Suite of Co-clustering ...Apache Hadoop India Summit 2011 talk "Framework for a Suite of Co-clustering ...
Apache Hadoop India Summit 2011 talk "Framework for a Suite of Co-clustering ...
Yahoo Developer Network
 
The SENSORIA Development Environment
The SENSORIA Development EnvironmentThe SENSORIA Development Environment
The SENSORIA Development Environment
Istvan Rath
 
Dreamforce_2012_Hadoop_Use_Cases
Dreamforce_2012_Hadoop_Use_CasesDreamforce_2012_Hadoop_Use_Cases
Dreamforce_2012_Hadoop_Use_Cases
Narayan Bharadwaj
 
Software Architecture: Test Case Writing
Software Architecture: Test Case WritingSoftware Architecture: Test Case Writing
Software Architecture: Test Case Writing
Sitdhibong Laokok
 
Inria Tech Talk : Améliorez vos applications de robotique & réalité augmentée
Inria Tech Talk : Améliorez vos applications de robotique & réalité augmentéeInria Tech Talk : Améliorez vos applications de robotique & réalité augmentée
Inria Tech Talk : Améliorez vos applications de robotique & réalité augmentée
Stéphanie Roger
 
Cpp essentials
Cpp essentialsCpp essentials
Cpp essentials
Rohit Bapat
 
C++ material
C++ materialC++ material
C++ material
vamshi batchu
 
Study of solution development methodology for small size projects.
Study of solution development methodology for small size projects.Study of solution development methodology for small size projects.
Study of solution development methodology for small size projects.
Joon ho Park
 
Springone2gx 2014 Reactive Streams and Reactor
Springone2gx 2014 Reactive Streams and ReactorSpringone2gx 2014 Reactive Streams and Reactor
Springone2gx 2014 Reactive Streams and Reactor
Stéphane Maldini
 
Fundamentals of Modern Embedded Systems
Fundamentals of Modern Embedded SystemsFundamentals of Modern Embedded Systems
Fundamentals of Modern Embedded Systems
eselab
 
12206970 pss7
12206970 pss712206970 pss7
12206970 pss7
kelvin9874
 
Python
PythonPython
Process Matters (Cloud2Days / Java2Days conference))
Process Matters (Cloud2Days / Java2Days conference))Process Matters (Cloud2Days / Java2Days conference))
Process Matters (Cloud2Days / Java2Days conference))
dev2ops
 

Similar to How Do Developers React to API Deprecation? The Case of a Smalltalk Ecosystem (20)

The Mashup Component Description Language
The Mashup Component Description LanguageThe Mashup Component Description Language
The Mashup Component Description Language
 
Generator
GeneratorGenerator
Generator
 
SUBJECT
SUBJECTSUBJECT
SUBJECT
 
Grow and Shrink - Dynamically Extending the Ruby VM Stack
Grow and Shrink - Dynamically Extending the Ruby VM StackGrow and Shrink - Dynamically Extending the Ruby VM Stack
Grow and Shrink - Dynamically Extending the Ruby VM Stack
 
Vitaliy Makogon: Migration to ivy. Angular component libraries with IVY support.
Vitaliy Makogon: Migration to ivy. Angular component libraries with IVY support.Vitaliy Makogon: Migration to ivy. Angular component libraries with IVY support.
Vitaliy Makogon: Migration to ivy. Angular component libraries with IVY support.
 
Modernize deployment pipeline
Modernize deployment pipelineModernize deployment pipeline
Modernize deployment pipeline
 
Android RenderScript on LLVM
Android RenderScript on LLVMAndroid RenderScript on LLVM
Android RenderScript on LLVM
 
Apache Hadoop India Summit 2011 talk "Framework for a Suite of Co-clustering ...
Apache Hadoop India Summit 2011 talk "Framework for a Suite of Co-clustering ...Apache Hadoop India Summit 2011 talk "Framework for a Suite of Co-clustering ...
Apache Hadoop India Summit 2011 talk "Framework for a Suite of Co-clustering ...
 
The SENSORIA Development Environment
The SENSORIA Development EnvironmentThe SENSORIA Development Environment
The SENSORIA Development Environment
 
Dreamforce_2012_Hadoop_Use_Cases
Dreamforce_2012_Hadoop_Use_CasesDreamforce_2012_Hadoop_Use_Cases
Dreamforce_2012_Hadoop_Use_Cases
 
Software Architecture: Test Case Writing
Software Architecture: Test Case WritingSoftware Architecture: Test Case Writing
Software Architecture: Test Case Writing
 
Inria Tech Talk : Améliorez vos applications de robotique & réalité augmentée
Inria Tech Talk : Améliorez vos applications de robotique & réalité augmentéeInria Tech Talk : Améliorez vos applications de robotique & réalité augmentée
Inria Tech Talk : Améliorez vos applications de robotique & réalité augmentée
 
Cpp essentials
Cpp essentialsCpp essentials
Cpp essentials
 
C++ material
C++ materialC++ material
C++ material
 
Study of solution development methodology for small size projects.
Study of solution development methodology for small size projects.Study of solution development methodology for small size projects.
Study of solution development methodology for small size projects.
 
Springone2gx 2014 Reactive Streams and Reactor
Springone2gx 2014 Reactive Streams and ReactorSpringone2gx 2014 Reactive Streams and Reactor
Springone2gx 2014 Reactive Streams and Reactor
 
Fundamentals of Modern Embedded Systems
Fundamentals of Modern Embedded SystemsFundamentals of Modern Embedded Systems
Fundamentals of Modern Embedded Systems
 
12206970 pss7
12206970 pss712206970 pss7
12206970 pss7
 
Python
PythonPython
Python
 
Process Matters (Cloud2Days / Java2Days conference))
Process Matters (Cloud2Days / Java2Days conference))Process Matters (Cloud2Days / Java2Days conference))
Process Matters (Cloud2Days / Java2Days conference))
 

How Do Developers React to API Deprecation? The Case of a Smalltalk Ecosystem

  • 1. How Do Developers React to API Deprecation? The Case of a Smalltalk Ecosystem Romain Robbes Mircea Lungu David Röthlisberger Software Composition Group University of Chile University of Bern FSE, 2012
  • 3. A collection of software systems which are developed and co-evolve in the same environment. A Software Ecosystem
  • 4. A collection of software systems which are developed and co-evolve in the same environment. Activity (high) Dependency A Software Ecosystem Activity (low) size
  • 5. A collection of software systems which are developed and co-evolve in the same environment. A Software Ecosystem
  • 6. [...] where is MOLabelShape, why was it deleted?? I use it and now is gone!!! I even had a specialization of it [...]
  • 7. Deprecating a class in the ecosystem FillInTheBlank UIManager (deprecated) (recommended)
  • 9. Tool Support... Empirical Evidence First!
  • 10. API Changes Providers Classes Methods
  • 11. API Changes Ripple-inducing changes Providers • addition of provider Classes • change of provider Methods • removal of provider
  • 12. API Changes Ripple-inducing changes Providers • addition of provider Classes • change of provider Methods • removal of provider Deprecation of provider = lower bounds
  • 13. API Deprecation: Empirical Study 1. Frequency 2. Magnitude 3. Duration 4. Adaptation
  • 14. SqueakSource 8 years { Contributors: Projects: Classes: Commits: 2.300 2.500 95.000 110.000 LOC: 600.000.000
  • 15. How to model the history of SqueakSource? System History Ecosystem Version 1 Version 2 Version n Version i History History ... ... History ... System Version History Added Artifacts ... Removed Provided Required
  • 16. Ecco - a lighweight model System History Ecosystem Version 1 Version 2 Version n Version i History History ... ... History ... System Version History Added Artifacts ... Removed Provided Required
  • 17. Methodology 1. Generate list of candidates (577 methods, 186 classes) 2. Filter methods removed less than 3 times 3. Manual inspection of the rest of the candidates 4. Answer RQ for all the true deprecation- based ripples
  • 18. Manual Inspection + Retrieve changes involving deprecation + Display changes in Ripple Browser x2 + Validate impacted projects + Track replacement methods = 180 methods + 20 classes
  • 20. } Results Frequency Magnitude Duration Adaptations
  • 21. RQ1: Frequency of ripple effects triggered by API deprecation 14% of deprecated methods triggered ripple effects. 7% of deprecated classes triggered ripple effects.
  • 22. RQ1: Frequency of ripple effects triggered by API deprecation 14% of deprecated methods triggered ripple effects. 7% of deprecated classes triggered ripple effects. developers do not know their clients and program ⤷ defensively
  • 23. RQ1: Frequency of ripple effects triggered by API deprecation 14% of deprecated methods triggered ripple effects. 7% of deprecated classes triggered ripple effects. developers do not know their clients and program ⤷ defensively ⤷ clients may still be unaware of deprecations
  • 24. RQ2: Magnitude of ripple effects triggered by API deprecation reacting projects (i) reacting projects (ii) reacting pack 80 ● ● 120 100 60 80 ● ● 40 ● ● 60 ● ● ● ● ● ● ● ● ● ● 40 ● 20 ● ● 20 0 0
  • 25. RQ2: Magnitude of ripple effects triggered by API deprecation reacting projects (i) reacting projects (ii) reacting pack 80 ● ● 120 100 60 80 ● ● 40 ● ● 60 ● ● ● ● ● ● ● ● ● ● 40 ● 20 ● ● 20 0 0 ⤷ several projects usually react ⤷ the impact on the ecosystem can be very large
  • 26. Viewing the magnitude from other angles 60 40 20 0 Projects Developers Packages Commits A project reacting to an API change ...
  • 27. Viewing the magnitude from other angles 60 40 20 0 Projects Developers Packages Commits A project reacting to an API change ... ⤷ may involve several developers and packages
  • 28. Viewing the magnitude from other angles 60 40 20 0 Projects Developers Packages Commits A project reacting to an API change ... ⤷ may involve several developers and packages ⤷ is often a process involving several commits
  • 29. RQ3: Duration of ripple effects triggered by API deprecation (i) reaction Time Adaptation timetime days) (ii) adaptation (in ● For a given project, the 60 800 adaptation time is the 50 ● ● time between the first ● 600 40 reaction and the last ● reaction to the API 30 400 ● change ● ● 20 ● 200 10 0 0
  • 30. RQ3: Duration of ripple effects triggered by API deprecation (i) reaction Time Adaptation timetime days) (ii) adaptation (in ● For a given project, the 60 800 adaptation time is the 50 ● ● time between the first ● 600 40 reaction and the last ● reaction to the API 30 400 ● change ● ● 20 ● 200 10 0 0 most projects are quick to react and adapt; ⤷ but not all are
  • 31. RQ3: Duration of ripple effects triggered by API deprecation (i) reaction Time Adaptation timetime days) (ii) adaptation (in ● For a given project, the 60 800 adaptation time is the 50 ● ● time between the first ● 600 40 reaction and the last ● reaction to the API 30 400 ● change ● ● 20 ● 200 10 0 0 most projects are quick to react and adapt; ⤷ but not all are On the scale of the ecosystem, some ripple ⤷ effects lasted for years.
  • 32. RQ4: Do all projects adapt to API changes? 70 66% 53 40% 35 20% 18 0 All Active No counter- projects reactions
  • 33. RQ4: Do all projects adapt to API changes? 70 66% 53 40% 35 20% 18 0 All Active No counter- projects reactions Why so few reacting projects?
  • 34. RQ4: Do all projects adapt to API changes? 70 66% 53 40% 35 20% 18 0 All Active No counter- projects reactions Why so few Dead or stagnant reacting projects? projects?
  • 35. RQ4: Do all projects adapt to API changes? 70 66% 53 40% 35 20% 18 0 All Active No counter- projects reactions Why so few reacting projects?
  • 36. RQ4: Do all projects adapt to API changes? 70 66% 53 40% 35 20% 18 0 All Active No counter- projects reactions Why so few Forks in the reacting projects? ecosystem?
  • 37. RQ4: Do all projects adapt to API changes? 70 66% 53 40% 35 20% 18 0 All Active No counter- projects reactions Why so few reacting projects?
  • 38. RQ4: Do all projects adapt to API changes? 70 66% 53 40% 35 20% 18 0 All Active No counter- projects reactions
  • 39. RQ4: Do all projects adapt to API changes? 70 66% 53 40% 35 20% 18 0 All Active No counter- projects reactions common reasons for not reacting are stagnancy, ⤷ forks, but also freezed dependencies and unawareness.
  • 40. RQ5: Consistency of adaptations addEntity: was replaced by: add: addModel: addObject: addAll: addSibling: 0 20 40 60 80
  • 41. RQ5: Consistency of adaptations Frequency of most addEntity: was replaced by: frequent replacement Probability of most likely replacement 100 add: addModel: 80 60 addObject: 40 addAll: 20 addSibling: 0 0 20 40 60 80
  • 42. RQ5: Consistency of adaptations Frequency of most addEntity: was replaced by: frequent replacement Probability of most likely replacement 100 add: addModel: 80 60 addObject: 40 addAll: 20 addSibling: 0 0 20 40 60 80 ⤷ Many API deprecation have similar reactions
  • 43. RQ5: Consistency of adaptations Frequency of most addEntity: was replaced by: frequent replacement Probability of most likely replacement 100 add: addModel: 80 60 addObject: 40 addAll: 20 addSibling: 0 0 20 40 60 80 ⤷ Many API deprecation have similar reactions ⤷ 16% of deprecations had a systematic replacement
  • 44. RQ6: Were deprecation messages useful? foo: x self deprecated: ‘use method bar instead’
  • 45. RQ6: Were deprecation messages useful? foo: x self deprecated: ‘use method bar instead’ We categorized deprecation messages according to whether developer followed the recommendation.
  • 46. RQ6: Were deprecation messages useful? foo: x self deprecated: ‘use method bar instead’ We categorized deprecation messages according to whether developer followed the recommendation. Mostly followed: if “X” most people did X Somewhat followed: most people did Y, but others did X Not followed: most people did Y, Z ... Missing: no recommendation, vague recommendation.
  • 47. RQ6: Were deprecation messages useful? foo: x self deprecated: ‘use method bar instead’ We categorized deprecation messages according to whether developer followed the recommendation. Mostly followed: if “X” most people did X Somewhat followed: most people did Y, but others did X Not followed: most people did Y, Z ... Missing: no recommendation, vague recommendation. self deprecated: ‘removed functionality’ self deprecated: ‘use canvas API’ self deprecated: ‘ugly method, do not call it!’
  • 48. RQ6: Were deprecation messages useful? 50 46.8% 40.4% 38 25 13 7.4% 5.3% 0 Recommendation ... Mostly Somewhat Not Missing followed followed followed
  • 49. RQ6: Were deprecation messages useful? 50 46.8% 40.4% 38 25 13 7.4% 5.3% 0 Recommendation ... Mostly Somewhat Not Missing followed followed followed ⤷ half of deprecation messages are missing or not useful
  • 50. Threats to validity Code duplication, name clashes introduce noise We only consider explicit deprecation so far Partially manual analysis Single case study with peculiarities: – Dynamically typed language (Smalltalk) – Fork in the community
  • 51. Related work Empirical studies: – Studies of API changes and client evolution [Dig & Johnson, 2005] – Studies of ripple effects at the system level [Yau et al., 1978; Black, 2001] Adapting to API changes: – Replaying refactorings [Henkel & Diwan 2004; Ekman & Asklund 2005; Dig et al. 2007] – Detecting systematic changes [Kim and Notkin 2009] – Adapting to evolving frameworks [Dagenais & Robillard 2008; Shäfer et al. 2008] – Filtering irrelevant changes [Holmes and Walker, 2010]
  • 52. Conclusions and implications System History Ecosystem Version 1 Version 2 Version n Version i History History ... ... History ... System Version History Added Artifacts ... Removed Provided Required
  • 53. Conclusions and implications System History Ecosystem Version 1 Version 2 Version n Version i History History ... ... History ... System Version History Added Artifacts ... Removed Provided Required ⤷ The quality of deprecation guidelines should be improved
  • 54. Conclusions and implications System History Ecosystem Version 1 Version 2 Version n Version i History History ... ... History ... System Version History Added Artifacts ... Removed Provided Required ⤷ The quality of deprecation guidelines should be improved ⤷ Some API deprecations have a large impact
  • 55. Conclusions and implications System History Ecosystem Version 1 Version 2 Version n Version i History History ... ... History ... System Version History Added Artifacts ... Removed Provided Required ⤷ The quality of deprecation guidelines should be improved ⤷ Some API deprecations have a large impact ⤷ Developers do not know how their software is used
  • 56. Conclusions and implications System History Ecosystem Version 1 Version 2 Version n Version i History History ... ... History ... System Version History Added Artifacts ... Removed Provided Required ⤷ The quality of deprecation guidelines should be improved ⤷ Some API deprecations have a large impact ⤷ Developers do not know how their software is used ⤷ Reactions to API changes can be partially automated
  • 57. Conclusions and implications System History Ecosystem Version 1 Version 2 Version n Version i History History ... ... History ... System Version History Added Artifacts ... Removed Provided Required ⤷ The quality of deprecation guidelines should be improved ⤷ Some API deprecations have a large impact ⤷ Developers do not know how their software is used ⤷ Reactions to API changes can be partially automated ⤷ Tool support is needed to help with API changes
  • 58. Conclusions and implications System History Ecosystem Version 1 Version 2 Version n Version i History History ... ... History ... System Version History Added Artifacts ... Removed Provided Required ⤷ The quality of deprecation guidelines should be improved ⤷ Some API deprecations have a large impact ⤷ Developers do not know how their software is used ⤷ Reactions to API changes can be partially automated ⤷ Tool support is needed to help with API changes
  • 59. THE END Read the details in the paper