[rust-dev] cargo and (de)centralization

Graydon Hoare graydon at mozilla.com
Tue Jan 17 11:15:35 PST 2012


Hi,

We have a preliminary "package management system" called "cargo" that 
we're going to be shipping as part of our 0.1 release. We want this to 
be friendly and usable for people who are developing new rust code and 
experimenting with the language. It pretty much works now, thanks to 
elly's hard work, but remains a bit threadbare and doesn't quite have 
clearly-established conventions for use just yet. I'd like to establish 
some!

It was designed to accommodate decentralization -- supports an arbitrary 
number of package-listing "sources" that feed end-users -- but for the 
sake of making packages easily findable I'm *hoping* most users will 
register with a single central listing.

To this end, we have a repository "cargo-central" (at 
http://github.org/mozilla/cargo-central) that is wired into the default 
sources list retrieved from www.rust-lang.org when the 'cargo' tool 
initializes. I've given all users in the rust and rust-push groups on 
github access to this repository, for merging pull requests. I would 
*like* to incorporate all existing sources people are using into 
cargo-central and see if we can maintain "mostly centralized" indexing 
of packages as a normal community practice, rather than the 
currently-evolving habit of every user making their own sources file. 
That is imo a mistake, an over-use of the decentralization mechanism for 
little gain.

Is this ok? If so, and if you happen to have a sources.json file you're 
already using to point to your package by symbolic name, can you tell me 
about it so I can fold its contents into cargo-central?

All a sources file registry does is map symbolic-name -> fetch 
mechanism. The underlying repositories are still decentralized. You 
don't need to update it every time you push new versions of your library 
or anything. It's a one-time registration. So I *hope* there won't be 
too much grief over centralization-by-default at this level. You can 
absolutely use secondary sources of your own making, it's just a matter 
of which habit we encourage users to adopt (and make easy workflow for). 
If most people register with cargo-central, most packages should be 
easily findable by short-name, most of the time.

-Graydon


More information about the Rust-dev mailing list