<!DOCTYPE article PUBLIC "-//NLM//DTD JATS (Z39.96) Journal Archiving and Interchange DTD v1.0 20120330//EN" "JATS-archivearticle1.dtd">
<article xmlns:xlink="http://www.w3.org/1999/xlink">
  <front>
    <journal-meta />
    <article-meta>
      <title-group>
        <article-title>Breaking the borders: an investigation of cross-ecosystem software packages</article-title>
      </title-group>
      <contrib-group>
        <contrib contrib-type="author">
          <string-name>Eleni Constantinou</string-name>
          <email>eleni.constantinou@umons.ac.be</email>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Alexandre Decan</string-name>
          <email>alexandre.decan@umons.ac.be</email>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Tom Mens</string-name>
          <email>tom.mens@umons.ac.be</email>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <aff id="aff0">
          <label>0</label>
          <institution>University of Mons</institution>
          ,
          <addr-line>Mons</addr-line>
          ,
          <country country="BE">Belgium</country>
        </aff>
      </contrib-group>
      <abstract>
        <p>-Software ecosystems are collections of projects that are developed and evolve together in the same environment. Existing literature investigates software ecosystems as isolated entities whose boundaries do not overlap and assumes they are self-contained. However, a number of software projects are distributed in more than one ecosystem. As different aspects, e.g., success, security vulnerabilities, bugs, etc., of such crossecosystem packages can affect multiple ecosystems, we investigate the presence and characteristics of these cross-ecosystem packages in 12 large software distributions. We found a small number of packages distributed in multiple packaging ecosystems and that such packages are usually distributed in two ecosystems. These packages tend to better support with new releases certain ecosystems, while their evolution can impact a multitude of packages in other ecosystems. Finally, such packages appear to be popular with large developer communities. Index Terms-software ecosystem, software distribution, GitHub, package manager, dependency network, empirical software engineering</p>
      </abstract>
    </article-meta>
  </front>
  <body>
    <sec id="sec-1">
      <title>I. INTRODUCTION</title>
      <p>
        Software ecosystems are formed by projects that are
developed and evolve together in the same environment [
        <xref ref-type="bibr" rid="ref1">1</xref>
        ].
Examples of software ecosystems include package
distributions for programming languages, e.g., CRAN for R, npm
for JavaScript. Over the last decade, the research community
has been investigating the evolution of software distributions
by considering both social (e.g., developer retention and
turnover) [
        <xref ref-type="bibr" rid="ref2">2</xref>
        ]–[
        <xref ref-type="bibr" rid="ref4">4</xref>
        ] and/or technical aspects (e.g., the effect of
social changes on project evolution, dependencies and their
evolution, technical lag, sustainability) [
        <xref ref-type="bibr" rid="ref5">5</xref>
        ]–[
        <xref ref-type="bibr" rid="ref13">13</xref>
        ].
      </p>
      <p>The intensive research efforts to study ecosystem evolution
aim to study and address the implications that arise from
problems during the evolution of packages, and more
concretely how these issues propagate to the entire ecosystem due
to dependencies among packages. However, there are cases
where packages are distributed in more than one ecosystem.
For example, the lodash package1, a utility library delivering
modularity, consistency and performance, is distributed in
npm2, Clojars3, Maven4 and NuGet5. So, if lodash faces
any health problems or risks of discontinuation, then all four
1https://github.com/lodash/lodash
2https://www.npmjs.com/package/lodash
3https://clojars.org/cljsjs/lodash
4https://mvnrepository.com/artifact/org.webjars.npm/lodash
5https://www.nuget.org/packages/lodash/
ecosystems will be affected. The impact of such problems may
differ across ecosystems depending on the packages depending
on the package, either directly or transitively, within each
specific ecosystem. It is therefore important to go beyond
the boundaries of individual ecosystems and investigate the
presence, characteristics and evolution of packages that span
across multiple ecosystems.</p>
      <p>This paper focuses on the presence and characteristics
of cross-ecosystem packages. To this end, we address the
following research questions:</p>
    </sec>
    <sec id="sec-2">
      <title>RQ1 How prevalent are cross-ecosystem packages and in</title>
      <p>how many ecosystems do they reside?
RQ2 Do cross-ecosystem packages release with the same
frequency in each ecosystem?
RQ3 To what extent are cross-ecosystem packages used
by other packages in each ecosystem dependency
network?
RQ4 Do cross-ecosystem packages have different
characteristics than other packages in the ecosystem?</p>
      <p>By answering these questions, we aim to get a better
