> This is just going to be a preference then.
No, it is not.
* It's not always that you have internet connection when building
your code.
* It'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't always have it direct (e.g. proxy).
* And at the last, people will build code for various purposes,
including building packages. 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 every build from clean source is
very easy way to break the process.
>> It means it's pretty much random for your purposes.
> We are just going to have to agree to disagree on this one. First of all, you _already_ need an equally 'random' binary: rustc itself.
No. I downloaded Rust compiler myself (or had it installed from a package).
I controlled that, it didn't hit me in my face unexpectedly.
> Which is also bootstrapped.
s/also//. Cargo is not bootstrapped, because it needs pre-built Cargo to build itself.
Compare this to Rust compiler: you start with nothing but C(++? I don't
remember) compiler, and end with Rust compiler. No intermediate download
involved.
> Second, it'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's build system.
It's not invalid, quite the contrary. It's just Cargo doesn't boostrap
itself out of clean code. It's that simple. I wouldn't have as big problem
with it if its build process produced an intermediate, crippled Cargo binary.
I would then complain about requiring external dependencies to be downloaded
(in contrast to included), but that would be difference on strategy
preferences.