Abstract
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.
Similar content being viewed by others
Notes
http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=XYZ with XYZ the bug identifier
Manual search using the bug identifier on https://bugs.launchpad.net/ubuntu
:pserver:anoncvs@anoncvs.tw.FreeBSD.org:/home/ncvs
http://www.FreeBSD.org/cgi/query-pr.cgi?pr=XYZ with XYZ the bug identifier
This notation refers to a bug report in the distribution’s bug repository.
If the maintainer finds out that the interface did change without a SONAME update, she would contact upstream to ask for an update of the SONAME, then perform an Upstream Sync of the updated library before resuming the Dependency Management of the library’s reverse-dependencies.
References
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–123
Adams B, Kavanagh R, Hassan AE, German DM (2015) Replication package. http://mcis.polymtl.ca/publications/2014/integration_oss_distribution_adams_et_al.zip
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–118
Basili VR, Briand LC, Melo WL (1996) How reuse influences productivity in object-oriented systems. Commun ACM 39(10):104–116
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 Society
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 6
Information Technology Resources Board (1999) Assessing the risks of commercial-off-the shelf applications. Technical report, ITRB
Boehm B, Abts C (1999) COTS integration: Plug and pray?. Computer 32(1):135–138
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–563
Brooks FP, Jr (1995) The Mythical Man-month (Anniversary Ed.) Addison-Wesley Longman Publishing Co., Inc., Boston, MA, USA
Brownsword L, Oberndorf T, Sledge CA (2000) Developing new processes for COTS-based systems. IEEE Softw 17(4):48–55
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–178
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–100
Cochran WG (1963) Sampling Techniques, 2nd edn. John Wiley and Sons, Inc., New York
Coplien J, Hoffman D, Weiss D (1998) Commonality and variability in software engineering. IEEE Softw 15:37–45
Crnkovic I, Larssom M (2002) Challenges of component-based development. J Syst Softw 61(3):201– 212
Curtis B, Krasner H, Iscoe N (1988) A field study of the software design process for large systems. Commun ACM 31(11):1268–1287
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–490
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. ACM
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, ACM
Project participants (2013). http://www.debian.org/devel/people
Debian project (2011) Debian Developer’s Reference, 2011 edition
DeLine R (1999) Avoiding packaging mismatch with flexible packaging. In: Proceedings of the 21st Intl. Conf. on Software Engineering (ICSE), pp. 97–106
Developer’s Reference Team, Barth A, Di Carlo A, Hertzog R, Nussbaum L, Schwarz C, Jackson I (2011) Debian. The Debian Project
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–1160
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–310
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. 25p
Frakes W, Terry C (1996) Software reuse: metrics and models. ACM Comput Surv 28(2):415–435
Frakes WB, Kang K (2005) Software reuse research: status and future. IEEE Trans Softw Eng 31:529–536
FreeBSD porter’s handbook (2011). http://bit.ly/FQDPhP
The freeBSD developers (2013). http://www.freeBSD.org/doc/en/articles/contributors/staff-committers.html
Gaffney JE, Durek TA (1989) Software reuse – key to enhanced productivity: some quantitative models. Inf Softw Technol 31(5):258–267
Gamma E, Helm R, Johnson R, Vlissides J (1995) Design patterns: elements of reusable object-oriented software. Addison-Wesley Longman Publishing Co., Inc., MA
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–149
German DM, Hassan AE (2009) License integration patterns: addressing license mismatches in component-based development. In: Proceedings of ICSE, pp 188–198
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–132
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–285
Goode S (2005) Something for nothing: management rejection of open source software in australia’s top firms. Inf Manage 42(5):669–681
The BSD Certification Group (2005) Bsd usage survey. Technical report, The BSD Certification Group
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–1154
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–221
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, ACM
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 Society
Hertzog R (2011) Towards Debian rolling: my own Debian CUT manifesto. http://raphaelhertzog.com/2011/04/27/towards-Debian-rolling-my-own-Debian-cut-manifesto/
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. Springer
Koshy J (2013) Building products with FreeBSD. http://www.freeBSD.org/doc/en/articles/building-products/,2013
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, Switzerland
Lemos R (2003) Microsoft details new security plan. http://news.cnet.com/Microsoft-details-new-security-plan/2100-1002_3-5088846.html
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, SERC
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–87
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–286
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–68
van der Linden FJ, Schmid K, Rommes E (2007) Software product lines in action: the best industrial practice in product line engineering. Springer, Berlin Heidelberg
Van Der Linden F (2009) Applying open source software principles in product lines. Eur J Informa Prof (UPGRADE) 3:32–40
Lundqvist A (2013) GNU/Linux distribution timeline. http://futurist.se/gldt/
Mattsson M, Bosch J, Fayad ME (1999) Framework integration problems, causes, solutions. Commun ACM 42(10):80–87
McCamant S, Ernst MD (2003) Predicting problems caused by component upgrades. In: Proceedings of the Symposium on the Foundations of Software Engineering, pp. 287–296
McIntosh S, Adams B, Kamei Y, Nguyen T, Hassan AE (2011) An empirical study of build maintenance effort. In: Proceedings of ICSE, pages 141–150
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–177
Meyer MH, Lehnerd AP (1997) The power of product platforms. Free Press, New York
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–300
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–402
Mohamed A, Ruhe G, Eberlein A (2008) Optimized mismatch resolution for COTS selection. Softw Process 13(2):157–169
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–189
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 Society
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–170
Parnas DL (1976) On the design and development of program families. IEEE Trans Softw Eng 2:1–9
Pohl Klaus, Böckle G, van der Linden F J (2005) Software product line engineering: foundations, principles and techniques. Springer, New York
Remnant SJ (2011) A new release process for Ubuntu?. http://netsplit.com/2011/09/08/new-Ubuntu-release-process/
Rodin J, Aoki O (2011) Debian New Maintainers’ Guide. The Debian Project
Ruffin M, Ebert C (2004) Using open source software in product development: a primer. IEEE Softw 21(1):82–86
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–332
Scacchi W , Feller J, Fitzgerald B, Hissam S, Lakhani K (2006) Understanding free/open source software development processes. Softw Process: Improv Pract 11(2)
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 Press
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–310
Shuttleworth M (2008) The art of release. http://www.markshuttleworth.com/archives/146
Sojer M, Henkel J (2010) Code reuse in open source software development: quantitative evidence, drivers, and impediments. J Assoc Inf Syst 11 (iss.12)
Spinellis D, Szyperski C , Guest editors’ introduction: how is open source affecting software development? (2004) IEEE Softw 21(1):28–33
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–1336
Szyperski C (1998) Component software: beyond object-oriented programming. Addison-Wesley Publishing Co., MA
The Fedora Project (2011) Package update HOWTO. http://fedoraproject.org/wiki/Package_update_HOWTO
The FreeBSD Documentation Project (2011) FreeBSD Porter’s Handbook. The FreeBSD Foundation
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–134
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–436
Qiang T, Godfrey M (2001) The build-time software architecture view. In: Proceedings of ICSM, pp. 398–
motu team (2013). https://launchpad.net/%7Emotu/+members
Ubuntu core development team (2013). https://launchpad.net/%7EUbuntu-core-dev/+members
Ubuntu universe contributors team (2013). https://launchpad.net/universe-contributors/+members
van der Hoek A, Wolf AL (2003) Software release management for component-based software. Softw Pract Exper 33:77–98
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–1002
Whittaker J, Arbon J, Carollo J (2012) How google tests software. Addison-Wesley Professional, MA
Comparison of BSD operating systems (2011). http://en.wikipedia.org/wiki/Comparison_of_BSD_operating_systems
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–231
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–302
Acknowledgments
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).
Author information
Authors and Affiliations
Corresponding author
Additional information
Communicated by: Filippo Lanubile
Rights and permissions
About this article
Cite this article
Adams, B., Kavanagh, R., Hassan, A.E. et al. An empirical study of integration activities in distributions of open source software. Empir Software Eng 21, 960–1001 (2016). https://doi.org/10.1007/s10664-015-9371-y
Published:
Issue Date:
DOI: https://doi.org/10.1007/s10664-015-9371-y