Skip to content
george-thomas-hill edited this page Apr 7, 2021 · 14 revisions

Contribution Guidelines

First off, thanks for taking the time to contribute!
It is very much appreciated! 👍

Ways You Can Help

  • Use Fancytree and send feedback.
  • Know a cool project that uses Fancytree? Post a link in the Q&A forum and/or add it to the Gallery
  • Created a nice theme? Let us know!
  • Create issues for bugs or feature requests (see 'Report Issues' below).
    Note: the issue tracker is for bugs and feature requests.
    Please use the Q&A forum or Stack Overflow if you have questions.
  • Improve this Wiki - it is editable!
  • Have a look at the RFCs in the Wiki and provide feedback.
  • Fix bugs or propose features (see 'Contribute Source Code' below).
  • Consider a donation in $ (USD) Make a PayPal donation in $ (USD) or € (Euro) Make a PayPal donation in Euro.

Report Issues

  • The issue tracker is for bugs and feature requests.
    Please use the Q&A forum or Stack Overflow if you have questions.
  • Please make sure that there is not already an existing issue for this problem/request.
    Use the search function to find out.
    If you have additional information, add a comment there.
  • If it's a bug report:
    Please help us to help you.
    • Carefully describe the required steps to reproduce the failure.
    • Give additional information:
      What browser/version?
      What jQuery / jQuery UI / Fancytree version? Which Fancytree extensions are enabled?
    • What output do you see in the browser's debug console?
    • Create a test case.
      E.g. attach an html file that reproduces the problem, post a link to a sample page, or upload a sample on jsFiddle or Plunker
    • Maybe attach a patch file or describe a potential fix?
  • If it's a feature request:
    • What are you trying to accomplish?
    • Why is this a cool feature? Give use cases.
    • Can you propose a specification? Are there similar implementations in other projects? Add references or screenshots if you have some.
      Remember that the general API must stay generic, extensible, and consistent.
      How will this interfere with existing API and functionality?
      Does it play well with the other extensions?

Improve the Documentation

Contribute Source Code

Create a Pull Request
  • For small fixes, sending a simple patch may do, but The proposed procedure is
    1. Fork the repository on GitHub and checkout the new fork to your computer.
    2. Install tooling (see next section)
    3. Create your feature branch (git checkout -b my-new-feature).
    4. Commit your changes (git commit -am "Added some cool feature").
    5. Push to the branch (git push origin my-new-feature).
    6. Create a new Pull Request.
  • Since v2.30 the style guide is automatically enforced by the prettier formatter.
    Compliance is automatically checked on check ins, so make sure to call grunt format from the command line before comitting.
  • Test the code. Add unit tests when possible.
  • Does your change break any demos? Should new demos be added?
    What about the documentation: should it be updated?
Install the Source Code and Tools for Debugging and Contributing
  • For the testing framework install node.js and grunt-cli, then run npm install from the source folder.
  • After that you can run grunt test from the console in your checkout folder.
    This will run the jshint checker and the unit test suite.
  • Note that also Travis is configured to do this for every checkin (and pull request).
  • Create a pull-request.

In short

$ npm install -g grunt-cli
$ cd fancytree
$ npm install
$ grunt test
$ grunt dev
Contribute Custom Extensions

In general, new major features are added to Fancytree using the extension framework.

Please have a look at the guideline on writing Fancytree extensions.