DOI: 10.5281/zenodo.17843097
title: Assessing Software Evolution with the Stickiness Score: Evaluating Code Persistence Across Files, Folders, and Developers - Replication Package

description: Instructions




Prerequisites


Before running the backend, install these dependencies using the following command:



pip install -r ./Devotion/requirements.txt

 




Running the Backend


To run the backend of Devotion, navigate to the Devotion folder and use the following command:



cd ./Devotion
python ./runner.py <GitHub_Repo_URL> <Log_File_Name>

 


After the run is complete, you will have two files in the Devotion/frontend/client/src folder: authors.json containing developer Stickiness Scores, and folder_structure.json containing the Stickiness Scores of each file and folder of the project of interest. Both of these information are also written in a text format to the <Log_File_Name>.

When Devotion finishes executing, you can display the Stickiness results in the web application.



Running the Web Application


Before starting the web application, ensure all dependencies are installed by running:



npm install

 


To start the web application of Devotion, navigate to the client folder and run:



cd ./Devotion/frontend/client
npm run start

 


Once the web application starts successfully, open your browser and go to:



http://localhost:3000


 


You’ll see the Devotion Dashboard, which visualizes the Stickiness results you generated locally.



Navigating the Dashboard






Developers Tab: Displays a ranked list of contributors along with their Stickiness Scores, LOC added/modified/copied/moved/revived lines, and commit counts (see devo_devs_submission.png).




Files & Folders Tab: Shows Stickiness Scores for each file and folder, alongside LOC added/modified statistics. You can click on folders to expand them and explore nested structures (see devotion_file_webview_unpacked.png).



Color Codes:



Purple: Stickiness Score

Green: Added line count

Red: Modified line count


Use this visualization to quickly identify stable vs unstable regions in your project, or to compare developers’ long-term contributions. Each project view also includes pie charts summarizing the overall distribution of sticky vs modified lines.



Tip


If you re-run the backend, refresh the page to load the updated authors.json and folder_structure.json data automatically.



Running the Hypothesis Testing Code






Write your GitHub token:



Save your GitHub token in the Hypothesis_Testing/tokens/github-token.txt file to allow the scripts to access the GitHub API.





Place the required files:



Copy authors.json and folder_structure.json from the Devotion/frontend/client/src folder into the Hypothesis_Testing/preprocess-input folder, inside a new folder named after your project.





Execute the hypothesis testing for each research question:



First, run the Python script located in the preprocess folder.

Then, run the Python script in the hypothesis folder.





Output:



Results, including data points, plots, and the outcomes of normality and correlation tests, will be saved in the hypothesis-output folder.






Survey


This directory contains three files related to the practitioner survey:



"Anonymized-Stickiness Score Survey (Responses).xlsx": The anonymized dataset containing all responses.

"Survey_Questions.pdf": The full list of survey questions as presented to participants.

"Survey_Analytics.pdf": Visualization graphs automatically generated by Google Forms based on the collected responses.




Appendix


This directory includes the density plots generated for each research question and for each project shown in the Appendix.