This document discusses approaches to containerizing operating systems and development environments to automate software project setup and decrease onboarding time. It analyzes different layers involved in coding (project source, libraries, OS packages, OS, device) and whether their setup is declarative. Containerizing the OS and using tools like Docker, Nix, and containerized dev environments can automate previously manual setup steps and ensure consistency across environments. Fully automated solutions include using online IDE services while bringing your own browser and device.