github-as-market-device

Codebase for the paper ...

https://github.com/asgerkromand/github-as-market-device

Science Score: 44.0%

This score indicates how likely this project is to be science-related based on various indicators:

  • CITATION.cff file
    Found CITATION.cff file
  • codemeta.json file
    Found codemeta.json file
  • .zenodo.json file
    Found .zenodo.json file
  • DOI references
  • Academic publication links
  • Academic email domains
  • Institutional organization owner
  • JOSS paper metadata
  • Scientific vocabulary similarity
    Low similarity (13.6%) to scientific vocabulary
Last synced: 6 months ago · JSON representation ·

Repository

Codebase for the paper ...

Basic Info
  • Host: GitHub
  • Owner: asgerkromand
  • License: mit
  • Language: Jupyter Notebook
  • Default Branch: main
  • Homepage:
  • Size: 4.15 MB
Statistics
  • Stars: 0
  • Watchers: 0
  • Forks: 0
  • Open Issues: 0
  • Releases: 0
Created 9 months ago · Last pushed 6 months ago
Metadata Files
Readme License Citation

README.md

📄 Github as Market Device

Authors: Asger Balsby Kromand, Eva Iris Otto & Anders Blok

Journal: Consumption Markets & Culture

[TO-DO] DOI: doi.org/xxxx


[TO-DO]

📚 Abstract

[Abstract]

📂 Repository Structure

├── appendix/ # Datasets or download scripts ├── notebooks/ # Jupyter notebooks for scraping and analysis ├── outputs/ # Output files: datasets, plots and log ├── resources/ # Codebase - functions, scripts, and config.ini ├── results/ # Figures and tables from the paper ├── .python-version ├── CITATION.cff ├── github_terminology.txt # Describing star, follow, follow ├── LICENSE ├── pyproject.toml # Configuration file for uv environment ├── README.md ├── requirements.txt # Dependency file using pip └── uv.lock # Dependency file for using uv sync

🛠 Installation & Environment

In general we recommend using the package manager uv for creating an uv virtual environment (venv) by using the uv.lock file.

For other environment options, we have also included a requirements.txt file, which in general can be combined with pip install using pip install -r requirements.txt.

Step 1: Cloning the repository using git

Using your terminal, move to the desired location and run:

```bash

Clone repository

git clone https://github.com/asgerkromand/github-as-market-device.git cd github-as-market-device ```

Step 2: Create the environment

Option 1: Using pip

```bash

Create uv virtual environment from file

uv venv # Creates a fresh .venv in your working directory source venv/bin/activate # On Windows: venv\Scripts\activate uv sync # Installs dependencies into virtual environment ```

Option 2: Using pip

bash python3 -m venv venv source venv/bin/activate # On Windows: venv\Scripts\activate pip install -r requirements.txt

Step 3: Required: Create additional files

\texttt{config.ini}

Create a configuration (config.ini) file at "resources/config.ini".

The config.ini file will contatin your github token, which you can generate by following this guide.

The config.file should be written as: bash [github] access_token = <your-token>

Be aware, that must not be inclosed by ' or " in a config.ini file.

\texttt{filepaths.py}

To follow our example, we recommend creating a filepath system using the pathlib library. The file should be called filepaths.py and created at "resources/filepaths.py".

NB. For our filepaths, we created to sets, as the personal data had to be stored on a secure drive, where it was not feasible to put the codebase.

▶️ Usage

Notebooks

The scraping, sorting, vizualising and analysis is performed in the notebooks, and the notebooks come in chronological order representing the pipeline for our paper.

In the notebooks 1-5, the scraping and sorting of data happens. In notebook 6 the networks i visualized, and in notebook 7 the edges are explored more qualitatively. Lastly, the descriptive tables for both the analysis part and the additional tables for the appendix are produced.

These notebooks represent the methodological pipeline use in our paper. Running them now, will not reproduce the original dataset used to produce the networks and tables in our paper.

IMPORTANT: In order to run the pipeline, you need to manually input to files:* An initial company list (.csv) to input for the notebook "1. Collecting first-tier users.ipynb", and a second-tier company list (also .csv) as input for the notebook "2. Creating first-tier dataset.ipynb". For examples: See "output/secondtiercompanies.csv" and "output/initial_list.csv".

Generation of appendix

The appendix -- located at "appendix/appendix.pdf" -- is generated using Overleaf. You can view the Overleaf document here.

The tables in the overleaf document are based on the data columns located in "appendix/appendix_files".

📌 Notes

Note on reproducibility of code

The data files in this repository are not the original datasets used to produce the tables and networks presented in the paper. The original data was collected at an earlier stage, but running the code now would generate similar data using the same methodological steps, and is therefore reproducible in this sense. Some output files are dummy files included to protect personal data.

