Empirical Software Engineering

, Volume 21, Issue 3, pp 960–1001 | Cite as

An empirical study of integration activities in distributions of open source software

  • Bram AdamsEmail author
  • Ryan Kavanagh
  • Ahmed E. Hassan
  • Daniel M. German


Reuse of software components, either closed or open source, is considered to be one of the most important best practices in software engineering, since it reduces development cost and improves software quality. However, since reused components are (by definition) generic, they need to be customized and integrated into a specific system before they can be useful. Since this integration is system-specific, the integration effort is non-negligible and increases maintenance costs, especially if more than one component needs to be integrated. This paper performs an empirical study of multi-component integration in the context of three successful open source distributions (Debian, Ubuntu and FreeBSD). Such distributions integrate thousands of open source components with an operating system kernel to deliver a coherent software product to millions of users worldwide. We empirically identified seven major integration activities performed by the maintainers of these distributions, documented how these activities are being performed by the maintainers, then evaluated and refined the identified activities with input from six maintainers of the three studied distributions. The documented activities provide a common vocabulary for component integration in open source distributions and outline a roadmap for future research on software integration.


Software integration Software reuse Open source distributions Debian Ubuntu and FreeBSD 



The authors would like to thank all maintainers and release engineers of Debian, Ubuntu and FreeBSD who participated in our study, either directly (providing feedback on the documented activities), or indirectly (providing insights into the fascinating world of OSS distributions).


  1. Adams B, De Schutter K , Tromp H, De Meuter W (2007) Design recovery and maintenance of build systems. In: Proceedings of the Intl. Conf. on Soft. Maint, pp 114–123Google Scholar
  2. Adams B, Kavanagh R, Hassan AE, German DM (2015) Replication package.
  3. Bac C, Berger O, Deborde V, Hamet B (2005) Why and how-to contribute to libre software when you integrate them into an in-house application? . Proceedings of the 1st Intl Conf on Open Source Systems (OSS):113–118Google Scholar
  4. Basili VR, Briand LC, Melo WL (1996) How reuse influences productivity in object-oriented systems. Commun ACM 39(10):104–116CrossRefGoogle Scholar
  5. Begel A, Nagappan N, Poile C, Layman L (2009) Coordination in large-scale software teams. In: Proceedings of the 2009 ICSE Workshop on Cooperative and Human Aspects on Software Engineering, CHASE ’09, pp. 1–7, Washington, DC, USA, IEEE Computer SocietyGoogle Scholar
  6. Bhuta J, Mattmann C, Medvidovic N, Boehm B W (2007) Framework for the Assessment and Selection of Software Components and Connectors in COTS-Based Architectures. In: WICSA, page 6Google Scholar
  7. Information Technology Resources Board (1999) Assessing the risks of commercial-off-the shelf applications. Technical report, ITRBGoogle Scholar
  8. Boehm B, Abts C (1999) COTS integration: Plug and pray?. Computer 32(1):135–138CrossRefGoogle Scholar
  9. Bowman IT, Holt RC, Brewster NV (1999) Linux as a case study: its extracted software architecture. In: Proceedings of the 21st Intl. Conf. on Software Engineering (ICSE), pp 555–563Google Scholar
  10. Brooks FP, Jr (1995) The Mythical Man-month (Anniversary Ed.) Addison-Wesley Longman Publishing Co., Inc., Boston, MA, USAGoogle Scholar
  11. Brownsword L, Oberndorf T, Sledge CA (2000) Developing new processes for COTS-based systems. IEEE Softw 17(4):48–55CrossRefGoogle Scholar
  12. Brun Y, Holmes R, Ernst MD, Notkin D (2011) Proactive detection of collaboration conflicts. In: Proceedings of the 19th ACM SIGSOFT Symp. and the 13th European Conf. on Foundations of Software Engineering (ESEC/FSE), pp 168–178Google Scholar
  13. Chen W, Li J, Ma J, Conradi R, Ji J, Liu Chunnian (2008) An empirical study on software development with open source components in the chinese software industry . Softw Process 13:89–100CrossRefGoogle Scholar
  14. Cochran WG (1963) Sampling Techniques, 2nd edn. John Wiley and Sons, Inc., New YorkzbMATHGoogle Scholar
  15. Coplien J, Hoffman D, Weiss D (1998) Commonality and variability in software engineering. IEEE Softw 15:37–45CrossRefGoogle Scholar
  16. Crnkovic I, Larssom M (2002) Challenges of component-based development. J Syst Softw 61(3):201– 212CrossRefGoogle Scholar
  17. Curtis B, Krasner H, Iscoe N (1988) A field study of the software design process for large systems. Commun ACM 31(11):1268–1287CrossRefGoogle Scholar
  18. Dagenais B., Robillard M P (2008) Recommending adaptive changes for framework evolution. In: Proceedings of the 30th Intl. Conf. on Software Engineering (ICSE), pp 481–490Google Scholar
  19. de Souza CRB, Redmiles D, Cheng L-T, Millen D, Patterson J (2004) Sometimes you need to see through walls: A field study of application programming interfaces. In: Proceedings of the 2004 ACM Conference on Computer Supported Cooperative Work, CSCW ’04, pp. 63–71, New York, NY, USA. ACMGoogle Scholar
  20. de Souza CRB, Redmiles D F (2008) An empirical study of software developers’ management of dependencies and changes. In: Proceedings of the 30th International Conference on Software Engineering, ICSE ’08, pages 241–250, New York, NY, USA, ACMGoogle Scholar
  21. Project participants (2013).
  22. Debian project (2011) Debian Developer’s Reference, 2011 editionGoogle Scholar
  23. DeLine R (1999) Avoiding packaging mismatch with flexible packaging. In: Proceedings of the 21st Intl. Conf. on Software Engineering (ICSE), pp. 97–106Google Scholar
  24. Developer’s Reference Team, Barth A, Di Carlo A, Hertzog R, Nussbaum L, Schwarz C, Jackson I (2011) Debian. The Debian ProjectGoogle Scholar
  25. Di Cosmo R , Di Ruscio D , Pelliccione P, Pierantonio A, Zacchiroli S (2011) Supporting software evolution in component-based foss systems. Sci Comput Program 76:1144–1160CrossRefGoogle Scholar
  26. Di Giacomo P (2005) COTS and open source software components: are they really different on the battlefield?. In: Proceedings of the 4th intl. conf. on COTS-Based Software Systems (ICCBSS), pp 301–310Google Scholar
  27. Dogguy M, Glondu S, Le Gall S, Zacchiroli S (2010) Enforcing type-safe linking using inter-package relationships. In: Proc. of the 21st Journées Francophones des Langages Applicatifs (JFLA), p. 25pGoogle Scholar
  28. Frakes W, Terry C (1996) Software reuse: metrics and models. ACM Comput Surv 28(2):415–435CrossRefGoogle Scholar
  29. Frakes WB, Kang K (2005) Software reuse research: status and future. IEEE Trans Softw Eng 31:529–536CrossRefGoogle Scholar
  30. FreeBSD porter’s handbook (2011).
  31. Gaffney JE, Durek TA (1989) Software reuse – key to enhanced productivity: some quantitative models. Inf Softw Technol 31(5):258–267CrossRefGoogle Scholar
  32. Gamma E, Helm R, Johnson R, Vlissides J (1995) Design patterns: elements of reusable object-oriented software. Addison-Wesley Longman Publishing Co., Inc., MAzbMATHGoogle Scholar
  33. German DM, Gonzalez-Barahona JM, Robles G (2007) A model to understand the building and running inter-dependencies of software. In: Proceedings of the 14th Working Conf. on Reverse Engineering (WCRE), pages 140–149Google Scholar
  34. German DM, Hassan AE (2009) License integration patterns: addressing license mismatches in component-based development. In: Proceedings of ICSE, pp 188–198Google Scholar
  35. German DM, Webber JH, Di Penta M (2010) Lawful software engineering. In: Proceedings of the FSE/SDP wrksh. on Future of Soft. Eng. research (FoSER), pp. 129–132Google Scholar
  36. Gonzalez-Barahona JM, Robles G, Michlmayr M, Amor JJ, German DM (2009) Macro-level software evolution: a case study of a large software compilation. Empirical Softw Engg 14:262–285CrossRefGoogle Scholar
  37. Goode S (2005) Something for nothing: management rejection of open source software in australia’s top firms. Inf Manage 42(5):669–681CrossRefGoogle Scholar
  38. The BSD Certification Group (2005) Bsd usage survey. Technical report, The BSD Certification GroupGoogle Scholar
  39. Hauge Ø, Ayala C, Conradi R (2010) Adoption of open source software in software-intensive organizations - a systematic literature review. Inf Softw Technol 52(11):1133–1154CrossRefGoogle Scholar
  40. Hauge Ø, Sørensen C-F, Conradi R (2008) Adoption of open source in the software industry. In: Proceedings of the 4th IFIP WG 2.13 Intl. Conf. on Open Source Systems (OSS), vol 275, pp 211–221Google Scholar
  41. Herbsleb . JD, Grinter RE (1999) Splitting the organization and integrating the code: Conway’s law revisited. In: Proceedings of the 21st International Conference on Software Engineering, ICSE ’99, pp. 85–95, New York, NY, USA, ACMGoogle Scholar
  42. Herbsleb JD, Mockus A, Finholt TA, Grinter RE (2001) An empirical study of global software development: distance and speed. In: Proceedings of the 23rd International Conference on Software Engineering, ICSE ’01, pp. 81–90, Washington, DC, USA, IEEE Computer SocietyGoogle Scholar
  43. Hertzog R (2011) Towards Debian rolling: my own Debian CUT manifesto.
  44. Jaaksi A (2007) Experiences on product development with open source software. In: Proc. of the IFIP Working Group 2.13 on Open Source Soft, volume 234, pp 85–96. SpringerGoogle Scholar
  45. Koshy J (2013) Building products with FreeBSD.,2013
  46. Khomh F, Dhaliwal T, Zou Y, Adams B (2012) Do faster releases improve software quality? – an empirical case study of Mozilla Firefox. In: Proceedings of the 9th IEEE Working Conf. on Mining Software Repositories (MSR), pages 179–188, Zurich, SwitzerlandGoogle Scholar
  47. Lewis P, Hyle P, Parrington M, Clark E, Boehm B, Abts C, Manners R (2000) Lessons learned in developing commercial off-the-shelf (COTS) intensive software systems. Technical report, SERCGoogle Scholar
  48. Li J, Conradi R, Bunse C, Torchiano M, Slyngstad OPN, Morisio M (2009) Development with off-the-shelf components: 10 facts. IEEE Softw 26:80–87CrossRefGoogle Scholar
  49. Li J, Conradi R, Slyngstad OP, Torchiano M, Morisio M, Bunse C (2008) A state-of-the-practice survey of risk management in development with off-the-shelf software components. IEEE Trans Softw Eng 34:271–286CrossRefGoogle Scholar
  50. Li J, Conradi R, Slyngstad OPN, Bunse C, Khan U, Torchiano M, Morisio M (2005) An empirical study on off-the-shelf component usage in industrial projects. In: Proceedings of the 6th intl. conf. on Product Focused Software Process Improvement (PROFES), pp. 54–68Google Scholar
  51. van der Linden FJ, Schmid K, Rommes E (2007) Software product lines in action: the best industrial practice in product line engineering. Springer, Berlin HeidelbergCrossRefGoogle Scholar
  52. Van Der Linden F (2009) Applying open source software principles in product lines. Eur J Informa Prof (UPGRADE) 3:32–40Google Scholar
  53. Lundqvist A (2013) GNU/Linux distribution timeline.
  54. Mattsson M, Bosch J, Fayad ME (1999) Framework integration problems, causes, solutions. Commun ACM 42(10):80–87CrossRefGoogle Scholar
  55. McCamant S, Ernst MD (2003) Predicting problems caused by component upgrades. In: Proceedings of the Symposium on the Foundations of Software Engineering, pp. 287–296Google Scholar
  56. McIntosh S, Adams B, Kamei Y, Nguyen T, Hassan AE (2011) An empirical study of build maintenance effort. In: Proceedings of ICSE, pages 141–150Google Scholar
  57. Merilinna J, Matinlassi M (2006) State of the art and practice of opensource component integration. In: Proceedings of the 32nd Conf. on Software Engineering and Advanced Applications (EUROMICRO), pp 170–177Google Scholar
  58. Meyer MH, Lehnerd AP (1997) The power of product platforms. Free Press, New YorkGoogle Scholar
  59. Michlmayr M, Hunt F, Probert D (2007) Release management in free software projects: practices and problems. In: Open Source Development, Adoption and Innovation, v. 234, pp. 295–300Google Scholar
  60. Mistrík I, Grundy J, Hoek A, Whitehead J (2010) Collaborative software engineering: challenges and prospects, chapter 19, 1st edn. Springer, Berlin Heidelberg, pp 389–402CrossRefGoogle Scholar
  61. Mohamed A, Ruhe G, Eberlein A (2008) Optimized mismatch resolution for COTS selection. Softw Process 13(2):157–169CrossRefGoogle Scholar
  62. Morisio M, Seaman CB, Basili VR, Parra AT, Kraft SE, Condon SE (2002) COTS-based software development: processes and open issues. J Syst Softw 61(3):189–189CrossRefGoogle Scholar
  63. Navarrete F, Botella P, Franch X (2005) How agile COTS selection methods are (and can be)?. In: Proceedings of the 31st EUROMICRO Conference on Software Engineering and Advanced Applications, EUROMICRO ’05, pp 160–167, Washington, DC, USA. IEEE Computer SocietyGoogle Scholar
  64. Orsila H, Geldenhuys J, Ruokonen A, Hammouda I (2008) Update propagation practices in highly reusable open source components. In: Proceedings of the 4th IFIP WG 2.13 Int. Conf. on Open Source Systems (OSS), vol 275, pp 159–170Google Scholar
  65. Parnas DL (1976) On the design and development of program families. IEEE Trans Softw Eng 2:1–9CrossRefzbMATHGoogle Scholar
  66. Pohl Klaus, Böckle G, van der Linden F J (2005) Software product line engineering: foundations, principles and techniques. Springer, New YorkCrossRefzbMATHGoogle Scholar
  67. Remnant SJ (2011) A new release process for Ubuntu?.
  68. Rodin J, Aoki O (2011) Debian New Maintainers’ Guide. The Debian ProjectGoogle Scholar
  69. Ruffin M, Ebert C (2004) Using open source software in product development: a primer. IEEE Softw 21(1):82–86CrossRefGoogle Scholar
  70. Sadowski BM , Sadowski-Rasters Gaby, Duysters G (2008) Transition of governance in a mature open software source community: evidence from the Debian case . Inf Econ Policy 20(4):323–332CrossRefGoogle Scholar
  71. Scacchi W , Feller J, Fitzgerald B, Hissam S, Lakhani K (2006) Understanding free/open source software development processes. Softw Process: Improv Pract 11(2)Google Scholar
  72. Seaman CB (1996) Communication costs in code and design reviews: an empirical study. In: Proceedings of the 1996 Conference of the Centre for Advanced Studies on Collaborative Research, CASCON ’96, pp 34–. IBM PressGoogle Scholar
  73. Shihab E, Bird C, Zimmermann T (2012) The effect of branching strategies on software quality. In: Proceedings of the ACM/IEEE intl. symp. on Empirical Software Engineering and Measurement (ESEM), pp 301–310Google Scholar
  74. Shuttleworth M (2008) The art of release.
  75. Sojer M, Henkel J (2010) Code reuse in open source software development: quantitative evidence, drivers, and impediments. J Assoc Inf Syst 11 (iss.12)Google Scholar
  76. Spinellis D, Szyperski C , Guest editors’ introduction: how is open source affecting software development? (2004) IEEE Softw 21(1):28–33CrossRefGoogle Scholar
  77. Stol K-J, Babar MA, Avgeriou P, Fitzgerald B (2011) A comparative study of challenges in integrating open source software and inner source software. Inf Softw Technol 53(12):1319–1336CrossRefGoogle Scholar
  78. Szyperski C (1998) Component software: beyond object-oriented programming. Addison-Wesley Publishing Co., MAGoogle Scholar
  79. The Fedora Project (2011) Package update HOWTO.
  80. The FreeBSD Documentation Project (2011) FreeBSD Porter’s Handbook. The FreeBSD FoundationGoogle Scholar
  81. Tiangco F, Stockwell A, Sapsford J, Rainer A, Swanton E. (2005) Open-source software in an occupational health application: the case of heales medical ltd. Procs 1:130–134Google Scholar
  82. Trezentos P, Lynce I, Oliveira A L (2010) Apt-pbo: solving the software dependency problem using pseudo-boolean optimization. In: Proceedings of the IEEE/ACM intl. conf. on Automated Software Engineering (ASE), pp. 427–436Google Scholar
  83. Qiang T, Godfrey M (2001) The build-time software architecture view. In: Proceedings of ICSM, pp. 398–Google Scholar
  84. Ubuntu core development team (2013).
  85. Ubuntu universe contributors team (2013).
  86. van der Hoek A, Wolf AL (2003) Software release management for component-based software. Softw Pract Exper 33:77–98CrossRefzbMATHGoogle Scholar
  87. Ven K, Mannaert H (2008) Challenges and strategies in the use of open source software by independent software vendors. Inf Softw Technol 50(9-10):991–1002CrossRefGoogle Scholar
  88. Whittaker J, Arbon J, Carollo J (2012) How google tests software. Addison-Wesley Professional, MAGoogle Scholar
  89. Comparison of BSD operating systems (2011).
  90. Xia X, Lo D, Zhu F, Wang X, Zhou B (2013) Software internationalization and localization: an industrial experience. In: Proceedings of the 18th Intl. Conf. on Engineering of Complex Computer Systems (ICECCS), pp. 222–231Google Scholar
  91. Yakimovich D, Bieman J M, Basili V R (1999) Software architecture classification for estimating the cost of COTS integration. In: Proceedings of the 21st Intl. Conf. on Software Engineering (ICSE), pp. 296–302Google Scholar

Copyright information

© Springer Science+Business Media New York 2015

Authors and Affiliations

  • Bram Adams
    • 1
    Email author
  • Ryan Kavanagh
    • 2
  • Ahmed E. Hassan
    • 2
  • Daniel M. German
    • 3
  1. 1.MCIS, Polytechnique MontréalMontréalCanada
  2. 2.SAILQueen’s UniversityKingstonCanada
  3. 3.University of VictoriaVictoriaCanada

Personalised recommendations