{"status":"ok","message-type":"work","message-version":"1.0.0","message":{"indexed":{"date-parts":[[2026,10,6]],"date-time":"2026-10-06T04:23:32Z","timestamp":1791260612374,"version":"4.1.0"},"reference-count":43,"publisher":"Springer Science and Business Media LLC","issue":"2","license":[{"start":{"date-parts":[[2022,1,31]],"date-time":"2022-01-31T00:00:00Z","timestamp":1643587200000},"content-version":"tdm","delay-in-days":0,"URL":"https:\/\/creativecommons.org\/licenses\/by\/4.0"},{"start":{"date-parts":[[2022,1,31]],"date-time":"2022-01-31T00:00:00Z","timestamp":1643587200000},"content-version":"vor","delay-in-days":0,"URL":"https:\/\/creativecommons.org\/licenses\/by\/4.0"}],"funder":[{"DOI":"10.13039\/501100001691","name":"japan society for the promotion of science","doi-asserted-by":"crossref","award":["JP21H04877"],"award-info":[{"award-number":["JP21H04877"]}],"id":[{"id":"10.13039\/501100001691","id-type":"DOI","asserted-by":"crossref"}]}],"content-domain":{"domain":["link.springer.com"],"crossmark-restriction":false},"short-container-title":["Empir Software Eng"],"published-print":{"date-parts":[[2022,3]]},"abstract":"<jats:title>Abstract<\/jats:title><jats:p>In software development, ad hoc solutions that are intentionally implemented by developers are called self-admitted technical debt (SATD). Because the existence of SATD spreads poor implementations, it is necessary to remove it as soon as possible. Meanwhile, container virtualization has been attracting attention in recent years as a technology to support infrastructure such as servers. Currently, Docker is the de facto standard for container virtualization. In Docker, a file describing how to build a container (Dockerfile) is a set of procedural instructions; thus, it can be considered as a kind of source code. Moreover, because Docker is a relatively new technology, there are few developers who have accumulated good or bad practices for building Docker container. Hence, it is likely that Dockerfiles contain many SATDs, as is the case with general programming language source code analyzed in previous SATD studies. The goal of this paper is to categorize SATDs in Dockerfiles and to share knowledge with developers and researchers. To achieve this goal, we conducted a manual classification for SATDs in Dockerfile. We found that about 3.0% of the comments in Dockerfile are SATD. In addition, we have classified SATDs into five classes and eleven subclasses. Among them, there are some SATDs specific to Docker, such as SATDs for version fixing and for integrity check. The three most common classes of SATD were related to lowering maintainability, testing, and defects.<\/jats:p>","DOI":"10.1007\/s10664-021-10081-7","type":"journal-article","created":{"date-parts":[[2022,1,31]],"date-time":"2022-01-31T11:54:33Z","timestamp":1643630073000},"update-policy":"https:\/\/doi.org\/10.1007\/springer_crossmark_policy","source":"Crossref","is-referenced-by-count":31,"title":["An empirical study on self-admitted technical debt in Dockerfiles"],"prefix":"10.1007","volume":"27","author":[{"given":"Hideaki","family":"Azuma","sequence":"first","affiliation":[],"role":[{"vocabulary":"crossref","role":"author"}]},{"ORCID":"https:\/\/orcid.org\/0000-0003-4573-1985","authenticated-orcid":false,"given":"Shinsuke","family":"Matsumoto","sequence":"additional","affiliation":[],"role":[{"vocabulary":"crossref","role":"author"}]},{"given":"Yasutaka","family":"Kamei","sequence":"additional","affiliation":[],"role":[{"vocabulary":"crossref","role":"author"}]},{"given":"Shinji","family":"Kusumoto","sequence":"additional","affiliation":[],"role":[{"vocabulary":"crossref","role":"author"}]}],"member":"297","published-online":{"date-parts":[[2022,1,31]]},"reference":[{"key":"10081_CR1","doi-asserted-by":"crossref","unstructured":"Alves N S R, Ribeiro L F, Caires V, Mendes T S, Sp\u00ednola R O (2014) Towards an ontology of terms on technical debt. In: Proceedings of the international workshop on managing technical debt, pp 1\u20137","DOI":"10.1109\/MTD.2014.9"},{"key":"10081_CR2","doi-asserted-by":"crossref","unstructured":"Bavota G, Russo B (2016) A large-scale empirical study on self-admitted technical debt. In: Proceedings of IEEE\/ACM working conference on mining software repositories, pp 315\u2013326","DOI":"10.1145\/2901739.2901742"},{"key":"10081_CR3","doi-asserted-by":"crossref","unstructured":"Brown N, Cai Y, et al. (2010) Managing technical debt in software-reliant systems. In: Proceedings of FSE\/SDP workshop on future of software engineering research, pp 47\u201352","DOI":"10.1145\/1882362.1882373"},{"key":"10081_CR4","doi-asserted-by":"crossref","unstructured":"Cito J, Schermann G, Wittern J E, Leitner P, Zumberi S, Gall H C (2017) An empirical analysis of the docker container ecosystem on github. In: Proceedings of international conference on mining software repositories, pp 323\u2013333","DOI":"10.7287\/peerj.preprints.2905v1"},{"issue":"2","key":"10081_CR5","doi-asserted-by":"publisher","first-page":"29","DOI":"10.1145\/157710.157715","volume":"4","author":"W Cunningham","year":"1992","unstructured":"Cunningham W (1992) The wycash portfolio management system. ACM SIGPLAN OOPS Messenger 4(2):29\u201330","journal-title":"ACM SIGPLAN OOPS Messenger"},{"key":"10081_CR6","unstructured":"Docker (2020) Docker overview. https:\/\/docs.docker.com\/get-started\/overview\/.Accessed28Oct2020"},{"key":"10081_CR7","unstructured":"Documentation D (2020) Best practices for writing dockerfiles. https:\/\/docs.docker.com\/develop\/develop-images\/dockerfile_best-practices\/. Accessed 17 Sept 2020"},{"key":"10081_CR8","doi-asserted-by":"crossref","unstructured":"Fluri B, Wursch M, Gall H C (2007) Do code and comments co-evolve? On the relation between source code and comment changes. In: Proceedings of working conference on reverse engineering, pp 70\u201379","DOI":"10.1109\/WCRE.2007.21"},{"key":"10081_CR9","doi-asserted-by":"crossref","unstructured":"Fontana F A, Ferme V, Spinelli S (2012) Investigating the impact of code smells debt on quality code evaluation. In: Proceedings of the international workshop on managing technical debt, pp 15\u201322","DOI":"10.1109\/MTD.2012.6225993"},{"key":"10081_CR10","doi-asserted-by":"crossref","unstructured":"Fontana F A, Ferme V, Zanoni M, Roveda R (2015) Towards a prioritization of code debt: a code smell intensity index. In: Proceedings of the international workshop on managing technical debt, pp 16\u201324","DOI":"10.1109\/MTD.2015.7332620"},{"key":"10081_CR11","doi-asserted-by":"crossref","unstructured":"Haque M U, Iwaya L H, Babar M A (2020) Challenges in docker development: a large-scale study using stack overflow. In: Proceedings of the international symposium on empirical software engineering and measurement (ESEM), pp 1\u201311","DOI":"10.1145\/3382494.3410693"},{"key":"10081_CR12","doi-asserted-by":"crossref","unstructured":"Henkel J, Bird C, Lahiri S K, Reps T (2020a) A dataset of dockerfiles. In: Proceedings of the international conference on mining software repositories, pp 528\u2013532","DOI":"10.1145\/3379597.3387498"},{"key":"10081_CR13","doi-asserted-by":"crossref","unstructured":"Henkel J, Bird C, Lahiri S K, Reps T (2020b) Learning from, understanding, and supporting devops artifacts for docker. In: Proceedings of the international conference on software engineering, pp 38\u201349","DOI":"10.1145\/3377811.3380406"},{"issue":"1","key":"10081_CR14","doi-asserted-by":"publisher","first-page":"418","DOI":"10.1007\/s10664-017-9522-4","volume":"23","author":"Q Huang","year":"2017","unstructured":"Huang Q, Shihab E, Xia X, Lo D, Li S (2017) Identifying self-admitted technical debt in open source projects using text mining. Empir Softw Eng 23(1):418\u2013451","journal-title":"Empir Softw Eng"},{"key":"10081_CR15","unstructured":"Humble J, Farley D (2010) Continuous delivery: reliable software releases through build, test, and deployment automation. Pearson Education"},{"key":"10081_CR16","doi-asserted-by":"crossref","unstructured":"Hummer W, Rosenberg F, Oliveira F, Eilam T (2013) Testing idempotence for infrastructure as code. In: Proceedings of the international conference on distributed systems platforms and open distributed processing, pp 368\u2013388","DOI":"10.1007\/978-3-642-45065-5_19"},{"key":"10081_CR17","doi-asserted-by":"crossref","unstructured":"Jiang Y, Adams B (2015) Co-evolution of infrastructure and source code\u2014an empirical study. In: Proceedings of the working conference on mining software repositories, pp 45\u201355","DOI":"10.1109\/MSR.2015.12"},{"issue":"6","key":"10081_CR18","doi-asserted-by":"publisher","first-page":"18","DOI":"10.1109\/MS.2012.167","volume":"29","author":"P Kruchten","year":"2012","unstructured":"Kruchten P, Nord R L, Ozkaya I (2012) Technical debt: from metaphor to theory and practice. IEEE Softw 29(6):18\u201321","journal-title":"IEEE Softw"},{"key":"10081_CR19","doi-asserted-by":"crossref","unstructured":"Krum S, Hevelingen W V, Kero B, Turnbull J, McCune J (2014) Pro Puppet. Apress","DOI":"10.1007\/978-1-4302-6041-7"},{"key":"10081_CR20","unstructured":"Liu J, Huang Q, Xia X, Shihab E, Lo D, Li S (2020) Is using deep learning frameworks free? Characterizing technical debt in deep learning frameworks. In: Proceedings of the international conference on software engineering, pp 1\u201310"},{"key":"10081_CR21","doi-asserted-by":"crossref","unstructured":"Maldonado E D S, Shihab E (2015) Detecting and quantifying different types of self-admitted technical debt. In: Proceedings of the international workshop on managing technical debt, pp 9\u201315","DOI":"10.1109\/MTD.2015.7332619"},{"key":"10081_CR22","doi-asserted-by":"crossref","unstructured":"Maldonado E D S, Abdalkareem R, Shihab E, Serebrenik A (2017a) An empirical study on the removal of self-admitted technical debt. In: Proceedings of the IEEE international conference on software maintenance and evolution, pp 238\u2013248","DOI":"10.1109\/ICSME.2017.8"},{"issue":"11","key":"10081_CR23","doi-asserted-by":"publisher","first-page":"1044","DOI":"10.1109\/TSE.2017.2654244","volume":"43","author":"EDS Maldonado","year":"2017","unstructured":"Maldonado E D S, Shihab E, Tsantalis N (2017b) Using natural language processing to automatically detect self-admitted technical debt. IEEE Trans Softw Eng 43(11):1044\u20131062","journal-title":"IEEE Trans Softw Eng"},{"key":"10081_CR24","unstructured":"Martinelli L (2021) Haskell dockerfile linter. https:\/\/github.com\/hadolint\/hadolint. Accessed 18 Jan 2021"},{"issue":"C","key":"10081_CR25","doi-asserted-by":"publisher","first-page":"37","DOI":"10.1016\/j.jss.2017.09.026","volume":"135","author":"S Mensah","year":"2018","unstructured":"Mensah S, Keung J, Svajlenko J, Bennin K E, Mi Q (2018) On the value of a prioritization scheme for resolving self-admitted technical debt. J Syst Softw 135(C):37\u201354","journal-title":"J Syst Softw"},{"key":"10081_CR26","unstructured":"Open Container Initiative (2020) Why have all of these companies come together? https:\/\/opencontainers.org\/faq\/#why-have-all-of-these-companies-come-together. Accessed 8 Sep 2020"},{"key":"10081_CR27","doi-asserted-by":"crossref","unstructured":"Oumaziz M A, Falleri J, Blanc X, Bissyand\u00e8 T F, Klein J (2019) Handling duplicates in dockerfiles families: learning from experts. In: Proceedings of the IEEE international conference on software maintenance and evolution, pp 524\u2013535","DOI":"10.1109\/ICSME.2019.00086"},{"key":"10081_CR28","unstructured":"Portworx (2020) Annual container adoption report. https:\/\/portworx.com\/wp-content\/uploads\/2019\/05\/2019-container-adoption-survey.pdf. Accessed 5 Oct 2020"},{"key":"10081_CR29","doi-asserted-by":"crossref","unstructured":"Potdar A, Shihab E (2014) An exploratory study on self-admitted technical debt. In: Proceedings of the IEEE international conference on software maintenance and evolution, pp 91\u2013100","DOI":"10.1109\/ICSME.2014.31"},{"key":"10081_CR30","doi-asserted-by":"crossref","unstructured":"Rahman A, Parnin C, Williams L (2019) The seven sins: security smells in infrastructure as code scripts. In: Proceedings of the international conference on software engineering, pp 164\u2013175","DOI":"10.1109\/ICSE.2019.00033"},{"key":"10081_CR31","unstructured":"Red Hat (2021) Ansible. https:\/\/www.ansible.com\/. Accessed 25 Jan 2021"},{"key":"10081_CR32","doi-asserted-by":"crossref","unstructured":"Sharma T, Fragkoulis M, Spinellis D (2016) Does your configuration code smell?. In: Proceedings of working conference on mining software repositories, pp 189\u2013200","DOI":"10.1145\/2901739.2901761"},{"key":"10081_CR33","doi-asserted-by":"crossref","unstructured":"Shu R, Gu X, Enck W (2017) A study of security vulnerabilities on docker hub. In: Proceedings of the conference on data and application security and privacy, pp 269\u2013280","DOI":"10.1145\/3029806.3029832"},{"key":"10081_CR34","doi-asserted-by":"publisher","first-page":"70","DOI":"10.1016\/j.jss.2019.02.056","volume":"152","author":"G Sierra","year":"2019","unstructured":"Sierra G, Shihab E, Kamei Y (2019) A survey of self-admitted technical debt. J Syst Softw 152:70\u201382","journal-title":"J Syst Softw"},{"key":"10081_CR35","unstructured":"Taylor M, Vargo S (2014) Learning chef: a guide to configuration management and automation. O\u2019Reilly Media Inc"},{"issue":"6","key":"10081_CR36","doi-asserted-by":"publisher","first-page":"1498","DOI":"10.1016\/j.jss.2012.12.052","volume":"86","author":"E Tom","year":"2013","unstructured":"Tom E, Aurum A, Vidgen R (2013) An exploration of technical debt. J Syst Softw 86(6):1498\u20131516","journal-title":"J Syst Softw"},{"key":"10081_CR37","doi-asserted-by":"crossref","unstructured":"Wehaibi S, Shihab E, Guerrouj L (2016) Examining the impact of self-admitted technical debt on software quality. In: Proceedings of the international conference on software analysis, evolution, and reengineering, pp 179\u2013188","DOI":"10.1109\/SANER.2016.72"},{"key":"10081_CR38","unstructured":"Yiwen W, Yang Z, Tao W, Huaimin W (2020) An empirical study of build failures in the docker context. In: Proceedings of the international conference on mining software repositories, pp 76\u201380"},{"key":"10081_CR39","doi-asserted-by":"crossref","unstructured":"Zampetti F, Serebrenik A, Penta M D (2018) Was self-admitted technical debt removal a real removal? an in-depth perspective. In: Proceedings of the international conference on mining software repositories, pp 526\u2013536","DOI":"10.1145\/3196398.3196423"},{"key":"10081_CR40","doi-asserted-by":"crossref","unstructured":"Zazworka N, Shaw M A, Shull F, Seaman C (2011) Investigating the impact of design debt on software quality. In: Proceedings of workshop on managing technical debt, pp 17\u201323","DOI":"10.1145\/1985362.1985366"},{"issue":"3","key":"10081_CR41","doi-asserted-by":"publisher","first-page":"403","DOI":"10.1007\/s11219-013-9200-8","volume":"22","author":"N Zazworka","year":"2014","unstructured":"Zazworka N, Vetro\u2019 A, Izurieta C, Wong S, Cai Y, Seaman C, Shull F (2014) Comparing four approaches for technical debt identification. Softw Qual J 22(3):403\u2013426","journal-title":"Softw Qual J"},{"key":"10081_CR42","doi-asserted-by":"crossref","unstructured":"Zerouali A, Mens T, Robles G, Gonzalez-Barahona J M (2019) On the relation between outdated docker containers, severity vulnerabilities, and bugs. In: Proceedings of the international conference on software analysis, evolution and reengineering, pp 491\u2013501","DOI":"10.1109\/SANER.2019.8668013"},{"key":"10081_CR43","doi-asserted-by":"crossref","unstructured":"Zhang Y, Yin G, Wang T, Yu Y, Wang H (2018) An insight into the impact of dockerfile evolutionary trajectories on quality and latency. In: Proceedings of annual computer software and applications conference, pp 138\u2013143","DOI":"10.1109\/COMPSAC.2018.00026"}],"container-title":["Empirical Software Engineering"],"original-title":[],"language":"en","link":[{"URL":"https:\/\/link.springer.com\/content\/pdf\/10.1007\/s10664-021-10081-7.pdf","content-type":"application\/pdf","content-version":"vor","intended-application":"text-mining"},{"URL":"https:\/\/link.springer.com\/article\/10.1007\/s10664-021-10081-7\/fulltext.html","content-type":"text\/html","content-version":"vor","intended-application":"text-mining"},{"URL":"https:\/\/link.springer.com\/content\/pdf\/10.1007\/s10664-021-10081-7.pdf","content-type":"application\/pdf","content-version":"vor","intended-application":"similarity-checking"}],"deposited":{"date-parts":[[2022,4,12]],"date-time":"2022-04-12T13:30:27Z","timestamp":1649770227000},"score":1,"resource":{"primary":{"URL":"https:\/\/link.springer.com\/10.1007\/s10664-021-10081-7"}},"subtitle":[],"short-title":[],"issued":{"date-parts":[[2022,1,31]]},"references-count":43,"journal-issue":{"issue":"2","published-print":{"date-parts":[[2022,3]]}},"alternative-id":["10081"],"URL":"https:\/\/doi.org\/10.1007\/s10664-021-10081-7","relation":{},"ISSN":["1382-3256","1573-7616"],"issn-type":[{"value":"1382-3256","type":"print"},{"value":"1573-7616","type":"electronic"}],"subject":[],"published":{"date-parts":[[2022,1,31]]},"assertion":[{"value":"1 November 2021","order":1,"name":"accepted","label":"Accepted","group":{"name":"ArticleHistory","label":"Article History"}},{"value":"31 January 2022","order":2,"name":"first_online","label":"First Online","group":{"name":"ArticleHistory","label":"Article History"}},{"order":1,"name":"Ethics","group":{"name":"EthicsHeading","label":"Declarations"}},{"value":"The authors have no relevant financial or non-financial interests to disclose. The authors have no competing interests to declare that are relevant to the content of this article. All authors certify that they have no affiliations with or involvement in any organization or entity with any financial interest or non-financial interest in the subject matter or materials discussed in this manuscript. The authors have no financial or proprietary interests in any material discussed in this article.","order":2,"name":"Ethics","group":{"name":"EthicsHeading","label":"<!--Emphasis Type='Bold' removed-->Conflict of Interest"}}],"article-number":"49"}}