Skip to content

Discussion: Deliver VSCode devcontainer with Exercises #1056

Open
@CodeMan99

Description

@CodeMan99

What

I wonder how beneficial delivering a vscode devcontainer with every exercise would be.

Possible Gains

The primary goal here is that exercism download could create a full development environment. The only prerequisites are docker, vscode, and the vscode remote-containers extension.

This means that every language track could have a full IDE setup that is delivered with the exercise. This includes language setup, project dependencies, build tools, and even vscode extensions that help support the given language.

Stretch Goals

As vscode is already a cloud environment, it may be feasible to use vscode as the primary browser environment as well.

Downsides

Devcontainers are effectively a docker container. This means that you need significant computing power to actually take advantage of this amazing environment.

The normal workflow of a devcontainer results in use of two filesystems: the actual disk and the docker container. This can lead to strange permissions behavior. This is not normally a problem as devcontainers attempts to use the same uid & gid as your host system. However, it can be difficult to correct when the problem does occur.

Other Thoughts

Exercises do tend to lend themselves to very temporary environments. There may be a way to create a devcontainer that does not even use the host filesystem. My thought is that you install the exercism cli as a devcontainer feature. The host cli would then need to be responsible for communicating with the container's cli to actually download the exercise directly into the container's filesystem (and/or a docker volume).

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions