Thank you for taking an interest in the project and your consideration of contribution. Your gesture is highly appreciated!
Fulcro is an open source (family of) projects and there are a few ways in which your contribution would make a great impact.
You can support Fulcro's development by considering a donation via either Patreon or Github Sponsor's program.
Please refer these links for more information.
As a living open-source project there's always a lot which could be done. If you are just starting out with the code-base then consider making good use of the online video-series where you might find videos and tutorials in addition to the information regarding the development setup and various optimizations.
Also, feel free make use of the fact that most of the source code is in CLJC file which makes it possible to a fire up a REPL and
explore things interactively.
The other piece of advice is that you should get familiar with the fulcro-spec testing library, which is used extensively in Fulcro.
Basically follow the instructions here:
https://help.github.com/categories/collaborating-with-issues-and-pull-requests/
If you'd like to submit a PR, please follow these general guidelines:
- Read through the current (and closed) issues on Github. There might be something you can help with!
- In general, a PR is expected to be accompanied with test cases.
- Either talk about it in Slack on #fulcro, or open a github issue
- Please use a github issue to go along with your PR.
- Do development against the develop branch (we use git flow). PRs should be directed at the develop branch. Master is the latest release, not the live development.
- Fulcro adheres to the single-commit-per-PR policy, therefore please squash your change into a single commit for it to be mergeable.
- Add an entry to the CHANGELOG describing the change you've made.
Please read about Git Flow
I use homebrew to install git flow extensions:
$ brew install git-flow-avhand make sure my startup shell file (I use .bashrc) sources the completion file:
. /usr/local/etc/bash_completion.d/git-flow-completion.bash
There is also a plain git-flow package, but the AVH version is better maintained and has better hook support.
It's a good idea for a docstring to do more than the function name itself already does
(e.g. clear-js-timeout! does not need a docstring that says "Clears a js timeout"...it adds no clarity).
For adding doc-strings, please consider the end-user (programmer) who will be using the function, and what they are going to want to know:
- What are the arguments (i.e. allowed types, units, etc.). If an argument is named
tmfor example, is that an inst?, and integer? Is it measured in seconds, minutes, milliseconds? - What is the return value?
- Are there other functions that they should consider/look at?
- Can some things be nil?
- What are the error behaviors?
- How might the function behave in surprising ways?
- A small example is really useful, esp. if the function is pure
Also, try to format the docstring using markdown, since cljdoc and other tools support that. For example:
(defn set-js-timeout!
"Create a timer that will call `f` after `tm` milliseconds.
Returns an opaque value that can be passed to `clear-js-timeout!` to cancel the timer.
See also `defer`, which is intended to be platform independent.
"
[tm f]
...)
Perhaps, it might not make sense to give an example usage for a small utility like the above,
but for something like integrate-ident I certainly would recommend a more elaborate docstring.
Last but not the least, please connect with the friendly Fulcro community over at #fulcro channel in the Clojurians slack.
This is a place for fulcro beginners and experts alike to hangout and share knowledge.