[rust-dev] cargo and (de)centralization
graydon at mozilla.com
Tue Jan 17 11:15:35 PST 2012
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
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
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.
More information about the Rust-dev