If you have ideas for features or implementation, please open an issue to record your thoughts.
Commits follow the Conventional Commits specification. These are used to automatically generate release notes.
PRs welcome, but as things are evolving rapidly, a conversation before any major changes is probably worthwhile.
If your PR involves multiple commits, they will most likely be squashed into a single commit so that there is a single line in the release notes, so please title the PR using the conventional commit message that should be used for that single commit.
For the most part, Contextive has been developed using Test-Driven Development. This maintains a high quality test suite with minimal manual regression testing when releasing new versions.
Although contributors are not required to use Test-Driven Development, we do request appropriate tests be included in any PRs.
All F# code should be formatted with Fantomas. If you use Visual Studio Code with the DevContainer (see below) this should happen automatically on save.
Each IDE that Contextive supports (either with a plugin, or with a raw language server) has a folder in the (src)[./src] folder. Please ensure the appropriate README.md
is updated if your change affects a particular IDE.
Key architectural decisions are tracked using ADRs (Architectural Decision Records) which can be found in the docs/adr folder. The MADR format is the current default.
If your PR or proposal includes major architectural changes, please prepare a draft ADR in that format.
The default development environment is Visual Studio Code Dev Containers. After cloning the repository and opening in Visual Studio Code, choose the "Reopen in Container" option to work in the dev environment. See the Visual Studio Code documentation for more details on setting up your docker environment.
If you'd like to setup your own environment, consult the devcontainer.json and Dockerfile for details on installed dependencies.