Software libraries are widely used by both industrial and open source client projects. Ideally, a client user of a library should adopt the latest version that the library project releases. However, sometimes the latest version is not better than a previous version. This is because the latest version may include additional developer effort to test and integrate all changed features. In this study, our main goal is to better understand the relationship between adoption of library versions and its release cycle. Specifically, we conducted an empirical study of release cycles for 23 libraries and how they were adopted by 415 Apache Software Foundation (ASF) client projects. Our findings show that software projects are quicker to update earlier rapid-release libraries compared to library projects with a longer release cycle. Moreover, results suggest that software projects are more likely to adopt the latest version of a rapid-release library compared to libraries with a longer release cycles.
Call Girls Service Nagpur Tanvi Call 7001035870 Meet With Nagpur Escorts
Understanding When to Adapt a Library: A Case Study on ASF Projects
1. Understanding When to Adapt a Library:
A Case Study on ASF Projects
Akinori Ihara
Paula Gaikovina
Kula
Kenichi MatsumotoDaiki Fujibayashi Hirohiko Suwa
http://akinori-ihara.jpn.org/
akinori-i@is.naist.jp
2. 2
Many libraries in Github
https://psap.library.illinois.edu/advanced-help/av-film
4. 4
Which release version is
better for us?
2002 200820062004
http://www.365lessthings.com/the-answer-is-invariably-in-the-question/
5. 5
The newest version will have
a good function … but …
Beta version
New functions
…
…
New bugs
Stable
Reliable
OLD NEW
https://ameblo.jp/mzspeed-zeus/entry-12120621233.html
http://www.autofacil.es/toyota/2016/09/14/toyota-fcv-plus-nuevo-
coche-pila-combustible-salon-paris/34416.html
http://info.methodtestprep.com/blog/old-sat-to-new-sat-to-act-
score-converter
6. 6
The latest version is not always
better than previous version
A rapid-release software
often delay bug-fixes
[Costa et al., ICSME2015]
http://www.medicalpracticeinsider.com/best-practices/
compliance/technology/patient-care/professional-development/
cms-reminds-eps-complete
7. 7
Not all projects use the latest
version?
Numberofclients
Ver.1.2.14
Ver.1.2.16
Ver.1.2.17Log4j
Some client users don’t adapt new version!
Time
Library usage by clients over time
8. 8Time
Not all projects use the latest
version?
Numberofclients
Ver.1.2.14
Ver.1.2.16
Ver.1.2.17Log4j
Some client users don’t move to new version
soon after the release!
Library usage by clients over time
Ver.1.2.17
released
9. 9
Client users may wait that
the library become stable.
Long adapting time
Some libraries are not adapted
soon after the release.
[Raula et al., SANER’17]
Numberofclientusers
Time
Trend
https://movingtowardsthelight.com/2016/09/20/waiting/
10. 10
Client users may wait that
the library become stable.
Adapting time
Some libraries are not adapted
soon after the release.
[Raula et al., SANER’17]
Numberofclientusers
Time
TREND
Which version and when do
client users adapt a library?
11. 11
RQ1:
When do client users
adapt a library?
RQ2:
Do client users select
the latest version?
Add-RQ:
Was selecting the
l a t e s t v e r s i o n
successful?
Latest?
LIBRARY
Latest?Success?
13. 13
Each box plot presents the distribution of
the period between releases
Release cycle of 23 libraries
months ~ years
0
500
1000
1500
2000
com
m
ons−cli
servlet−api
com
m
ons−logging
com
m
ons−collections
com
m
ons−codec
com
m
ons−io
m
aileasym
ock
com
m
ons−lang
junit
xercesIm
plvelocity
ant
log4j
guava
com
m
ons−httpclientslf4j−api
slf4j−log4j12
jcl−over−slf4j
m
ockito−all
jackson−core−asl
jackson−m
apper−asl
jetty−server
releasecycle[days]
0
500
1000
1500
2000
com
m
ons−cli
servlet−api
com
m
ons−logging
com
m
ons−collections
com
m
ons−codec
com
m
ons−io
m
aileasym
ock
com
m
ons−lang
junit
xercesIm
plvelocity
ant
log4j
guava
com
m
ons−httpclientslf4j−api
slf4j−log4j12
jcl−over−slf4j
m
ockito−all
jackson−core−asl
jackson−m
apper−asl
jetty−server
releasecycle[days]
14. 14
Release cycle of 23 libraries
months ~ years
0
500
1000
1500
2000
com
m
ons−cli
servlet−api
com
m
ons−logging
com
m
ons−collections
com
m
ons−codec
com
m
ons−io
m
aileasym
ock
com
m
ons−lang
junit
xercesIm
plvelocity
ant
log4j
guava
com
m
ons−httpclientslf4j−api
slf4j−log4j12
jcl−over−slf4j
m
ockito−all
jackson−core−asl
jackson−m
apper−asl
jetty−server
releasecycle[days]
0
500
1000
1500
2000
com
m
ons−cli
servlet−api
com
m
ons−logging
com
m
ons−collections
com
m
ons−codec
com
m
ons−io
m
aileasym
ock
com
m
ons−lang
junit
xercesIm
plvelocity
ant
log4j
guava
com
m
ons−httpclientslf4j−api
slf4j−log4j12
jcl−over−slf4j
m
ockito−all
jackson−core−asl
jackson−m
apper−asl
jetty−server
releasecycle[days]
Observation1: Trendy libraries are
not released in one year
Late-released
libraries
Quick-release
libraries
15. 15
Release cycle of 23 libraries
months ~ years
0
500
1000
1500
2000
com
m
ons−cli
servlet−api
com
m
ons−logging
com
m
ons−collections
com
m
ons−codec
com
m
ons−io
m
aileasym
ock
com
m
ons−lang
junit
xercesIm
plvelocity
ant
log4j
guava
com
m
ons−httpclientslf4j−api
slf4j−log4j12
jcl−over−slf4j
m
ockito−all
jackson−core−asl
jackson−m
apper−asl
jetty−server
releasecycle[days]
0
500
1000
1500
2000
com
m
ons−cli
servlet−api
com
m
ons−logging
com
m
ons−collections
com
m
ons−codec
com
m
ons−io
m
aileasym
ock
com
m
ons−lang
junit
xercesIm
plvelocity
ant
log4j
guava
com
m
ons−httpclientslf4j−api
slf4j−log4j12
jcl−over−slf4j
m
ockito−all
jackson−core−asl
jackson−m
apper−asl
jetty−server
releasecycle[days]
Observation 2:
Mature projects release >= 1year
Young projects often release <= 3 months
Quick-release
libraries
Late-released
libraries
long-history projects
(more than 10 years)
short-history projects
(less than 10 years)
16. 16
RQ1:
When do client users
adapt a library? LIBRARY
RQ2:
Do client users select
the latest version? Latest?
Add-RQ:
Was selecting the
l a t e s t v e r s i o n
successful?
Latest?Success?
17. 17
RQ1:
When do client users
adapt a library? LIBRARY
Adapting time
long-release library
quick-release library
Client user
18. 18
RQ1:
When do client users
adapt a library? LIBRARY
0
1000
2000
3000
4000
5000
com
m
ons−cli
servlet−api
com
m
ons−logging
com
m
ons−collections
com
m
ons−codec
com
m
ons−io
m
aileasym
ock
com
m
ons−lang
junit
xercesIm
plvelocity
ant
log4j
guava
com
m
ons−httpclientslf4j−api
slf4j−log4j12
jcl−over−slf4j
m
ockito−all
jackson−core−asl
jackson−m
apper−asl
jetty−server
adoptedtime[days]
Each box plot presents the distribution
of the adapted time
Quick-release
libraries
Late-release
libraries
Observation 3:
Adopted the quick-release libraries soon after the release
NOT adopted the long-release libraries as quickly.
19. 19
RQ2:
Do client users select
the latest version? Latest?
RQ1:
When do client users
adapt a library? LIBRARY
Client users tend
to adapt rapid-
release library
quickly.
Add-RQ:
Was selecting the
l a t e s t v e r s i o n
successful?
Latest?Success?
24. 24
RQ2:
Do client users select
the latest version? Latest?
Client users are
l e s s l i k e l y t o
adopt the latest
library versions.
RQ1:
When do client users
adapt a library? LIBRARY
Client users are
m o r e l i k e l y t o
adapt the quick-
release libraries.
Add-RQ:
Was selecting the
l a t e s t v e r s i o n
successful?
Latest?Success?
26. 26
Latest?
Add-RQ:
Was selecting the
l a t e s t v e r s i o n
successful?
Latest?Success?
Automatic clustering for grouping of libraries
using Scott-Knott approach based on their release cycles
Latest?
0
500
1000
1500
2000
com
m
ons−cli
servlet−api
com
m
ons−logging
com
m
ons−collections
com
m
ons−codec
com
m
ons−io
m
aileasym
ock
com
m
ons−lang
junit
xercesIm
plvelocity
ant
log4j
guava
com
m
ons−httpclientslf4j−api
slf4j−log4j12
jcl−over−slf4j
m
ockito−all
jackson−core−asl
jackson−m
apper−asl
jetty−server
releasecycle[days]
C2C1 C3 C4 C5 C6
Quick-release
libraries
Late-release
libraries
28. 28
Add-RQ:
Was selecting the
l a t e s t v e r s i o n
successful?
Latest?Success?
C l i e n t u s e r s
s e l e c t i n g t h e
latest version are
less likely to be
successful.
RQ2:
Do client users select
the latest version? Latest?
RQ1:
When do client users
adapt a library? LIBRARY
Client users are
l e s s l i k e l y t o
adopt the latest
library versions.
Client users are
m o r e l i k e l y t o
adapt the quick-
release libraries.
29. 29
Key suggestion
OLD NEW
We should be careful to adapt the latest version!
Especially, if we use a library with long-release.
31. 31Time
Not all projects use the latest
version?
Numberofclients
Ver.1.2.14
Ver.1.2.16
Ver.1.2.17Log4j
Some client users don’t move to new version
soon after the release!
Library usage by clients over time
Ver.1.2.17
released
35. 35
Add-RQ:
Was selecting the
l a t e s t v e r s i o n
successful?
Latest?Success?
C l i e n t u s e r s
s e l e c t i n g t h e
latest version are
less likely to be
successful.
RQ2:
Do client users select
the latest version? Latest?
RQ1:
When do client users
adapt a library? LIBRARY
Client users are
l e s s l i k e l y t o
adopt the latest
library versions.
Client users are
m o r e l i k e l y t o
adapt the quick-
release libraries.