This book is about getting computer programs from one machine to another and having them still work when they get there. This is the problem of software deployment. Though it is a part of the ?eld of Software Con?guration Management (SCM), it has not been a subject of academic study until quite recently. The development of principles and tools to support the deployment process has largely been relegated to industry, system administrators, and Unix hackers. This has resulted in a large number of often ad hoc tools that typically automate manual practices but do not address fundamental issues in a systematic and disciplined way. Deployment problems also seem curiously resistant to automation: the same concrete problems appear time and again. Deployment is especially dif?cult in heavily component-based systems—such as Unix-based open source software—because the effort of dealing with the dependencies can increase super-linearly with each additional dependency. This book describes a system for software deployment called Nix that addresses many of the problems that plague existing deployment systems.