Contributing to GoDotEnv

Contributions are welcome, but please be aware of the project's development philosophy.

Contribution Policy

As of issue #182, this library has been declared feature complete. The maintainers will not be accepting new functionality or changes that break the existing API.

Contributions that will be gladly accepted include:

  • Compatibility Improvements: Changes that bring this library's parsing into closer compatibility with mainline dotenv implementations, particularly Ruby's dotenv and Node.js' dotenv.
  • Ecosystem Updates: Keeping the library up-to-date with the Go ecosystem (e.g., CI updates, documentation changes, core library changes).
  • Bug Fixes: Fixes for issues that pertain to the library's core purpose of easing development for twelve-factor applications.

Note: Code changes submitted without tests and references to peer dotenv implementations will not be accepted.

Development Process

  1. Fork the repository: Create your own fork of the project on GitHub.
  2. Create a feature branch:

    git checkout -b my-new-feature

  3. Make your changes: Implement your bug fix or improvement.

  4. Add or update tests: Ensure your changes are covered by tests. Run the test suite to make sure everything passes:

    go test

  5. Commit your changes:

    git commit -am 'Add some feature'

  6. Push to the branch:

    git push origin my-new-feature

  7. Create a new Pull Request: Submit a pull request from your fork to the main godotenv repository.

Continuous Integration

This project uses GitHub Actions to automatically test pull requests and pushes to the main branch. The CI pipeline runs go test across multiple versions of Go and on different operating systems (Linux, macOS, and Windows) to ensure compatibility.