{"status":"ok","message-type":"work","message-version":"1.0.0","message":{"indexed":{"date-parts":[[2025,12,5]],"date-time":"2025-12-05T12:29:30Z","timestamp":1764937770249,"version":"3.37.3"},"reference-count":23,"publisher":"Springer Science and Business Media LLC","issue":"5","license":[{"start":{"date-parts":[[2024,7,6]],"date-time":"2024-07-06T00:00:00Z","timestamp":1720224000000},"content-version":"tdm","delay-in-days":0,"URL":"https:\/\/creativecommons.org\/licenses\/by\/4.0"},{"start":{"date-parts":[[2024,7,6]],"date-time":"2024-07-06T00:00:00Z","timestamp":1720224000000},"content-version":"vor","delay-in-days":0,"URL":"https:\/\/creativecommons.org\/licenses\/by\/4.0"}],"funder":[{"DOI":"10.13039\/501100012305","name":"Universit\u00e0 degli Studi del Molise","doi-asserted-by":"crossref","id":[{"id":"10.13039\/501100012305","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":[[2024,9]]},"abstract":"<jats:title>Abstract<\/jats:title><jats:p>Docker is the <jats:italic>de facto<\/jats:italic> standard for software containerization. A Dockerfile contains the requirements to build a Docker image containing a target application. There are several best practice rules for writing Dockerfiles, but the developers do not always follow them. Violations of such practices, known as Dockerfile smells, can negatively impact the reliability and performance of Docker images. Previous studies showed that Dockerfile smells are widely diffused, and there is a lack of automatic tools that support developers in fixing them. However, it is still unclear what Dockerfile smells get fixed by developers and to what extent developers would be willing to fix smells in the first place. The aim of our study is twofold. First, we want to understand what Dockerfiles smells receive more attention from developers, i.e., are fixed more frequently in the history of open-source projects. Second, we want to check if developers are willing to accept changes aimed at fixing Dockerfile smells (e.g., generated by an automated tool), to understand if they care about them. We evaluated the survivability of Dockerfile smells from a total of 53,456 unique Dockerfiles, where we manually validated a large sample of smell-removing commits to understand (i) if developers performed the change with the intention of removing bad practices, and (ii) if they were aware of the removed smell. In the second part, we used a rule-based tool to automatically fix Dockerfile smells. Then, we proposed such fixes to developers via pull requests. Finally, we quantitatively and qualitatively evaluated the outcome after a monitoring period of more than 7 months. The results of our study showed that most developers pay more attention to changes aimed at improving the performance of Dockerfiles (image size and build time). Moreover, they are willing to accept the fixes for the most common smells, with some exceptions (e.g., missing version pinning for OS packages).<\/jats:p>","DOI":"10.1007\/s10664-024-10471-7","type":"journal-article","created":{"date-parts":[[2024,7,6]],"date-time":"2024-07-06T10:01:36Z","timestamp":1720260096000},"update-policy":"https:\/\/doi.org\/10.1007\/springer_crossmark_policy","source":"Crossref","is-referenced-by-count":9,"title":["Fixing Dockerfile smells: an empirical study"],"prefix":"10.1007","volume":"29","author":[{"ORCID":"https:\/\/orcid.org\/0000-0002-5241-1608","authenticated-orcid":false,"given":"Giovanni","family":"Rosa","sequence":"first","affiliation":[]},{"given":"Federico","family":"Zappone","sequence":"additional","affiliation":[]},{"given":"Simone","family":"Scalabrino","sequence":"additional","affiliation":[]},{"given":"Rocco","family":"Oliveto","sequence":"additional","affiliation":[]}],"member":"297","published-online":{"date-parts":[[2024,7,6]]},"reference":[{"key":"10471_CR1","unstructured":"Best practices for writing Dockerfiles. Accessed 22 Jun 2022"},{"key":"10471_CR2","unstructured":"Hadolint: Dockerfile linter, validate inline bash, written in Haskell. Accessed 28 May 2022"},{"key":"10471_CR3","unstructured":"ShellCheck, a static analysis tool for shell scripts. Accessed 2 Jun 2022"},{"issue":"2","key":"10471_CR4","doi-asserted-by":"publisher","first-page":"1","DOI":"10.1007\/s10664-021-10081-7","volume":"27","author":"H Azuma","year":"2022","unstructured":"Azuma H, Matsumoto S, Kamei Y, Kusumoto S (2022) An empirical study on self-admitted technical debt in dockerfiles. Empir Softw Eng 27(2):1\u201326","journal-title":"Empir Softw Eng"},{"key":"10471_CR5","volume-title":"Refactoring: improving the design of existing code","author":"P Becker","year":"1999","unstructured":"Becker P, Fowler M, Beck K, Brant J, Opdyke W, Roberts D (1999) Refactoring: improving the design of existing code. Addison-Wesley Professional"},{"key":"10471_CR6","doi-asserted-by":"crossref","unstructured":"Cito J, Schermann G, Wittern JE, Leitner P, Zumberi S, Gall HC (2017) An empirical analysis of the docker container ecosystem on github. In: 2017 IEEE\/ACM 14th International Conference on Mining Software Repositories (MSR), IEEE, pp 323\u2013333","DOI":"10.1109\/MSR.2017.67"},{"issue":"1","key":"10471_CR7","doi-asserted-by":"publisher","first-page":"37","DOI":"10.1177\/001316446002000104","volume":"20","author":"J Cohen","year":"1960","unstructured":"Cohen J (1960) A coefficient of agreement for nominal scales. Educ Psychol Measur 20(1):37\u201346","journal-title":"Educ Psychol Measur"},{"key":"10471_CR8","doi-asserted-by":"crossref","unstructured":"Dabic O, Aghajani E, Bavota G (2021) Sampling projects in github for msr studies. In: 2021 IEEE\/ACM 18th International Conference on Mining Software Repositories (MSR), IEEE, pp 560\u2013564","DOI":"10.1109\/MSR52588.2021.00074"},{"key":"10471_CR9","doi-asserted-by":"crossref","unstructured":"Eng K, Hindle A (2021) Revisiting dockerfiles in open source software over time. In: 2021 IEEE\/ACM 18th International Conference on Mining Software Repositories (MSR), IEEE, pp 449\u2013459","DOI":"10.1109\/MSR52588.2021.00057"},{"key":"10471_CR10","doi-asserted-by":"crossref","unstructured":"Henkel J, Bird C, Lahiri SK, Reps T (2020) Learning from, understanding, and supporting devops artifacts for docker. In: 2020 IEEE\/ACM 42nd International Conference on Software Engineering (ICSE), IEEE, pp 38\u201349","DOI":"10.1145\/3377811.3380406"},{"key":"10471_CR11","doi-asserted-by":"crossref","unstructured":"Kitajima S, Sekiguchi A (2020) Latest image recommendation method for automatic base image update in dockerfile. In: International Conference on Service-Oriented Computing, Springer, pp 547\u2013562","DOI":"10.1007\/978-3-030-65310-1_40"},{"issue":"6","key":"10471_CR12","doi-asserted-by":"publisher","first-page":"18","DOI":"10.1109\/MS.2012.167","volume":"29","author":"P Kruchten","year":"2012","unstructured":"Kruchten P, Nord RL, Ozkaya I (2012) Technical debt: from metaphor to theory and practice. IEEE Softw 29(6):18\u201321","journal-title":"IEEE Softw"},{"key":"10471_CR13","doi-asserted-by":"crossref","unstructured":"Ksontini E, Kessentini M, Ferreira TdN, Hassan F (2021) Refactorings and technical debt in docker projects: an empirical study. In: 2021 36th IEEE\/ACM International Conference on Automated Software Engineering (ASE), IEEE, pp 781\u2013791","DOI":"10.1109\/ASE51524.2021.9678585"},{"key":"10471_CR14","doi-asserted-by":"crossref","unstructured":"Lin C, Nadi S, Khazaei H (2020) A large-scale data set and an empirical study of docker images hosted on docker hub. In: 2020 IEEE International Conference on Software Maintenance and Evolution (ICSME), IEEE, pp 371\u2013381","DOI":"10.1109\/ICSME46990.2020.00043"},{"key":"10471_CR15","doi-asserted-by":"crossref","unstructured":"Ma Y, Bogart C, Amreen S, Zaretzki R, Mockus A (2019) World of code: an infrastructure for mining the universe of open source vcs data. In: 2019 IEEE\/ACM 16th International Conference on Mining Software Repositories (MSR), IEEE, pp 143\u2013154","DOI":"10.1109\/MSR.2019.00031"},{"key":"10471_CR16","doi-asserted-by":"publisher","unstructured":"Regier DA, Narrow WE, Clarke DE, Kraemer HC, Kuramoto SJ, Kuhl EA, Kupfer DJ (2013) Dsm-5 field trials in the united states and canada, part ii: Test-retest reliability of selected categorical diagnoses. Am J Psychiatry 170(1):59\u201370. https:\/\/doi.org\/10.1176\/appi.ajp.2012.12070999. PMID: 23111466","DOI":"10.1176\/appi.ajp.2012.12070999"},{"key":"10471_CR17","doi-asserted-by":"publisher","unstructured":"Rosa G, Zappone F, Scalabrino S, Oliveto R (2024) Replication package. https:\/\/doi.org\/10.6084\/m9.figshare.23522679","DOI":"10.6084\/m9.figshare.23522679"},{"key":"10471_CR18","unstructured":"Spencer D (2009) Card sorting: designing usable categories. Rosenfeld Media"},{"issue":"11","key":"10471_CR19","doi-asserted-by":"publisher","first-page":"1063","DOI":"10.1109\/TSE.2017.2653105","volume":"43","author":"M Tufano","year":"2017","unstructured":"Tufano M, Palomba F, Bavota G, Oliveto R, Di Penta M, De Lucia A, Poshyvanyk D (2017) When and why your code starts to smell bad (and whether the smells go away). IEEE Trans Software Eng 43(11):1063\u20131088","journal-title":"IEEE Trans Software Eng"},{"key":"10471_CR20","doi-asserted-by":"crossref","unstructured":"Vassallo C, Proksch S, Jancso A, Gall HC, Di\u00a0Penta M (2020) Configuration smells in continuous delivery pipelines: a linter and a six-month study on gitlab. In: Proceedings of the 28th ACM joint meeting on european software engineering conference and symposium on the foundations of software engineering, pp 327\u2013337","DOI":"10.1145\/3368089.3409709"},{"key":"10471_CR21","doi-asserted-by":"publisher","first-page":"34127","DOI":"10.1109\/ACCESS.2020.2973750","volume":"8","author":"Y Wu","year":"2020","unstructured":"Wu Y, Zhang Y, Wang T, Wang H (2020) Characterizing the occurrence of dockerfile smells in open-source software: An empirical study. IEEE Access 8:34127\u201334139","journal-title":"IEEE Access"},{"key":"10471_CR22","doi-asserted-by":"crossref","unstructured":"Zerouali A, Mens T, Robles G, Gonzalez-Barahona JM (2019) On the relation between outdated docker containers, severity vulnerabilities, and bugs. In: 2019 IEEE 26th International Conference on Software Analysis, Evolution and Reengineering (SANER), IEEE, pp 491\u2013501","DOI":"10.1109\/SANER.2019.8668013"},{"key":"10471_CR23","doi-asserted-by":"crossref","unstructured":"Zhang Y, Vasilescu B, Wang H, Filkov V (2018) One size does not fit all: an empirical study of containerized continuous deployment workflows. In: Proceedings of the 2018 26th ACM joint meeting on european software engineering conference and symposium on the foundations of software engineering, pp 295\u2013306","DOI":"10.1145\/3236024.3236033"}],"container-title":["Empirical Software Engineering"],"original-title":[],"language":"en","link":[{"URL":"https:\/\/link.springer.com\/content\/pdf\/10.1007\/s10664-024-10471-7.pdf","content-type":"application\/pdf","content-version":"vor","intended-application":"text-mining"},{"URL":"https:\/\/link.springer.com\/article\/10.1007\/s10664-024-10471-7\/fulltext.html","content-type":"text\/html","content-version":"vor","intended-application":"text-mining"},{"URL":"https:\/\/link.springer.com\/content\/pdf\/10.1007\/s10664-024-10471-7.pdf","content-type":"application\/pdf","content-version":"vor","intended-application":"similarity-checking"}],"deposited":{"date-parts":[[2024,11,29]],"date-time":"2024-11-29T11:06:57Z","timestamp":1732878417000},"score":1,"resource":{"primary":{"URL":"https:\/\/link.springer.com\/10.1007\/s10664-024-10471-7"}},"subtitle":[],"short-title":[],"issued":{"date-parts":[[2024,7,6]]},"references-count":23,"journal-issue":{"issue":"5","published-print":{"date-parts":[[2024,9]]}},"alternative-id":["10471"],"URL":"https:\/\/doi.org\/10.1007\/s10664-024-10471-7","relation":{},"ISSN":["1382-3256","1573-7616"],"issn-type":[{"type":"print","value":"1382-3256"},{"type":"electronic","value":"1573-7616"}],"subject":[],"published":{"date-parts":[[2024,7,6]]},"assertion":[{"value":"27 February 2024","order":1,"name":"accepted","label":"Accepted","group":{"name":"ArticleHistory","label":"Article History"}},{"value":"6 July 2024","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 declare that they have no conflict of interest.","order":2,"name":"Ethics","group":{"name":"EthicsHeading","label":"Conflict of interest"}}],"article-number":"108"}}