View Source Contributing to Poolex

Poolex is written in Elixir.

For branching management, this project uses git-flow. The main branch is reserved for releases: the development process occurs on the develop and feature branches. Please never commit to main.

You can use asdf to set up the required Elixir and OTP. Current versions are listed in the .tool-versions file.

Setup

Local repository

  1. Fork the repository.

  2. Clone your fork to a local repository:

     git clone https://github.com/your-login/poolex.git
     cd poolex
    
  3. Checkout develop:

     git checkout develop
    

Development environment (using asdf)

  1. Install asdf by Getting Started guideline

  2. Add plugins for elixir and OTP

     asdf plugin-add elixir https://github.com/asdf-vm/asdf-elixir.git
     asdf plugin add erlang https://github.com/asdf-vm/asdf-erlang.git
    
  3. Install tools:

     cd poolex
     asdf install
    

Development environment (without asdf)

Please see installation instructions.

Git-flow

If you want to use the git-flow CLI, please check installation instructions.

Building the project

  1. Fetch the project dependencies:

     cd poolex
     mix deps.get
    
  2. Run the static analyzers:

     mix check
    

Workflow

To make a change, please use this workflow:

  1. Checkout develop and apply the last upstream changes (use rebase, not merge!):

     git checkout develop
     git fetch --all --prune
     git rebase upstream/develop
    
  2. For a tiny patch, create a new branch with an explicit name:

     git checkout -b <my_branch>
    

    Alternatively, if you are working on a feature that would need more work, you can create a feature branch with git-flow:

     git flow feature start <my_feature>
    

    Note: always open an issue and ask before starting a big feature, to avoid it not being merged and your time lost.

  3. When your feature is ready, feel free to use interactive rebase so your history looks clean and easy to follow. Then, apply the last upstream changes on develop to prepare integration:

     git checkout develop
     git fetch --all --prune
     git rebase upstream/develop
    
  4. If there were commits on develop since the beginning of your feature branch, integrate them by rebasing if your branch has few commits, or merging if you had a long-lived branch:

     git checkout <my_feature_branch>
     git rebase develop
    

    Note: the only case you should merge is when you are working on a big feature. If it is the case, we should have discussed this before as stated above.

  5. Run the tests and static analyzers to ensure there is no regression and all works as expected:

     mix check
    
  6. If it’s all good, open a pull request to merge your branch into the develop branch on the main repository.

Coding style

Please format your code with mix format or your editor and follow this style guide.

All contributed code must be documented and functions must have typespecs. In general, take your inspiration from the existing code.