Add dev container / codespace configuration (#12256)
Dev containers[1] provide a self-contained development environment that
can be tailored for a project. GitHub Codespaces[2] provide a cloud
hosted environment to run these containers in. This makes it easy to
provision a consistent development environment with developer tooling
already installed and configured that provide the following benefits:
1. Developer onboarding is simplified.
1. Easy to get environment setup and running
2. Reference environment is available, if developer is having issues
with local environment
2. Developer tooling is provided and automatically configured.
1. Python / C++ build tooling
2. Python / C++ code formatters / linters
3. Easy to provision cloud hosted environment via GitHub Codespace.
4. Easy to create ephemeral development environments to test new changes
1. Can be used to provision environments to test changes
and Pull Requests
This can ease several pain points that developers on-boarding to the
project can encounter. One of the problems I have seen with developers
new to the project (I am one of these) is having the baseline
development environment (Python / C++) and recommended tools (e.g. VS
Code Python / C++ extensions, linters, and autoformatters) installed and
configured to efficiently get started in the repository. For all
developers, this makes it easy to leverage ephemeral cloud hosted
development environments via GitHub Codespaces.
**Notes:**
- Compiling the project can run into trouble if the codespace has < 32
GB of RAM
1) https://docs.github.com/en/codespaces/setting-up-your-project-for-codespaces/introduction-to-dev-containers
2) https://docs.github.com/en/codespaces/overview