understanding of the attributes and differences, if any, of
cross-ecosystem packages compared to other packages in each
ecosystem.</p>
    </sec>
    <sec id="sec-3">
      <title>II. DATASET AND METHODOLOGY</title>
      <p>
        Our dataset relies on the 2018-03-13 dump of the open
source discovery service libraries.io [
        <xref ref-type="bibr" rid="ref14">14</xref>
        ]. It contains historical
data of packages and their characteristics for 36 software
ecosystems. We excluded software ecosystems that were too
domain-specific, targeting specific software frameworks (e.g.,
Meteor), software components (e.g., WordPress and Atom),
as well as those that host a subset of packages available
through another already considered ecosystem (e.g., Bower
manages a subset of npm), to avoid providing misleading
cross-ecosystem analyses. We selected 12 ecosystems, namely
npm, Pypi, Maven, NuGet, Cargo, CocoaPods, Packagist,
Rubygems, Clojars, CRAN, Hackage and CPAN totalizing
1,556,300 packages.
      </p>
      <p>For each package in the dataset, we extracted its package
information (name, package manager, etc.), versions and
dependencies. We also extracted the information related to the
associated git repository, such as number of stars, forks, issues,
etc. Since our analyses relies on git characteristics
(crossecosystem package identification and characteristics of
crossecosystem versus the other packages in each ecosystem), we
excluded packages without a git repository.</p>
      <p>We identified cross-ecosystem packages by looking at their
associated git repository: if (at least) two packages on two
distinct ecosystems share the same git repository, then they
are labelled as cross-ecosystem packages and form an x-set.
This approach is more reliable than looking for packages with
identical names, which would risk missing cross-ecosystem
packages due to different naming conventions for the different
ecosystems (e.g., name-py, name-js) and could lead to false
positives (e.g., the development of package json on Cargo is
unrelated to the development of json on npm).</p>
    </sec>
    <sec id="sec-4">
      <title>III. RESULTS</title>
      <p>RQ1 How prevalent are cross-ecosystem packages and in how
many ecosystems do they reside?</p>
      <p>The first research question aims to gain an initial
understanding of the prevalence and spread of cross-ecosystem
packages. First, we measure the number of distinct packages
corresponding to the x-sets that appear in multiple ecosystems.</p>
      <p>In the case that multiple packages in one ecosystem participate
in the same x-set, we include all such packages in our analyses,
thus overestimating the number of cross-ecosystem packages.</p>
      <p>For example, if one x-set consists of 5 packages in npm and 3
packages in Maven, all pointing to the same repository, then
all 8 packages are included in our analysis.</p>
      <p>Overall, we found 15,389 packages that are identified as
cross-ecosystem packages. They represent a total of 2,928
xsets. Per ecosystem, the number of cross-ecosystem packages
ranges from 3 in CPAN (0.001% of the CPAN packages) to
9,313 in NPM (1.33% of the NPM packages). These numbers
are reported in Table I. In all cases, these cross-ecosystem
packages represent a very small fraction of all packages that
are distributed in each ecosystem.</p>
      <p>For each x-set, we identified in how many and which
ecosystems its cross-ecosystem packages are distributed.
Figure 1 shows the number of x-sets whose packages are
distributed on 2 to 6 ecosystems. We observe that most x-sets
spread over only 2 ecosystems. However, we found 276 x-sets
that spread over 3 to 5 ecosystems. We also found one x-set,
containing the FontAwesome6 package, that spreads over 6
ecosystems.</p>
      <p>6https://github.com/FortAwesome/Font-Awesome
2000
s
t
e
-xs1500
f
o
#1000
500
0</p>
      <p>The second research question focuses on (cross-ecosystem)
package release frequency. For each x-set X, we identified in
which ecosystem e1 package p 2 X has the highest number n
of releases. Then, for each other ecosystem e2, we computed
the ratio between the number of releases that p0 2 X has
in e2 and n. We call this ratio the support for X in e2.</p>
      <p>Formally, assuming #releasese(X) corresponds to the number
of releases that package p 2 X has in ecosystem e 2 E,
supporte2 (X) =</p>
      <p>#releasese2 (X)
maxe12E #releasese1 (X)</p>
      <p>
        With this definition, at least one ecosystem has a support
