Skip to content

Latest commit

 

History

History
87 lines (55 loc) · 3.47 KB

CONTRIBUTING.md

File metadata and controls

87 lines (55 loc) · 3.47 KB

Contributing

What can you contribute?

1. Feedback

Contributions in the form of feedback and issue is very much welcome. Might it be a suggestion, a bug report or maybe some questions that you have. It helps improving Kupo in the long run and these are probably the best kind of contributions to start with. See About Issues/Discussions below for guidelines.

Do not hesitate to upvote discussions or comments to show your interest!

2. Donation

Feel like tossing some coins for the project? Become a sponsor !

3. Code

Make sure to first read the user-manual 📖 if you're willing to hack a bit on Kupo. Then, make help should provide a good starting point.

For development, cabal should work out-of-the-boxTM provided that you have the right system dependencies. Refer to Ogmios' user manual for setting up those system dependencies, they are the same.

Alternatively, you can spin up a nix shell as follow:

nix develop github:CardanoSolutions/devx#ghc96-iog-full --no-write-lock-file --refresh

If using the Nix shell, you'll likely want to create a cabal.project.local file:

package digest
  extra-lib-dirs: /nix/store/y08crgb0j7bniwwpcsfwn0dikpcim948-zlib-1.3/lib /nix/store/sk54pr3wx1jbfv8pd0fizkvdsb38j5ga-pcre-8.45-bin/lib

constraints:
  HsOpenSSL +use-pkg-config,
  zlib +pkg-config,
  pcre-lite +pkg-config

Once you're all set, you can run tests using:

$ make check

# or similarly

$ cabal test all

Some tests are end-to-end and require to have a running (and roughly synchronized) cardano-node and/or ogmios against the testnet. These tests are automatically skipped, unless you set the following environment variables (using direnv for that is pretty convenient):

# For cardano-node
export CARDANO_NODE_SOCKET=/path/to/testnet/cardano-node/node.socket
export CARDANO_NODE_CONFIG=/path/to/testnet/cardano-node/config.json

# For Ogmios
export OGMIOS_HOST=127.0.0.1
export OGMIOS_PORT=1337

Coding standards are enforced using tools and configuration defined in the repository. Make sure to configure your editor to pick them up (stylish-haskell and .editorconfig in particular).

Pull requests are welcome, but we do recommend to open an discussion to bring any idea and discuss design first!

About Issues / Discussion

🐛 How To Report A Bug

Open a Bug Ticket.

💡 How To Propose An Idea

Feel free to bring it as a discussion [category: idea]. Make sure to highlight your use case so we can understand the design space and agree on a solution.

Note

Ideally, follow this simple template:

  • What is your idea? Describe it in simple words. Provide a use case.
  • Why is it a good idea?
  • What is the current alternative and why is it not good enough?

❓ How To Ask a Question

Create a Q&A Discussion

Warning

Make sure to mark your question as Answered once resolved!