This repository contains the scripts and tooling used for analyzing technical feedback in fork-based software product line (SPL) developments. It accompanies the paper "Feedback Analysis in Software Product Line Forked Developments", accepted at SPLC 2025.
The analysis covers:
- Extraction of commits, issues, and pull requests from GitHub forks.
- Automatic tagging of development activity (e.g.,
testing
,fix
,config
, etc.). - Linking of activity to features inferred from project structure.
- Aggregation of traceability tuples into a unified feedback log.
- High-level visual and textual analysis.
We provide a ready-to-use Docker image:
docker pull drorganvidez/splc-feedback-artifact:latest
Make sure to provide your GitHub Personal Access Token in a .env
file:
echo "GITHUB_TOKEN=your_token_here" > .env
Then run the container:
docker run --rm -it \
--env-file .env \
-v "$PWD":/app \
drorganvidez/splc-feedback-artifact:latest
Once inside the container, you can run any step of the pipeline as usual:
python evaluation_03_feedback_log.py
python evaluation_04_analysis.py
git clone https://github.com/diverso-lab/splc2025_feedback_analysis
cd splc2025_feedback_analysis
python3.12 -m venv venv
source venv/bin/activate
pip install -r requirements.txt
cp .env.example .env
source .env
The full pipeline consists of 4 steps. You can run steps 3–4 directly using the included data, or perform the full analysis from scratch.
Collect commits, issues, and PRs from all forks in forks.json
:
python evaluation_01_data_source.py
Generate tuples of the form:
(feature, source_type, tag, fork, timestamp)
python evaluation_02_data_processing.py
Aggregate all data into feedback_log.json
:
python evaluation_03_feedback_log.py
Create summaries and figures:
python evaluation_04_analysis.py
python evaluation_05_visuals.py
A minimal demo is available for testing purposes:
python proof_of_concept_01_data_source.py
python proof_of_concept_02_data_processing.py
python proof_of_concept_03_analysis.py
python proof_of_concept_04_charts.py
This version uses synthetic data and does not require a GitHub token.
- Go to https://github.com/settings/tokens
- Click "Generate new token" → choose "Classic token"
- Select scope:
repo
- Save the token and add it to a file:
echo "GITHUB_TOKEN=your_token_here" > .env
feedback_log.json
: Aggregated feedback tuples.figures/*.svg
and*.png
: Visual output for publication.- Console summaries.
The structure of the repository is as follows:
.
├── evaluation_01_data_source.py
├── evaluation_02_data_processing.py
├── evaluation_03_feedback_log.py
├── evaluation_04_analysis.py
├── evaluation_05_visuals.py
├── evaluation_06_heatmap_graph.py
│
├── feature_introduction_timeline.py
├── tag_evolution.py
├── top_n_features.py
│
├── proof_of_concept/
│ ├── proof_of_concept_01_data_source.py
│ ├── proof_of_concept_02_data_processing.py
│ ├── proof_of_concept_03_analysis.py
│ └── proof_of_concept_04_charts.py
│
├── figures/ # Generated charts
├── feedback_log.json # Final output log
├── forks.json # Input list of forks
├── requirements.txt
├── Dockerfile
├── .env.example
-
Estimated runtime (25 forks):
evaluation_01_data_source.py
: ~5–7 minevaluation_02_data_processing.py
: ~1–2 minevaluation_03_feedback_log.py
: ~30 secevaluation_04_analysis.py
: ~2 min
-
Disk space required: ~500 MB (including output figures)
To cite this artifact, please reference:
D. Romero-Organvidez, O. Díaz, Y. Tang, D. Benavides. Feedback Analysis in Software Product Line Forked Developments. Artifact paper. SPLC 2025. A Coruña, Spain.