Contributing to Core Development
We welcome contributors to DeltaFi! See the guidance below to get started or contact us.
To get started, follow the Core Developer's Guide to set up your development environment. To understand how plugins consume the action kit, consider the simple plugin tutorial.
Working with the Repository and Submitting a Merge Request
- Fork our repository
- Create a new branch for your changes
- Make changes and commit them with a clear and concise commit message
- Add a changelog entry for your changes. See the changelog section of this guide for details.
- Push your changes to your fork
- Create a pull request targeting the main branch or an appropriate release branch
Creating a Changelog Entry for Your Contributions
The markdown CHANGELOG.md file at the root of the repository holds all the changelog information for past releases of DeltaFi. Unreleased changes have a markdown file located at CHANGELOG/unreleased/. The changelog files in CHANGELOG/unreleased are compiled at release time into the resulting CHANGELOG.md.
The changelog script located at bin/changelog is a tool for automating the creation of changelog files for individual changes, as well as compiling unreleased changes into the main CHANGELOG.md. The script can be utilized in several different ways based on developer preference:
- Use the script by directly invoking it in the core repo
- Create a shell alias to invoke the script
- Copy the script to a directory in your path, renamed to
git-changelog. You will be able to invoke the script from any git repo bygit changelog
The changelog script can be invoked as follows:
changelog(with no arguments) invoked anywhere in your repository will create a stub changelog file atCHANGELOG/unreleased/<BRANCHNAME>.md(if the file does not yet exist) and return the path of the changelog filechangelog -ewill create a changelog file if it doesn't exist, and open the file in an editor. If no editor is specified in theEDITORenvironment variable, vim will be used as the default editorchangelog -r <version>will compile all the unreleased changelog files into the mainCHANGELOG.md. This is only used during the release process

