File uploads: We have fixed an issue which caused file uploads to fail. We apologise for the inconvenience it may have caused.

There is a newer version of the record available.

Published August 9, 2024 | Version 1.0.0
Publication Open

ASE'24: Balancing the Quality and Cost of Updating Dependencies

  • 1. SAP
  • 2. ROR icon Sorbonne Université
  • 3. ROR icon Centre National de la Recherche Scientifique
  • 4. ROR icon Laboratoire de Recherche en Informatique de Paris 6
  • 5. ROR icon Université Paris Dauphine-PSL
  • 6. LAMSADE
  • 7. ROR icon Université de Bordeaux
  • 8. ROR icon Laboratoire Bordelais de Recherche en Informatique

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/)

  1. Download and extract the entire contents of this Zenodo archive.
  2. Make sure Docker is running.
  3. 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.
  4. 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.
  5. 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. 
  6. 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:
  1. Download and extract the entire contents of this Zenodo archive.
  2. Make sure Docker is running.
  3. 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.
  4. 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

Files

ASE24_data_and_tools.zip

Files (3.7 GB)

Name Size Download all
md5:df574a6abfd14a23d0b1633c06c79ca7
3.7 GB Preview Download