First of all, thanks to all developers of current packaging system in Julia - it has very convenient REPL-based interface, graceful treatment of binary dependencies and it never was that easy to make and submit changes to existing packages. So please don't consider this post as critique, but rather as a questions and attempt to make packaging system even better.
Storing package code on GitHub makes perfect sense for me - it's free hosting and it makes it easy to add / clone packages, as well as start new projects. However, for registering and publishing packages GitHub (or, more precisely, METADATA.jl) looks like overcomplicated solution. Unless I miss something, METADATA.jl is used only for: 1. Keeping a reviewed list of registered packages. 2. Tracking package versions and requirements. Which boils down to few CRUD operations and web interface for approving or rejecting changes. With METADATA.jl to publish new package one should: 1. Clone METADATA.jl to his / her own account. 2. Add GitHub repository as remote. 3. Make changes to the local repository and commit. 4. Push to own repository on GitHub. 5. Open pull request. Normally, Pkg.publish() does all of this (if it works - for me it doesn't for about 3-4 months already), so general, good day scenario is covered. But when something goes wrong (GitHub access token is broken, local copy of METADATA.jl gets outdated, pull request is rejected, etc.), user has to repeat everything manually. Same thing applies to any advanced operation such as moving repository, renaming a user, reverting local METADATA.jl, etc. So I wonder, is there anything else that hosting METADATA.jl on GitHub gives to us? If not, does it make sense to consider other options (e.g. create a separate service for storing metadata)?