> How will it handle external dependencies? I don't think it should. External dependencies are way too complex. They come in different flavors on different systems. On Windows, for example, you don't have a package manager, and you'll have to ship these dependencies with the program using an installer. On each Linux distro there is custom package manager, each having its own strategy of naming things and its own versioning policy. It is impossible to unify them, and I don't think that Rust package manager should attempt to do this.
> I don't understand this. A package manager specific to Rust is > additional software, just like 0install. 0install has full support for > installing dependencies via the system package manager on many systems > if desired. *End users* won't need Rust package manager at all (unless they want to install development versions of Rust software). Only package maintainers and developers have to use it. End users just use their native package manager to obtain packages created by maintainers. If Rust would depend on zero install, however, end user will be *forced* to use zero install. I'm against of using zero install for the following reasons. First, it is just a packaging system. It is not supposed to help in building Rust software. But resolving build dependencies and invoking the compiler with correct paths to installed dependencies is crucial. How, for example, zero install would handle dependency to master branch of some source repository? What if I'm developing several packages which depend on different versions of the same package? Zero install allows installing multiple versions of the same package, yes, but how should I specify where these libraries are located to the compiler? How should I specify build dependencies for people who want to hack on my package? Majority of direct dependencies will be from the Rust world, and dedicated building/packaging tool would be able to download and build them automatically as a part of build process, and only external dependencies would have to be installed manually. With zero install you will have to install everything, including Rust-world dependencies, by yourself. Second, it is another package manager which is foreign to the system (unless the system uses zero install as its package manager, but I think only very minor Linux distros have that). Not only this is bad because having multiple distribution systems is confusing for the end users (BTW, as far as I can see, both Linux and Windows users don't want it. Linux users wouldn't want to have additional package manager, and majority of Windows users just don't know what package manager is and why they have to install some program which downloads other programs just in order for them to use this small utility. They are used to one-click self-contained installers. On Android you are forced to have self-contained packages, and zero install won't work there at all. Don't know anything about Mac, haven't used it). It also means additional impact on distribution maintainers. If Rust adopts zero install universally, then, because distribution maintainers won't support any build system but their own, they will have either to abandon Rust software at all or build and resolve their dependencies (including Rust ones) manually, as it is done with C/C++ now. They won't be able to use zero install because they simply can't depend on it. I think this will hurt Rust adoption a lot. Zero install may have integration with package systems, but looks like it is very brittle. According to [this page](http://0install.net/distribution-integration.html) it is package owner's duty to specify how native package dependencies should be resolved in each distribution. This is extremely fragile. I don't use Debian, for example, how would I know how my dependency is called there? When package owners won't write these mappings for every distribution, then this integration immediately becomes completely pointless. Also I'm not sure that zero install can integrate with every package manager it supports without additional tools, which means even more unneeded dependencies. Zero install package base is also very small. Distributions usually provide a lot more packages. Then, if zero install is the only way Rust software is packaged, I just won't be able to use these libraries unless someone, possibly myself, writes a zero install package definition for it. And this is extremely bad - I don't want to resolve transitive dependencies for my external dependencies, this is already done by my distribution maintainers. Having custom flexible build and packaging system which is used by developers and maintainers is a separation of concerns with very clean interfaces between software developers and software users. I believe that it should be created in order for Rust to be adopted at large, and rustpkg provides solid base for it. _______________________________________________ Rust-dev mailing list Rust-dev@mozilla.org https://mail.mozilla.org/listinfo/rust-dev