We're glad you're thinking about contributing to GoFSH! We welcome all friendly contributions, including:
- bug reports
- comments and suggestions
- feature requests
- bug fixes
- feature implementations and enhancements
- documentation updates and additions
To ensure a welcoming environment, we follow the HL7 Code of Conduct and expect contributors to do the same.
Before making a contribution, please familiarize yourself with this document, as well as our LICENSE and README.
We use GitHub issues to track bug reports, comments, suggestions, questions, and feature requests. If you need help with using FHIR Shorthand or its tools, however, you may want to consider posting on Zulip first (see below). Questions posted on Zulip will reach a broader set of FSH users and will likely receive more timely responses. Requests for specific changes, however, should be submitted as GitHub issues so they can be formally tracked.
Before submitting a new issue, please check to make sure a similar issue isn't already open. If one is, contribute to that issue thread with your feedback.
When submitting a bug report, please try to provide as much detail as possible. This may include:
- steps to reproduce the problem
- screenshots demonstrating the problem
- the full text of error messages
- relevant outputs
- any other information you deem relevant
When creating or contributing to an issue, please include a link to any relevant discussion threads on Zulip (see below).
Please note that the GitHub issue tracker is public; any issues you submit are immediately visible to everyone. For this reason, do not submit any information that may be considered sensitive.
In addition to GitHub issues, we also use the FHIR Community Chat @ https://chat.fhir.org to discuss the use of FHIR Shorthand and its associated projects. The #shorthand stream is used for all FHIR Shorthand questions and discussion.
Before contributing to the discussion on the #shorthand stream, you will need to register for an account. The instructions to sign up can be found when you visit https://chat.fhir.org.
Before starting a new conversation, please check for earlier discussions on a similar issue or topic. If a previous conversation has been started, contribute to that thread with your feedback.
When starting a new conversation, please use a descriptive topic and include as much detail as possible.
If you are looking for feedback or discussion around an issue, we recommend using Zulip. The FSH community is active on Zulip, and it is the best place to have in-depth discussions and ask questions about the FSH tooling. If the discussion on Zulip determines that a change is required in GoFSH, you should create a GitHub issue to track it. The GitHub issue should include a link to the relevant Zulip discussion thread, and it is best practice to provide a link to the GitHub issue on the Zulip thread. While Zulip is very useful for discussion, GitHub issues are the system of record for changes to GoFSH.
If you are planning to work on a reported bug, suggestion, or feature request, please comment on the relevant issue to indicate your intent to work on it. If there is no associated issue, please submit a new issue describing the feature you plan to implement or the bug you plan to fix. This reduces the likelihood of duplicated effort and also provides the maintainers an opportunity to ask questions, provide hints, or indicate any concerns before you invest your time.
Code that is contributed to this project should be done in a personal fork of this repository and follow the coding practices specified in our Best Practices documentation in BEST-PRACTICES.md.
Before submitting a Pull Request for a code contribution:
-
Merge master into your branch or rebase on master if your code is out of sync with master
- If you need help with this, submit your Pull Request without merging or rebasing and indicate you need help
-
Build the code (if applicable) and ensure there are no new warnings or errors
-
Run the tests with
npm test
and ensure that all tests pass -
Run the linter with
npm run lint
and ensure that there are no linter warnings or errors -
Run the Prettier formatter with
npm run prettier
and ensure that there are no formatting warnings or errorsNote:
npm run check
will run thetest
,lint
, andprettier
scripts at once -
Ensure any new dependencies do not contain known security vulnerabilities.
- We recommend using
npm audit
to ensure there are no new security vulnerabilities introduced on your branch
- We recommend using
For details on how to build, test, lint, and format see the individual project README file.
Pull requests should include a summary of the work, as well as any specific guidance regarding how to test or invoke the code.
When project maintainers review the pull request, they will:
- Verify the contribution is compatible with the project's goals and mission
- Run the project's unit tests, linters, and formatters to ensure there are no violations
- Deploy the code locally to ensure it works as expected
- Review all code changes in detail, looking for:
- potential bugs, regressions, security issues, or unintended consequences
- edge cases that may not be properly handled
- application of generally accepted best practices
- adequate unit tests and documentation
Congratulations! Your code will be merged by a maintainer into the project's master branch!
If the review process uncovers any issues or concerns, a maintainer will communicate them via a Pull Request comment. In most cases, the maintainer will also suggest changes that can be made to address those concerns and eventually have the Pull Request accepted. If this happens:
- address any noted issues or concerns
- rebase or merge master (if necessary) and push your code again (may require a force push if you rebased)
- comment on the Pull Request indicating it is ready for another review
All contributions to this project will be released under the Apache 2.0 license. By submitting a pull request, you are agreeing to comply with this license. As indicated by the license, you are also attesting that you are the copyright owner, or an individual or Legal Entity authorized to submit the contribution on behalf of the copyright owner.