Why Do We Break APIs? First Answers from Developers
-
Upload
laerte-xavier -
Category
Software
-
view
105 -
download
0
Transcript of Why Do We Break APIs? First Answers from Developers
![Page 1: Why Do We Break APIs? First Answers from Developers](https://reader031.fdocuments.us/reader031/viewer/2022021502/58eda6711a28abea768b45b7/html5/thumbnails/1.jpg)
Why Do We Break APIs?First Answers from Developers
Laerte Xavier, André Hora, Marco Tulio ValenteFederal University of Minas Gerais, Brazil
SANER 2017 ERA Track
![Page 2: Why Do We Break APIs? First Answers from Developers](https://reader031.fdocuments.us/reader031/viewer/2022021502/58eda6711a28abea768b45b7/html5/thumbnails/2.jpg)
2
Breaking API contracts is a common practice!
![Page 3: Why Do We Break APIs? First Answers from Developers](https://reader031.fdocuments.us/reader031/viewer/2022021502/58eda6711a28abea768b45b7/html5/thumbnails/3.jpg)
API changes break compatiblity
28%Historical and Impact Analysis of API Breaking Changes:
A Large-Scale Study, SANER, 20173
![Page 4: Why Do We Break APIs? First Answers from Developers](https://reader031.fdocuments.us/reader031/viewer/2022021502/58eda6711a28abea768b45b7/html5/thumbnails/4.jpg)
4
The rate of breaking changes increases over time!
Historical and Impact Analysis of API Breaking Changes: A Large-Scale Study, SANER, 2017
![Page 5: Why Do We Break APIs? First Answers from Developers](https://reader031.fdocuments.us/reader031/viewer/2022021502/58eda6711a28abea768b45b7/html5/thumbnails/5.jpg)
5
What specific reasons motivate API breaking changes?
![Page 6: Why Do We Break APIs? First Answers from Developers](https://reader031.fdocuments.us/reader031/viewer/2022021502/58eda6711a28abea768b45b7/html5/thumbnails/6.jpg)
6
RQ1: Why do developers break API contracts?
RQ2: Are developers aware of the impact of breaking changes on client applications?
Research Questions
![Page 7: Why Do We Break APIs? First Answers from Developers](https://reader031.fdocuments.us/reader031/viewer/2022021502/58eda6711a28abea768b45b7/html5/thumbnails/7.jpg)
7
TOP-317GITHUB JAVA LIBRARIES
![Page 8: Why Do We Break APIs? First Answers from Developers](https://reader031.fdocuments.us/reader031/viewer/2022021502/58eda6711a28abea768b45b7/html5/thumbnails/8.jpg)
8
TOP-317GITHUB JAVA LIBRARIES
90LIBRARIES WITH MORE
THAN 50 BREAKING CHANGES
![Page 9: Why Do We Break APIs? First Answers from Developers](https://reader031.fdocuments.us/reader031/viewer/2022021502/58eda6711a28abea768b45b7/html5/thumbnails/9.jpg)
9
TOP-31790
49EMAILS FROM MAJOR
CONTRIBUTORS
GITHUB JAVA LIBRARIES
LIBRARIES WITH MORE THAN 50 BREAKING
CHANGES
![Page 10: Why Do We Break APIs? First Answers from Developers](https://reader031.fdocuments.us/reader031/viewer/2022021502/58eda6711a28abea768b45b7/html5/thumbnails/10.jpg)
49EMAILS
SENT 10
![Page 11: Why Do We Break APIs? First Answers from Developers](https://reader031.fdocuments.us/reader031/viewer/2022021502/58eda6711a28abea768b45b7/html5/thumbnails/11.jpg)
49EMAILS
SENT
14ANSWERSRECEIVED 11
![Page 12: Why Do We Break APIs? First Answers from Developers](https://reader031.fdocuments.us/reader031/viewer/2022021502/58eda6711a28abea768b45b7/html5/thumbnails/12.jpg)
49EMAILS
SENT
14ANSWERSRECEIVED
28%RESPONSE
RATE 12
![Page 13: Why Do We Break APIs? First Answers from Developers](https://reader031.fdocuments.us/reader031/viewer/2022021502/58eda6711a28abea768b45b7/html5/thumbnails/13.jpg)
13
49EMAILS
SENT
14ANSWERSRECEIVED
7EMAILS
SELECTED RESPONSE
RATE
28%
![Page 14: Why Do We Break APIs? First Answers from Developers](https://reader031.fdocuments.us/reader031/viewer/2022021502/58eda6711a28abea768b45b7/html5/thumbnails/14.jpg)
14
![Page 15: Why Do We Break APIs? First Answers from Developers](https://reader031.fdocuments.us/reader031/viewer/2022021502/58eda6711a28abea768b45b7/html5/thumbnails/15.jpg)
15
![Page 16: Why Do We Break APIs? First Answers from Developers](https://reader031.fdocuments.us/reader031/viewer/2022021502/58eda6711a28abea768b45b7/html5/thumbnails/16.jpg)
16
![Page 17: Why Do We Break APIs? First Answers from Developers](https://reader031.fdocuments.us/reader031/viewer/2022021502/58eda6711a28abea768b45b7/html5/thumbnails/17.jpg)
17
![Page 18: Why Do We Break APIs? First Answers from Developers](https://reader031.fdocuments.us/reader031/viewer/2022021502/58eda6711a28abea768b45b7/html5/thumbnails/18.jpg)
18
![Page 19: Why Do We Break APIs? First Answers from Developers](https://reader031.fdocuments.us/reader031/viewer/2022021502/58eda6711a28abea768b45b7/html5/thumbnails/19.jpg)
19
RQ1: Why do developers break API contracts?
RQ2: Are developers aware of the impact of breaking changes on client applications?
Research Questions
![Page 20: Why Do We Break APIs? First Answers from Developers](https://reader031.fdocuments.us/reader031/viewer/2022021502/58eda6711a28abea768b45b7/html5/thumbnails/20.jpg)
20
Five main reasons
![Page 21: Why Do We Break APIs? First Answers from Developers](https://reader031.fdocuments.us/reader031/viewer/2022021502/58eda6711a28abea768b45b7/html5/thumbnails/21.jpg)
21
“The change leads to better and more developer-friendly code (for example, to more fluent code).” [D2]
![Page 22: Why Do We Break APIs? First Answers from Developers](https://reader031.fdocuments.us/reader031/viewer/2022021502/58eda6711a28abea768b45b7/html5/thumbnails/22.jpg)
22
“The classes/methods/fields are not removed all, they are just refactored to a better package signature.” [D6]
![Page 23: Why Do We Break APIs? First Answers from Developers](https://reader031.fdocuments.us/reader031/viewer/2022021502/58eda6711a28abea768b45b7/html5/thumbnails/23.jpg)
23
“Bugfix. For example some of the items shouldn’t be accessible and were made private.” [D3]
![Page 24: Why Do We Break APIs? First Answers from Developers](https://reader031.fdocuments.us/reader031/viewer/2022021502/58eda6711a28abea768b45b7/html5/thumbnails/24.jpg)
24
“We switched the assertion library on which the library was based.” [D4]
![Page 25: Why Do We Break APIs? First Answers from Developers](https://reader031.fdocuments.us/reader031/viewer/2022021502/58eda6711a28abea768b45b7/html5/thumbnails/25.jpg)
25
“It’s a deliberate policy. bitcoinj has never done a 1.0 release that would have posted API stability.” [D7]
![Page 26: Why Do We Break APIs? First Answers from Developers](https://reader031.fdocuments.us/reader031/viewer/2022021502/58eda6711a28abea768b45b7/html5/thumbnails/26.jpg)
26
RQ1: Why do developers break API contracts?
RQ2: Are developers aware of the impact of breaking changes on client applications?
Research Questions
![Page 27: Why Do We Break APIs? First Answers from Developers](https://reader031.fdocuments.us/reader031/viewer/2022021502/58eda6711a28abea768b45b7/html5/thumbnails/27.jpg)
27
SEVENANSWERS
![Page 28: Why Do We Break APIs? First Answers from Developers](https://reader031.fdocuments.us/reader031/viewer/2022021502/58eda6711a28abea768b45b7/html5/thumbnails/28.jpg)
28
FIVEAWARE
SEVENANSWERS
![Page 29: Why Do We Break APIs? First Answers from Developers](https://reader031.fdocuments.us/reader031/viewer/2022021502/58eda6711a28abea768b45b7/html5/thumbnails/29.jpg)
29
FIVEAWARE
TWOUNCLEAR
SEVENANSWERS
![Page 30: Why Do We Break APIs? First Answers from Developers](https://reader031.fdocuments.us/reader031/viewer/2022021502/58eda6711a28abea768b45b7/html5/thumbnails/30.jpg)
30
FIVEAWARE
TWOUNCLEAR
SEVENANSWERS
“Once one client asked to use @Deprecated on old methods, but we simply
don’t have enough resources to maintain all deprecated
methods.” [D2]
![Page 31: Why Do We Break APIs? First Answers from Developers](https://reader031.fdocuments.us/reader031/viewer/2022021502/58eda6711a28abea768b45b7/html5/thumbnails/31.jpg)
31
FIVEAWARE
TWOUNCLEAR
SEVENANSWERS
“Yes. But we are not Spring yet. [...] Being a
small-to-middle library has it’s benefits.” [D2]
![Page 32: Why Do We Break APIs? First Answers from Developers](https://reader031.fdocuments.us/reader031/viewer/2022021502/58eda6711a28abea768b45b7/html5/thumbnails/32.jpg)
32
Five main reasons why developers break APIs
![Page 33: Why Do We Break APIs? First Answers from Developers](https://reader031.fdocuments.us/reader031/viewer/2022021502/58eda6711a28abea768b45b7/html5/thumbnails/33.jpg)
33
Five main reasons why developers break APIs
Most developers are aware of the impact
![Page 34: Why Do We Break APIs? First Answers from Developers](https://reader031.fdocuments.us/reader031/viewer/2022021502/58eda6711a28abea768b45b7/html5/thumbnails/34.jpg)
34
Five main reasons why developers break APIs
Most developers are aware of the impact
In some cases, they adopt strategies to mitigate
![Page 35: Why Do We Break APIs? First Answers from Developers](https://reader031.fdocuments.us/reader031/viewer/2022021502/58eda6711a28abea768b45b7/html5/thumbnails/35.jpg)
35
Five main reasons why developers break APIs
Most developers are aware of the impact
In some cases, they adopt strategies to mitigate
New study contacting developers right after a commit with a breaking change
![Page 36: Why Do We Break APIs? First Answers from Developers](https://reader031.fdocuments.us/reader031/viewer/2022021502/58eda6711a28abea768b45b7/html5/thumbnails/36.jpg)
Why do you break APIs?
36
![Page 37: Why Do We Break APIs? First Answers from Developers](https://reader031.fdocuments.us/reader031/viewer/2022021502/58eda6711a28abea768b45b7/html5/thumbnails/37.jpg)
Why do you break APIs?
37
Are you aware about the impact?
![Page 38: Why Do We Break APIs? First Answers from Developers](https://reader031.fdocuments.us/reader031/viewer/2022021502/58eda6711a28abea768b45b7/html5/thumbnails/38.jpg)
Why Do We Break APIs?First Answers from Developers
Laerte Xavier, André Hora, Marco Tulio ValenteFederal University of Minas Gerais, Brazil
SANER 2017 ERA Track