clj-commons / aleph

Asynchronous streaming communication for Clojure - web server, web client, and raw TCP/UDP
http://aleph.io
MIT License
2.54k stars 241 forks source link

Add CONTRIBUTING.md #631

Closed valerauko closed 2 years ago

valerauko commented 2 years ago

Having a CONTRIBUTING.md would help a lot IMO especially with Hacktoberfest.

Aleph is a pretty big and complicated codebase (especially if you try to understand the execution flow) so having a rough guide on

KingMob commented 2 years ago

Thanks to @valerauko for kicking this off and providing a first pass.

Before we close the issue, maybe we can hash out the rest of their list, and add anything else we think is important. I'll jot down what we have so far, please correct me if I'm wrong.

Thoughts?

arnaudgeiser commented 2 years ago

Local dev environment Other than Leiningen, is there anything we require?

As far as I know, that's the only "tooling" requirement. On my side, I also require the JDK to be Java 8 otherwise I'm not able to compile some parts of the code. But some efforts can be done on that front to make aleph compile whatever the JDK is.

If you are fixing a bug, create a test that demonstrates it first, then make the fix. This ensures our understanding of the problem is correct.

Yes, and I think we have to be very strict about it. I would even say for the new features where it can be tested easily.

I would like to transition away from the literate doc aleph.io site (since we don't have access to it), and towards cljdoc.org. To that end, new docs should be cljdoc.org compatible (metadata, article formats, etc)

While I really like the current literate doc we expose (it forces us to have docstrings that make sense), I concur.