equal to 1, while for the remaining ecosystems in E support
ranges between [
        <xref ref-type="bibr" rid="ref1">0, 1</xref>
        ] (0 corresponding to an x-set whose
packages are not distributed in the corresponding ecosystem).
      </p>
      <p>For each x-set X, and each considered ecosystem e that
distributes a package in X, we computed supporte(X).</p>
      <p>Figure 2 shows the distribution of supporte(X) by means
of violin plots. We observe different distributions, depending
on the ecosystem. For instance, some ecosystems such as
npm, Packagist, PyPI and Rubygems mostly have support
close to the maximal value, where other ecosystems such as</p>
      <p>Clojars and Maven mostly have support close to the minimal
1.0
value. Finally, some ecosystems stand in between, e.g., CRAN,
CocoaPods, Hackage or NuGet.</p>
      <p>These results show that maintainers tend to better support
with new releases certain ecosystems, while providing less
support for others. Interestingly, we found 109 x-sets (out of
2,928) that have maximal support (i.e., support = 1) for all
the ecosystems their packages are distributed in.</p>
      <p>RQ3 To what extent are cross-ecosystem packages used by
other packages in each ecosystem dependency network?</p>
      <p>
        One of the main reasons why packages depend on others is
to enable software reuse. Packaging ecosystems make it easier
for developers to reuse code from other packages through
dependencies. On the other hand, dependencies increase the
risk of having important security or maintainability problems
and failures [
        <xref ref-type="bibr" rid="ref6">6</xref>
        ]. As such issues in cross-ecosystem packages
could affect multiple ecosystems simultaneously, we
investigate the extent that cross-ecosystem packages are used by
other packages in each ecosystem.
      </p>
      <p>We limited our analysis to 6 ecosystems (npm, NuGet,
Cargo, Packagist, Rubygems and CRAN), because the
dependency information for these ecosystems is known to be
complete and accurate, while it is not necessarily the case for
the other ecosystems. The total number of cross-ecosystem
packages in these 6 ecosystems is 11,608, corresponding to
2,773 x-sets. For each package in these x-sets, we count the
number of direct and transitive dependents (i.e., the number
of other packages having a direct or transitive dependency on
them) in each ecosystem the package is distributed. This
number somehow represents the “potential impact” of a package.</p>
      <p>As cross-ecosystem packages could affect dependent packages
in more than one ecosystem, we compared its “global potential
impact” (total number of dependents across all ecosystems)
and its “maximal local impact” (maximum number of
dependents within a single ecosystem).</p>
      <p>Figures 3a and 3b show the reversed cumulative proportion
of x-sets in function of their impact ratio for direct (above)
and transitive (below) dependents. This ratio represents the
additional impact of a package due to its presence in more than
one ecosystem. The y-axis indicates the percentage of x-sets
having at least the corresponding ratio value. We observe from
Figure 3a that 7.7% of the x-sets (148 x-sets) have a global
potential that is at least 1.2 times greater than the maximal
local impact (i.e., ratio &gt;= 1:2). For transitive dependents
(Figure 3b), only 5% have a ratio greater than 1.33. Thus, a
small set of x-sets can impact a multitude of other packages
in other ecosystems, but this impact can be significant given
the number of dependent packages; up to 54,751 direct and
332,504 transitive dependent packages.</p>
      <p>RQ4 Do cross-ecosystem packages have different
characteristics compared to other packages in the ecosystem?</p>
      <p>With the fourth research question, we aim to investigate if
the characteristics of cross-ecosystem packages are different
than the characteristics of packages being distributed in a
single ecosystem.</p>
      <p>The cross-ecosystem packages only represent a small
fraction (&lt; 1%) of the total number of packages in each
ecosystem. As reported in detail in Section III, only 15,389 out of
1,556,300 packages are cross ecosystem packages. To avoid
any bias in our analyses when comparing the characteristics
of cross-ecosystem packages with those of other packages, we
generated representative samples of each ecosystem’s package
population that are comparable in size with the population of
cross-ecosystem packages in each ecosystem.</p>
      <p>
        The research literature reports different approaches to
sample a population of software projects. For example, the
approach by Nagappan et al. [
        <xref ref-type="bibr" rid="ref15">15</xref>
        ] aims to capture the diversity
