convco
convco copied to clipboard
Immutable Development Environments
PROGRAMMING TASK
Description of Task
- Add required dotfiles and Dockerfile for creating a unified development environment for all contributors
Reason or Need for Change
- To ensure all contributors have the same set of tools, toolchain version, and toolchain configuration and lower barrier to entry and eliminate
it works on my machine
problems, it would be best to set up a Docker backed and maybe even a Vagrant backed environments, pre-provisioned with the Toolchain version and all the other tools used when developing Convco.
Design / Proposal
- create a Dockerfile to be used as a development environment. Make it based on alpine, As it is easier to make statically linked binaries on Alpine and add all the tools that is used when working on Convco's development
- Visual Studio Code is a very popular code editor. add
.devcontainer/devcontainer.json
config file so that contributors can use the Dockerized dev environment with Visual Studio Code Remote - Containers to quickly bring up a workspace - add
.vscode/setting.json
,.vscode/extensions.json
and.vscode/tasks.json
to predefined language server configuration, required extensions, and tasks for developers using VSCode to work on Convco. -
Gitpod is another popular service, which enables programmers to quickly spin up a work environment, backed by their k8s cluster and start working either right in their browser or, ssh into the created container and use Vim or use the Gitpod container as a backend for Visual Studio Code Remote - SSH extension. this needs :
- a Docker image, specific to Gitpod, with Dropbear and Chisel installed
-
.gitpod.yml
file that uses the Gitpod specific Docker image and also starts up Dropbear and Chisel to enable developers to SSH into the environment for work, in case they do not like to use their browser as a code editor.
I usually like some freedom in how devs like to work. Maybe it is good to add these files to a /contrib
folder so people can use them if they want.
@hdevalke addressed in #29