ASE'24: Balancing the Quality and Cost of Updating Dependencies
Creators: name: Jaime, Damien
name: Poizat, Pascal
name: EL HADDAD, Joyce
name: Degueule, Thomas
Publisher: name: Zenodo
Year: 2024
Subjects: Software maintenance
Software dependency
Dependency update

description: This archive contains the datasets, results, notebooks, and tools used for the paper "Balancing the Quality and Cost of Updating Dependencies".



It's contain the updater and experiments code, but a GitHub repository is also available for each project.

 




The contents of this Zenodo archive are organized as follows:




goblinUpdater: This folder contains the goblin updater code as presented in the paper.

goblinUpdater_experiments: This folder contains the code used for conducting the experiments.

results_data: This folder includes all experiment results, along with analysis and figure-generating notebooks.

datasets: This folder contains the project datasets used in the experiments.

goblinWeaver_data: This folder ensures that experiments can be restarted in the exact state as when the paper was initially conducted.

Proof_LP_Update_project_rooted_graph.pdf: This file contains proof sketches demonstrating the correctness of the linear program encoding.

All the other files allow you to launch the prerequisites for running experiments using Docker.


Procedure for relaunching experiments





Among the experiments, "runUpdater" should be executed first, with the others based on the results obtained by this one.

The experiments are therefore carried out in two stages.







Execution results will be accessible in a new "outfiles" folder at goblinUpdater_experiments folder root.

 





To run one of the following experiments "compileAndTest", "naiveUpdate" or "compareConfQualityAndCost", you must place the results from the "runUpdater" experiment into a "results" folder located at the root of the project.





Requirements: Docker (https://docs.docker.com/engine/install/)







Download and extract the entire contents of this Zenodo archive.





Make sure Docker is running.



From the root directory of the folder, run the command "docker-compose up --build".➡️ This will setup the Neo4j database containing the Maven Central graph, as well as the Weaver API for integrating and enriching this database.

Once the API has been launched, open a new terminal and go to the "goblinUpdater_experiments" folder and run the command "sh run.sh".This will launch the "runUpdater" experiment⚠️ This process can take several weeks.

To run one of the other experiments ("compileAndTest", "naiveUpdate" or "compareConfQualityAndCost"), you need to put the results of the "runUpdater" experiment obtained in the previous step in the "results" folder in the goblinUpdater_experiments folder root.➡️ If you don't want to wait weeks for execution, you can put the "execution" folder in the "results_data" folder. 

Modify the goblinUpdater_experiments/src/main/resources/configuration.yml file to choose the experiment you want to execute and re-run the "run.sh" script.





Procedure for run the updater only

Requirements: Docker, Java 17



To run the updater on a desired Java Maven project with a 'pom.xml' file, follow these steps:




Download and extract the entire contents of this Zenodo archive.

Make sure Docker is running.

At the root of the folder, run the command "docker-compose up --build". ➡️This will setup the Neo4j database containing the Maven Central graph, as well as the Weaver API for integrating and enriching this database.

Once the API has been launched, run on a new terminal the command:java -DweaverUrl=http://localhost:8080 -DprojectPath=<PROJECT TO ANALYSE>-DconfFile=goblinUpdater_experiments/updater/conf_2_global.yml -jar goblinUpdater_experiments/updater/goblinUpdater-1.0.0-jar-with-dependencies.jar




Currently, the results are displayed in the terminal.
For a quick test, reviewers can replace "<PROJECT TO ANALYSE>" by "./goblinUpdater".

This will allow the tool to analyze the goblinUpdater project, which takes approximately 8 minutes.

For additional information on configuring the updater, please refer to the 'goblinUpdater/gUpdaterConfig_TEMPLATE.yml'.


 

The GitHub repository of the goblinUpdater is available here: https://github.com/Goblin-Ecosystem/goblinUpdater

The GitHub repository of the experiments is available here: https://github.com/Goblin-Ecosystem/goblinUpdater-exeriments

The GitHub repository of the goblinWeaver is available here: https://github.com/Goblin-Ecosystem/goblinWeaver