of values of the projects’ characteristics so that the sample will
maximize the coverage of the population. In our analysis, we
aim to find, if any, the differences of cross-ecosystem packages
w.r.t a representative sample of the ecosystem’s package
population. The aforementioned algorithm would introduce bias in
our analyses as we need to compare between cross-ecosystem
packages and a representative sample of the population, and
not one that covers as many projects in the population as
possible.
      </p>
      <p>Therefore, we implemented a random sample generation
(Algorithm 1) that will preserve the characteristics of the
population, i.e., if there is a predominant class in a characteristic
for the entire population, we aim for this characteristic to
be predominant in the random sample as well. Algorithm 1
presents the steps to generate a random sample of size S,
or differ in most attributes (CocoaPods, Maven, npm, Pypi,
Rubygems). Overall, cross-ecosystem packages have usually
more stars, forks, watchers and contributors w.r.t. other
packages in the ecosystem (see the listed attributes on the third
and fourth columns of Table II). By taking into account that
cross-ecosystem packages tend to be more popular based on
stars, forks and watchers, and that they have a large number
of dependent packages across different ecosystems (see RQ3),
it is evident that these packages are very important and more
in-depth analyses are required to study their evolution.
originating from a population P and based on a set of attributes
A. The random sample is generated (line 6) and then, the set
of attributes sample same attributes is retrieved for which
the random sample follows the same distribution as the entire
population (line 7). If the set sample same attributes is
larger than the current best (line 8), then the random sample
and the set of attributes are stored (lines 9 and 11). Each time IV. CONCLUSION
the algorithm fetches a new random sample, the repetitions We observed that a small fraction of the software packages
counter increments (line 5); if the algorithm finds a better distributed in packaging ecosystems are also distributed in
match then the counter is reset to zero (line 10). The algorithm packaging ecosystems for other programming languages. Such
finishes when all attributes of the random sample follow the cross-ecosystem packages can benefit from a potentially larger
same distribution as the population, or when the number of pool of contributors. On the other hand, issues in these
packrepetitions without finding a better sample exceeds a threshold ages (e.g. bugs or security issues) may have a wider impact,
ST (line 13). because they may affect other packages in each ecosystem in</p>
      <p>For our analysis, we gathered a random sample for each which they are distributed. In the preliminary investigation of
ecosystem according to Algorithm 1, where P is the set of non this paper, we empirically analysed the characteristics of
crosscross-ecosystem packages, the sample size S is the number ecosystem packages in 12 popular programming language
of cross-ecosystem packages, the stop criterion ST = 100, ecosystems. We observed that many cross-ecosystem packages
and the set of attributes A contains the following information may have a potentially high impact in multiple ecosystems due
provided by libraries.io for each git repository: # of versions, to the large number of other packages depending on them.
repository size, # of stars, # of forks, # of open issues, # of More in-depth analyses are required to shed more light in
watchers, # of contributors and longevity. We compared the the reasons for distributing packages across multiple
ecosyscross-ecosystem packages with the random sample generated tems, as well as the evolution dynamics and release policy
for each ecosystem by use of Mann-Whitney U tests to deter- of these packages. We also aim to study if there are
sociomine which attributes are different between the two samples; technical health issues in the development teams of
crossall tests were performed with = 0:05. The resulting p-values ecosystem packages. These and related aspects and questions
were adjusted following Bonferroni-Holm method to control will be investigated in our future work.
family-wise error rate.</p>
      <p>ACKNOWLEDGMENT</p>
      <p>Table II presents the different attributes for each ecosystem.</p>
      <p>These results suggest that cross-ecosystem packages in CPAN, This research was carried out in the context of
