&gt; This is just going to be a preference then.<p>No, it is not.<p>* It&#x27;s not always that you have internet connection when building
your code.<p>* It&#x27;s not always that you have access to the website code is downloaded from
(websites break, and companies have different policies about internet), and
even if you do, you don&#x27;t always have it direct (e.g. proxy).<p>* And at the last, people will build code for various purposes,
<i>including building packages</i>. Building a package should be a repeatable
operation and should always use only clean source (no artifacts from previous
builds), and downloading random things on <i>every build from clean source</i> is
very easy way to break the process.<p>&gt;&gt; It means it&#x27;s pretty much random for your purposes.<p>&gt; We are just going to have to agree to disagree on this one. First of all, you _already_ need an equally &#x27;random&#x27; binary: rustc itself.<p>No. I downloaded Rust compiler myself (or had it installed from a package).
I controlled that, it didn&#x27;t hit me in my face unexpectedly.<p>&gt; Which is also bootstrapped.<p>s&#x2F;also&#x2F;&#x2F;. Cargo <i>is not</i> bootstrapped, because it needs pre-built Cargo to build itself.
Compare this to Rust compiler: you start with nothing but C(++? I don&#x27;t
remember) compiler, and end with Rust compiler. No intermediate download
involved.<p>&gt; Second, it&#x27;s not clear to me why bootstrapping is valid for a compiler, but not for any other kind of project. Cargo is a build system, written in Rust, so it uses Rust&#x27;s build system.<p>It&#x27;s not <i>invalid</i>, quite the contrary. It&#x27;s just Cargo doesn&#x27;t boostrap
itself out of clean code. It&#x27;s that simple. I wouldn&#x27;t have as big problem
with it if its build process produced an intermediate, crippled Cargo binary.<p>I would then complain about requiring external dependencies to be <i>downloaded</i>
(in contrast to <i>included</i>), but that would be difference on strategy
preferences.