Join GitHub today
GitHub is home to over 28 million developers working together to host and review code, manage projects, and build software together.Sign up
How does CKAN work?
Only one part of the CKAN infrastructure runs on your local PC: the client application that manages your game folders. To do this job, it maintains a registry of metadata, as well as a cache of downloads. The client's code lives in the CKAN repository.
The registry is generated from the CKAN-meta repository, which maintains one metadata file for each version of each mod, explaining how to download and install it. Refreshing the client downloads a compressed archive of this repository. To make a mod available to the client, its metadata must be added to this repository.
The cache is downloaded from the same links that are used when installing mods manually. CKAN does not maintain its own hosting servers.
The CKAN team maintains a bot that crawls known mods looking for new versions. The bot scans the NetKAN repository to find the mods to check, and it downloads the latest versions to inspect them for changes. Any new data it finds is added to the CKAN-meta repository. The bot's code is in the NetKAN-bot repository.
The bot runs about once every three hours. When it finishes a pass, it updates its status page at http://status.ksp-ckan.org/ with any errors it encountered. This can be used to identify problems with indexing new mod versions. This page's code is in the NetKAN-status repository.
CKAN-meta can be updated manually, as can NetKAN. This is done via pull requests on GitHub. These can be created by anyone, but merged only by members of the CKAN team.
When a mod is added to SpaceDock, the author can check a checkbox to opt in to CKAN, which auto-generates a pull request in the NetKAN repository. This is then reviewed by the team, often revised, and merged to add the mod to the index.
These pull requests are validated by scripts in the xKAN-meta_testing repository.