📜 Citation

If you use this code or data, please cite:

[TO-DO]

bibtex @article{lastname2025title, title={Title of the Paper}, author={Last, First and Others}, journal={Journal Name}, year={2025}, doi={10.xxxx/xxxxx} }

📄 License

MIT License. For specification see file "LICENSE".

🙌 Acknowledgments

This paper is part of the DISTRACT project. DISTRACT is funded by an Advanced Grant from the European Research Council. Period: 1 January 2020 to 31 December 2024.

Views and opinions expressed are however those of the author(s) only and do not necessarily reflect those of the European Union or the European Research Council Executive Agency. Neither the European Union nor the granting authority can be held responsible for them.

image

Owner

  • Name: Asger
  • Login: asgerkromand
  • Kind: user
  • Location: Copenhagen
  • Company: @SODAS-KU

Working at SODAS-UCPH

Citation (CITATION.cff)

cff-version: 1.2.0
message: "If you use this codebase, please cite it as below."
title: "GitHub as Market Device: Attention and Collaboration Networks in a Local Proprietary App Ecosystem"
authors:
  - family-names: "Kromand"
    given-names: "Asger Balsby"
    affiliation: "Center for Social Data Science, University of Copenhagen, Copenhagen, Denmark"
  - family-names: "Blok"
    given-names: "Anders"
    affiliation: "Department of Food and Resource Economics and Center for Social Data Science, University of Copenhagen, Copenhagen, Denmark"
    orcid: "https://orcid.org/0000-0002-3403-698X"
  - family-names: "Otto"
    given-names: "Eva Iris"
    affiliation: "Department of Communication, University of Copenhagen, Copenhagen, Denmark"
    orcid: "https://orcid.org/0000-0002-1060-1219"
date-released: 2025-01-01
version: "0.1.0"
license: MIT
type: software
repository-code: https://github.com/asgerkromand/github-as-market-device
preferred-citation:
  type: journal-article
  title: "GitHub as Market Device: Attention and Collaboration Networks in a Local Proprietary App Ecosystem"
  authors:
    - family-names: "Kromand"
      given-names: "Asger Balsby"
      affiliation: "Center for Social Data Science, University of Copenhagen, Copenhagen, Denmark"
    - family-names: "Blok"
      given-names: "Anders"
      affiliation: "Department of Food and Resource Economics and Center for Social Data Science, University of Copenhagen, Copenhagen, Denmark"
      orcid: "https://orcid.org/0000-0002-3403-698X"
    - family-names: "Otto"
      given-names: "Eva Iris"
      affiliation: "Department of Communication, University of Copenhagen, Copenhagen, Denmark"
      orcid: "https://orcid.org/0000-0002-1060-1219"
  journal: "Consumption Markets & Culture"
  year: 2025
  doi: 10.xxxx/your-paper-doi

GitHub Events

Total
  • Delete event: 16
  • Push event: 24
  • Create event: 13
Last Year
  • Delete event: 16
  • Push event: 24
  • Create event: 13

Dependencies

GithubAsMarketDevice.egg-info/requires.txt pypi
  • beautifulsoup4 >=0.0.2
  • dataclasses >=0.8
  • ipykernel >=6.29.5
  • ipython >=8.12.3
  • jupyter >=1.1.1
  • lxml >=5.4.0
  • matplotlib *
  • networkx >=3.1
  • numpy *
  • openpyxl >=3.1.5
  • pandas *
  • pyarrow >=17.0.0
  • pygithub >=2.6.1
  • regex >=2024.11.6
  • scikit-learn *
  • seaborn >=0.13.2
  • tabulate >=0.9.0
  • tqdm *
pyproject.toml pypi
  • beautifulsoup4 >=0.0.2
  • dataclasses >=0.8
  • ipykernel >=6.29.5
  • ipython >=8.12.3
  • jupyter >=1.1.1
  • lxml >=5.4.0
  • matplotlib *
  • networkx >=3.1
  • numpy *
  • openpyxl >=3.1.5
  • pandas *
  • pyarrow >=17.0.0
  • pygithub >=2.6.1
  • regex >=2024.11.6
  • scikit-learn *
  • seaborn >=0.13.2
  • tabulate >=0.9.0
  • tqdm *
