Skip to content

Instantly share code, notes, and snippets.

@pjf
Last active August 29, 2015 14:09
Show Gist options
  • Save pjf/d203eec5fb3dc61b5fc9 to your computer and use it in GitHub Desktop.
Save pjf/d203eec5fb3dc61b5fc9 to your computer and use it in GitHub Desktop.
CKAN release announcement

Introduction

When I first discovered Kerbal Space Program, I found it was great. And then I discovered the mods; and they turned a great game into an amazing one.

About 70 mod installs later, I realised that installing mods was time-consuming, and error-prone. Each mod seemed to have its own set of dependencies, its own way of being packaged, its own way of being installed. Worst of all, some mods would conflict with each other, something I'd often discover after it was already too late.

I saw the same problems were plaguing mod authors as well. Users would be asking for help because they had installed the wrong version, or were experiencing conflicts with existing mods.

Having searched for a better way to install and manage mods, I set about making my own. Taking lessons from decades of package installation and management experience in the Debian and Perl projects, each of which successfully manage tens of thousands of distinct packages, I am very glad to present to you...

The Comprehensive Kerbal Archive Network (CKAN)

The CKAN is a mod management solution for Windows, Mac and Linux that targets the .NET/Mono 4.0 framework. It leverages strong metadata about the mods it installs to ensure they are compatible with the user's version of KSP, free of conflicts, and are installed in a reliable and predictable fashion.

If you've used Linux, then the CKAN is apt-get for KSP. Like the App Store or Play Store for your phone, the CKAN knows which version of KSP you're running, which mods are compatible, and how to install, uninstall, and manage them.

The CKAN provides strong guarantees on consistency. It will not allow conflicting mods to be installed, nor a mod to be installed without its dependencies. It will never leave mods in a half-installed state. It will never overwrite a file owned by another mod, nor a mod that was installed outside of the CKAN.


Our stable release offers a command-line interface:

$ ckan.exe help

  update       Update list of available mods

  available    List available mods

  install      Install a KSP mod

  remove       Remove an installed mod

  scan         Scan for manually installed KSP mods

  list         List installed modules

  show         Show information about a mod

  clean        Clean away downloaded files from the cache

  ksp          Manage KSP installs

  version      Show the version of the CKAN client being used.

To get started, you'll want to download the client and run a ckan update to refresh its mod database:

$ ./ckan.exe update
Downloading updates...
Downloading https://github.com/KSP-CKAN/CKAN-meta/archive/master.zip
Updated information on 60 available modules

The client will automatically configure itself if it can find your KSP install. If it can't find your install, you can tell it where to find it:

$ ckan.exe ksp add default /path/to/my/KSP/install

You can list available mods:

$ ckan.exe available

Mods available for KSP 0.25.0

* AdvancedFlyByWire (1.2.3_0) - Advanced Fly-By-Wire
* AGExt (1.21a) - Action Groups Extended
* AJE (1.6.4) - Advanced Jet Engine (AJE)
* AMEG (1.1) - AMEG
* CommunityResourcePack (0.2.3) - Community Resource Pack
* CrewFiles (2.0.0.3) - CrewFiles
* CrossFeedEnabler (3.1) - Cross Feed Enabler
* CustomAsteroids (v1.1.0) - Custom Asteroids
* CustomAsteroids-Pops-Stock-Inner (v1.1.0) - Custom Asteroids (inner stock system data)
* CustomAsteroids-Pops-Stock-Outer (v1.1.0) - Custom Asteroids (outer stock system data)
* CustomBiomes (1.6.8) - Custom Biomes
* CustomBiomes-Data-RSS (v8.2.1) - Custom Biomes (Real Solar System data)
* CustomBiomes-Data-Stock (1.6.8) - Custom Biomes (Stock data)
* DangIt (0.4.4.2) - DangIt!
* DarkMultiPlayer (v0.1.6.2) - DarkMultiPlayer Client
* DeadlyReentry (v6.2.1) - Deadly Reentry Continued
* DogeCoinFlag (1.02) - Dogecoin Flag
* EngineIgnitor-Unofficial-Repack (3.4.1.1) - Engine Ignitor (repack)
* FerramAerospaceResearch (v0.14.3.2) - Ferram Aerospace Research
* Firespitter (6.3.5) - Firespitter
* FirespitterCore (7.0.5398.27328) - Firespitter Core
* HotRockets (7.25) - HotRockets! Particle FX Replacement
* InfernalRobotics (0.19.2) - Magic Smoke Industries Infernal Robotics
* Karbonite (0.4.4) - Karbonite
* KAS (0.4.9) - Kerbal Attachement System
* KerbalConstructionTime (1.0.3) - Kerbal Construction Time
* KerbalFlightIndicators (R8) - Kerbal Flight Indicators
* KerbalJointReinforcement (v2.4.4) - Kerbal Joint Reinforcement
* Kerb-fu (v0.20a) - Professor Phineas Kerbenstein's wonderous vertical propulsion emporium.
* kOS (0.14.2) - kOS: Scriptable Autopilot System
* LandingHeight (1.1) - Landing Height Display
* ModuleManager (2.5.1) - Module Manager
* ModuleRCSFX (3.1) - ModuleRCSFX
* ORSX (0.1.3) - Open Resource System Fork
* PlanetShine (0.2.2) - PlanetShine
* QuickRevert (v1.10) - QuickRevert
* RasterPropMonitor (v0.18.3) - RasterPropMonitor
* RasterPropMonitor-Core (v0.18.3) - RasterPropMonitor Core
* RCSLandAid (1.2) - RCS Landing Aid
* RealChute (1.2.5.3) - RealChute Parachute Systems
* RealFuels (rf-v8.1) - Real Fuels
* RealismOverhaul (v6.1.2c) - Realism Overhaul
* RealSolarSystem (v8.2.1) - Real Solar System
* RemoteTech (v1.5.1) - RemoteTech
* RetroFuture (1.7) - Retro-Future Planes
* RSSTextures2048 (1.0) - Real Solar System Textures - 2048 x 1024
* RSSTextures4096 (1.0) - Real Solar System Textures - 4096 x 2048
* RSSTextures8192 (1.0) - Real Solar System Textures - 8192 x 4096
* SRL (v1.31) - Simulate, Revert & Launch
* StageRecovery (1.5.1) - StageRecovery
* SXT (18.5) - SXT - Stock eXTension
* TACLS (v0.10.1) - TAC Life Support (TACLS)
* TACLS-Config-RealismOverhaul (v6.1.2c) - TAC Life Support (TACLS) - Realism Overhaul Config
* TACLS-Config-Stock (v0.10.1) - TAC Life Support (TACLS) - stock config
* TechManager (1.3) - TechManager
* Toolbar (1.7.7) - Toolbar
* TweakScale (v1.44) - TweakScale
* TWR1 (1.14) - Vertical Velocity Controller
* USITools (0.2.4) - Umbra Space Industries Tools

