Add GitHub Codespaces integration.
This PR makes it easier to onboard new contributors to Bitcoin Core by providing a web based development environment that is trivial to setup.
By starting a GitHub Codespace instance using this integration in this PR a developer gets access to a configured C++ IDE with typical IDE features such as working code completion, refactoring tools (rename function, etc.), etc.
In addition the IDE environment a Linux environment is spun up by GitHub Codespaces. This Linux environment is accessible via a web based terminal. A new developer can run say make && src/bitcoind -regtest in the web based terminal after making a small change and see the results of his/her work immediately while staying in the browser. Instant gratification! :)
GitHub Codespaces is not magic. It is simply the combination of three things:
- A web based editor/IDE
- A web based terminal
- Access to a private Linux instance which is accessible via said web based terminal
How to test this PR
Request access to GitHub Codespaces which is currently in beta:
- Go to https://github.com/features/codespaces and apply: applications seem to be approved automatically within a day or two AFAICT.
Once you have beta access to GitHub Codespaces:
- Go to https://github.com/codespaces.
- Click "Create your first codespace".
- You can now either enter a repo/branch you control which contains the commit from this PR, or you can use my demo repo
bitcoin-codespaces/bitcoinand the branchmaster. I've setup the demo repo to allow for easy testing of this PR: see this diff for the changes betweenbitcoin-codespaces:masterandbitcoin:master. If/when this PR is mergedbitcoin/bitcoinwill be the repo to use of course :) - Click "Create codespace".
- Wait until the initial setup finishes: this will take a couple of minutes on first run.
- Enjoy your new web based IDE! Try making some small change, type
make && src/bitcoind -regtestin the web based terminal and enjoy your work! :)
<img src="https://docs.github.com/assets/images/help/codespaces/codespace-overview.png" />