requirements.txt pypi
  • anyio ==4.5.2
  • appnope ==0.1.4
  • argon2-cffi ==23.1.0
  • argon2-cffi-bindings ==21.2.0
  • arrow ==1.3.0
  • asttokens ==3.0.0
  • async-lru ==2.0.4
  • attrs ==25.3.0
  • babel ==2.17.0
  • backcall ==0.2.0
  • beautifulsoup4 ==4.13.4
  • bleach ==6.1.0
  • certifi ==2025.1.31
  • cffi ==1.17.1
  • charset-normalizer ==3.4.1
  • colorama ==0.4.6
  • comm ==0.2.2
  • contourpy ==1.1.1
  • contourpy ==1.3.2
  • cryptography ==44.0.2
  • cycler ==0.12.1
  • dataclasses ==0.8
  • debugpy ==1.8.14
  • decorator ==5.2.1
  • defusedxml ==0.7.1
  • deprecated ==1.2.18
  • et-xmlfile ==2.0.0
  • exceptiongroup ==1.2.2
  • executing ==2.2.0
  • fastjsonschema ==2.21.1
  • fonttools ==4.57.0
  • fqdn ==1.5.1
  • h11 ==0.16.0
  • httpcore ==1.0.9
  • httpx ==0.28.1
  • idna ==3.10
  • importlib-metadata ==8.5.0
  • importlib-resources ==6.4.5
  • ipykernel ==6.29.5
  • ipython ==8.12.3
  • ipywidgets ==8.1.6
  • isoduration ==20.11.0
  • jedi ==0.19.2
  • jinja2 ==3.1.6
  • joblib ==1.4.2
  • json5 ==0.12.0
  • jsonpointer ==3.0.0
  • jsonschema ==4.23.0
  • jsonschema-specifications ==2023.12.1
  • jupyter ==1.1.1
  • jupyter-client ==8.6.3
  • jupyter-console ==6.6.3
  • jupyter-core ==5.7.2
  • jupyter-events ==0.10.0
  • jupyter-lsp ==2.2.5
  • jupyter-server ==2.14.2
  • jupyter-server-terminals ==0.5.3
  • jupyterlab ==4.3.6
  • jupyterlab-pygments ==0.3.0
  • jupyterlab-server ==2.27.3
  • jupyterlab-widgets ==3.0.14
  • kiwisolver ==1.4.7
  • markupsafe ==2.1.5
  • matplotlib ==3.7.5
  • matplotlib-inline ==0.1.7
  • mistune ==3.1.3
  • nbclient ==0.10.1
  • nbconvert ==7.16.6
  • nbformat ==5.10.4
  • nest-asyncio ==1.6.0
  • networkx ==3.1
  • notebook ==7.3.3
  • notebook-shim ==0.2.4
  • numpy ==1.24.4
  • openpyxl ==3.1.5
  • overrides ==7.7.0
  • packaging ==25.0
  • pandas ==2.0.3
  • pandocfilters ==1.5.1
  • parso ==0.8.4
  • pexpect ==4.9.0
  • pickleshare ==0.7.5
  • pillow ==10.4.0
  • pkgutil-resolve-name ==1.3.10
  • platformdirs ==4.3.6
  • prometheus-client ==0.21.1
  • prompt-toolkit ==3.0.51
  • psutil ==7.0.0
  • ptyprocess ==0.7.0
  • pure-eval ==0.2.3
  • pyarrow ==17.0.0
  • pycparser ==2.22
  • pygithub ==2.6.1
  • pygments ==2.19.1
  • pyjwt ==2.9.0
  • pynacl ==1.5.0
  • pyparsing ==3.1.4
  • python-dateutil ==2.9.0.post0
  • python-json-logger ==3.3.0
  • pytz ==2025.2
  • pywin32 ==310
  • pywinpty ==2.0.14
  • pyyaml ==6.0.2
  • pyzmq ==26.4.0
  • referencing ==0.35.1
  • regex ==2024.11.6
  • requests ==2.32.3
  • rfc3339-validator ==0.1.4
  • rfc3986-validator ==0.1.1
  • rpds-py ==0.20.1
  • scikit-learn ==1.3.2
  • scipy ==1.10.1
  • send2trash ==1.8.3
  • setuptools ==75.3.2
  • six ==1.17.0
  • sniffio ==1.3.1
  • soupsieve ==2.7
  • stack-data ==0.6.3
  • terminado ==0.18.1
  • threadpoolctl ==3.5.0
  • tinycss2 ==1.2.1
  • tomli ==2.2.1
  • tornado ==6.4.2
  • tqdm ==4.67.1
  • traitlets ==5.14.3
  • types-python-dateutil ==2.9.0.20241206
  • typing-extensions ==4.13.2
  • tzdata ==2025.2
  • uri-template ==1.3.0
  • urllib3 ==2.2.3
  • wcwidth ==0.2.13
  • webcolors ==24.8.0
  • webencodings ==0.5.1
  • websocket-client ==1.8.0
  • widgetsnbextension ==4.0.14
  • wrapt ==1.17.2
  • zipp ==3.20.2
uv.lock pypi
  • 141 dependencies