Skip to content

README.md for Interoperability Data

This repository represents interoperability data and the tools to generate it for the Fediverse.

Data

Data is contained in data. The subsections describe how it is generated

Running tests

By executing

./run.sh $APPLICATION $VERSION

you can generate the support tables. The data file will be in data/. The available versions for the applications can be found here.

Log files are stored in the logs directory with the name $APPLICATION. If the directory fediverse-pasture does not exist, the fediverse-pasture is downloaded automatically.

Manually running

By executing

./run_manual.sh $APPLICATION $VERSION

you can drop into a shell in the work container. Usually, one then executes the run_for.sh script. To manually run tests, one needs to

  • install the appropriate version of the python package fediverse-pasture-inputs.
  • Run the command python -mrunner $APPLICATION.
  • To leave the shell use CTRL+D (and not CTRL+C) to ensure the docker compose containers are shut down.

Further options of runner can be discovered by passing the --help flag.

New applications

Adding a new application is a multistep process

  • Add a new container to containers.funfedi.dev
  • Update the pasture with this information; step will probably be dropped
  • Integrate into data, for this the applications need to be updated runner.apps.
  • Investigate the output format from the application's API
  • If the application is not Mastodon API compatible, work needs to be done

New version of fediverse-pasture-inputs

On a new release of fediverse-pasture-inputs, update work/pyproject.toml to the latest version. This can usually be done by running

cd work
uv sync -U
cd ..

Following this, run

./run_update.sh --run_all > tmp
bash tmp

Without the --run_all flag only the applications with updated containers are run.

Testing new versions

Place the wheel file for the inputs into work, e.g.

work/fediverse_pasture_inputs-0.3.0a6-py3-none-any.whl

Then you can run a specific set of inputs via

./run_update.sh --run_all emoji > tmp
bash tmp

This has two effects, first the wheel mentioned above is used. Second the runner is only running for the inputs specified by emoji. This reduces the runtime. Then you can investigate these inputs via

cd work
uv pip install ./fediverse_pasture_inputs*.whl
uv run --no-sync python -mwriter tables --local --input_name emoji
cd website
uv run --no-sync mkdocs serve

Checking integrity of the data

test_versions.py contains some tests that ensure the integrity of the data. In particular

  • Are all expected applications present?
  • Do all files contain the same number of total tests run?
  • Did at least one test case pass?

Website

The website, https://data.funfedi.dev is generated from the data using tools found in work. Getting a development version running can be achieved via

cd work
uv sync -U
./build_docs.sh
uv run mkdocs serve

All commands will take some time.

funfedi.dev - support_tables

The support tables are generated via

cd work
uv run python -m writer website

The output is then contained in work/website.