And installing them is easy:

$ ./ckan.exe install DogeCoinFlag
About to install...

 * DogeCoinFlag 1.02

Continue? [Y/N]

Downloading "https://kerbalstuff.com/mod/269/Dogecoin Flag/download/1.02"
15 kbps - downloading - 0 MiB left - 99%           
Installing mod "DogeCoinFlag 1.02"

Updating registry

Commiting filesystem changes

Rescanning GameData

Done!

However the CKAN is aware of dependencies, and is capable of finding and installing all the mods required for a working install:

$ ./ckan.exe install RealismOverhaul
About to install...

 * RealismOverhaul v6.1.2c (cached)
 * RealFuels rf-v8.1 (cached)
 * TACLS-Config-RealismOverhaul v6.1.2c (cached)
 * TACLS v0.10.1 (cached)
 * EngineIgnitor-Unofficial-Repack 3.4.1.1 (cached)
 * Toolbar 1.7.7
 * TweakScale v1.44 (cached)

Continue? [Y/N]

For a lightweight install, we can skip recommendations:

./ckan.exe install --no-recommends RealismOverhaul
About to install...

 * RealismOverhaul v6.1.2c (cached)
 * RealFuels rf-v8.1 (cached)
 * TACLS-Config-RealismOverhaul v6.1.2c (cached)
 * TACLS v0.10.1 (cached)

Continue? [Y/N]

You can also use --with-suggests to get an extended install, with suggested modules installed as well.

Some mods give you options as to which configuration or assets you can use:

$ ckan.exe install --no-recommends RealSolarSystem

Too many mods provide RSSTextures. Please pick from the following:

* RSSTextures2048 (Real Solar System Textures - 2048 x 1024)
* RSSTextures4096 (Real Solar System Textures - 4096 x 2048)
* RSSTextures8192 (Real Solar System Textures - 8192 x 4096)

$ ckan.exe install --no-recommends RealSolarSystem RSSTextures2048

About to install...

 * RSSTextures2048 1.0 (cached)
 * RealSolarSystem v8.2.1 (cached)

The CKAN is available for you to use right now. All our source code is released under an MIT license, and all mod meta-data under a CC-0 license.

Adding support for new mods

The CKAN is designed to be friendly to mod authors. There's no requirement for authors to include metadata in their files, or change their release process in any way. Where possible, new releases are indexed automatically from systems which provide us with release APIs. Dozens of mods already have CKAN support, and new ones are being added every day.

If you'd like to see more mods available via the CKAN, then we have a quickstart guide, along with a full metadata spec for more complex operations. Contributions are very welcome, and we'd love you to add your favourite mods. You do not need to be the author of a mod in order to write the metadata for it.

Experimental releases

An experimental release is also available. This supports an in-development GUI interface, as well as an upgrade command. Expect bugs if you're using the experimental release! When we believe these features are working as we'd like, we'll add them to the stable release.

Reporting bugs

You can run any command with --verbose or --debug at the end to see extra information as to what's going on.

Please report bugs and suggestions to our issues tracker on github.

Please include the output of ckan.exe version when reporting bugs.

Thanks

The CKAN has been an amazing team effort, with dozens of contributors providing code, metadata, advice, and support. However, I would like to personally thank:

  • nlight: For countless contributions, for endless patience with reviewing my code, for keeping me sane during many late nights coding.
  • invultri: For questioning how we do things, for providing great architectural advice, for expanding our test suite.
  • techman83: For endless amounts of enthusiasm, moral support, advice, and help.
  • darklight: For enthusiasm and vision, and the determination to make the CKAN great.
  • ippo: For making the documents amazing. For being so good at finding bugs. For always cheering me up.
  • NathanKell: For ludicrous amounts of support, for making the world a better place.

Further resources:

We love contributions of all sorts, and have just a few simple rules for those who wish to help the CKAN awesome!


Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment