Channels and Repositories
Channels are JSON files hosted on a URL that contains a list of repository URLs. See example-channel.json for the format. When a user requests to install a package, their channels are queried for a list of repositories. By default, a single channel is included with Package Control, https://packagecontrol.io/channel.json. The only reason to create another channel is if you want to create a private distribution for a closed group of people.
Repositories are JSON files hosted on a URL that contain a list of one or more packages. See example-repository.json for the format. The JSON structure allows for specifying platforms (windows, osx, linux), compatible versions of Sublime Text, labels, URLs and more. The default channel includes a number of third-party repositories, but also a single, centralized repository for developers who are using GitHub or BitBucket tag-based releases. This way a package only ever needs to be added to the repository once and almost all futher updates to the package can be performed via the GitHub or BitBucket user interfaces.
Upgrading Repositories to the Newest Schema Version
The package ChannelRepositoryTools includes a command Upgrade Repository Schema (Current File) that will upgrade the currently open repository JSON to the newest schema_version.
Once the file has been upgraded, most packages can then be migrated into the default repository. Most uses of custom repository JSON files was due to deficiencies with schema_version 1.2 and 2.0.