FRQCRAN and Hackage do not have different characteristics than FNRS collaborative research project R.60.04.18.F
“SECOother packages, while Cargo cross-ecosystem packages only Health”, FNRS Research Credit J.0023.16 “Analysis of
Softhave a larger # of stars compared to the randomly sampled ware Project Survival” and Excellence of Science project
ones. For the remaining ecosystems, cross-ecosystem packages 30446992 SECO-Assist financed by FWO - Vlaanderen and
are either completely different (Clojars, NuGet, Packagist), F.R.S.-FNRS.</p>
    </sec>
  </body>
  <back>
    <ref-list>
      <ref id="ref1">
        <mixed-citation>
          [1]
          <string-name>
            <given-names>M.</given-names>
            <surname>Lungu</surname>
          </string-name>
          .
          <article-title>Towards reverse engineering software ecosystems</article-title>
          .
          <source>In International Conference on Software Maintenance</source>
          , pages
          <fpage>428</fpage>
          -
          <lpage>431</lpage>
          ,
          <year>2008</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref2">
        <mixed-citation>
          [2]
          <string-name>
            <given-names>Eleni</given-names>
            <surname>Constantinou</surname>
          </string-name>
          and
          <string-name>
            <given-names>Tom</given-names>
            <surname>Mens</surname>
          </string-name>
          .
          <article-title>Social and technical evolution of software ecosystems: A case study of Rails</article-title>
          .
          <source>In European Conference on Software Architecture Workshops</source>
          , pages
          <volume>23</volume>
          :
          <fpage>1</fpage>
          -
          <lpage>23</lpage>
          :
          <fpage>4</fpage>
          . ACM,
          <year>2016</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref3">
        <mixed-citation>
          [3]
          <string-name>
            <given-names>Eleni</given-names>
            <surname>Constantinou</surname>
          </string-name>
          and
          <string-name>
            <given-names>Tom</given-names>
            <surname>Mens</surname>
          </string-name>
          .
          <article-title>An empirical comparison of developer retention in the RubyGems and npm software ecosystems</article-title>
          .
          <source>Innov. Syst. Softw. Eng.</source>
          ,
          <volume>13</volume>
          (
          <issue>2-3</issue>
          ):
          <fpage>101</fpage>
          -
          <lpage>115</lpage>
          ,
          <year>September 2017</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref4">
        <mixed-citation>
          [4]
          <string-name>
            <given-names>B.</given-names>
            <surname>Lin</surname>
          </string-name>
          ,
          <string-name>
            <surname>G.</surname>
          </string-name>
          <article-title>Robles, and</article-title>
          <string-name>
            <given-names>A.</given-names>
            <surname>Serebrenik</surname>
          </string-name>
          .
          <article-title>Developer turnover in global, industrial open source projects: Insights from applying survival analysis</article-title>
          .
          <source>In International Conference on Global Software Engineering</source>
          , pages
          <fpage>66</fpage>
          -
          <lpage>75</lpage>
          , May
          <year>2017</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref5">
        <mixed-citation>
          [5]
          <string-name>
            <given-names>E.</given-names>
            <surname>Constantinou</surname>
          </string-name>
          and
          <string-name>
            <given-names>T.</given-names>
            <surname>Mens</surname>
          </string-name>
          .
          <article-title>Socio-technical evolution of the Ruby ecosystem in GitHub</article-title>
          .
          <source>In International Conference on Software Analysis, Evolution and Reengineering</source>
          , pages
          <fpage>34</fpage>
          -
          <lpage>44</lpage>
          . IEEE,
          <year>Feb 2017</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref6">
        <mixed-citation>
          [6]
          <string-name>
            <given-names>Alexandre</given-names>
            <surname>Decan</surname>
          </string-name>
          , Tom Mens, and
          <string-name>
            <given-names>Philippe</given-names>
            <surname>Grosjean</surname>
          </string-name>
          .
          <article-title>An empirical comparison of dependency network evolution in seven software packaging ecosystems</article-title>
          .
          <source>Empirical Software Engineering</source>
          ,
          <year>Feb 2018</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref7">
        <mixed-citation>
          [7]
          <string-name>
            <given-names>Ahmed</given-names>
            <surname>Zerouali</surname>
          </string-name>
          , Eleni Constantinou, Tom Mens,
          <string-name>
            <given-names>Gregorio</given-names>
            <surname>Robles</surname>
          </string-name>
          , and
          <article-title>Jesu´s Gonza´lez-Barahona. An empirical analysis of technical lag in npm package dependencies</article-title>
          .
          <source>In International Conference on Software Reuse</source>
          , pages
          <fpage>95</fpage>
          -
          <lpage>110</lpage>
          . Springer,
          <year>2018</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref8">
        <mixed-citation>
          [8]
          <string-name>
            <given-names>Alexandre</given-names>
            <surname>Decan</surname>
          </string-name>
          , Tom Mens, and
          <string-name>
            <given-names>Eleni</given-names>
            <surname>Constantinou</surname>
          </string-name>
          .
          <article-title>On the evolution of technical lag in the npm package dependency network</article-title>
          .
          <source>In International Conference on Software Maintenance and Evolution</source>
          , pages
          <fpage>443</fpage>
          -
          <lpage>453</lpage>
          . IEEE,
          <year>2018</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref9">
        <mixed-citation>
          [9]
          <string-name>
            <given-names>Marat</given-names>
            <surname>Valiev</surname>
          </string-name>
          , Bogdan Vasilescu, and
          <string-name>
            <given-names>Jim</given-names>
            <surname>Herbsleb</surname>
          </string-name>
          .
          <article-title>Ecosystem-level determinants of sustained activity in open-source projects: A case study of the PyPI ecosystem</article-title>
          .
          <source>In Joint European Software Engineering Conference and Symposium on the Foundations of Software Engineering. ACM</source>
          ,
          <year>2018</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref10">
        <mixed-citation>
          [10]
          <string-name>
            <surname>D. M. German</surname>
            ,
            <given-names>B.</given-names>
          </string-name>
          <string-name>
            <surname>Adams</surname>
          </string-name>
          ,
          <article-title>and</article-title>
          <string-name>
            <surname>A. E. Hassan.</surname>
          </string-name>
          <article-title>The evolution of the r software ecosystem</article-title>
          .
          <source>In 2013 17th European Conference on Software Maintenance and Reengineering</source>
          , pages
          <fpage>243</fpage>
          -
          <lpage>252</lpage>
          ,
          <year>March 2013</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref11">
        <mixed-citation>
          [11]
          <string-name>
            <surname>Erik</surname>
            <given-names>Wittern</given-names>
          </string-name>
          , Philippe Suter, and
          <string-name>
            <given-names>Shriram</given-names>
            <surname>Rajagopalan</surname>
          </string-name>
          .
          <article-title>A look at the dynamics of the JavaScript package ecosystem</article-title>
          .
          <source>In International Conference on Mining Software Repositories</source>
          , pages
          <fpage>351</fpage>
          -
          <lpage>361</lpage>
          . ACM,
          <year>2016</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref12">
        <mixed-citation>
          [12]
          <string-name>
            <surname>Alexandre</surname>
            <given-names>Decan</given-names>
          </string-name>
          , Tom Mens, and
          <string-name>
            <given-names>Eleni</given-names>
            <surname>Constantinou</surname>
          </string-name>
          .
          <article-title>On the impact of security vulnerabilities in the npm package dependency network</article-title>
          .
          <source>In Proceedings of the 15th International Conference on Mining Software Repositories, MSR '18</source>
          , pages
          <fpage>181</fpage>
          -
          <lpage>191</lpage>
          , New York, NY, USA,
          <year>2018</year>
          . ACM.
        </mixed-citation>
      </ref>
      <ref id="ref13">
        <mixed-citation>
          [13]
          <string-name>
            <given-names>A.</given-names>
            <surname>Decan</surname>
          </string-name>
          ,
          <string-name>
            <given-names>T.</given-names>
            <surname>Mens</surname>
          </string-name>
          , and
          <string-name>
            <given-names>M.</given-names>
            <surname>Claes</surname>
          </string-name>
          .
          <article-title>An empirical comparison of dependency issues in oss packaging ecosystems</article-title>
          .
          <source>In 2017 IEEE 24th International Conference on Software Analysis, Evolution and Reengineering (SANER)</source>
          , pages
          <fpage>2</fpage>
          -
          <lpage>12</lpage>
          ,
          <year>Feb 2017</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref14">
        <mixed-citation>
          [14]
          <string-name>
            <given-names>Andrew</given-names>
            <surname>Nesbitt</surname>
          </string-name>
          and
          <string-name>
            <given-names>Benjamin</given-names>
            <surname>Nickolls</surname>
          </string-name>
          . Libraries.
          <article-title>io open source repository and dependency metadata (version 1.2</article-title>
          .0). Zenodo,
          <year>2018</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref15">
        <mixed-citation>
          [15]
          <string-name>
            <surname>Meiyappan</surname>
            <given-names>Nagappan</given-names>
          </string-name>
          , Thomas Zimmermann, and
          <string-name>
            <given-names>Christian</given-names>
            <surname>Bird</surname>
          </string-name>
          .
          <article-title>Diversity in software engineering research</article-title>
          .
          <source>In International Conference on Foundations of Software Engineering</source>
          , pages
          <fpage>466</fpage>
          -
          <lpage>476</lpage>
          . ACM,
          <year>2013</year>
          .
        </mixed-citation>
      </ref>
    </ref-list>
  </back>
</article>