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)?


Reply via email to