Thank you for your interest in contributing! There are several ways you can help.
Please take a read through this document to help streamline the process of getting your contributions added.
A Project is defined as a self-contained piece of functionality. Each new project is in a sub-folder of the ./packages/modules
or ./packages/apps
folder in this repository, depending on the type of project. The name of the folder should share a similar name of the package that will be published and should contain the source code for that project.
Because each Project is self-contained, it is necessary for the contributor of the Project to specify a contact for PRs and bug reports. To do this, add an entry to the CODEOWNERS file in the root directory of the repository, e.g.:
# Clara Developer owns the new extension snippet
/packages/modules/imodel-select @clara.developer
Remember that the last entry for a matching directory or file name pattern takes precedence over any earlier entries.
- All names should be hyphenated lower case (e.g., imodel-select).
Have you identified a reproducible problem in this code? Have a feature requests? Please create an Issue, but first make sure that you search the work items to make sure that it has not been entered yet. If you find your issue already exists, please add relevant comments or just a thumbs up to let us know that more people face this issue.
File a single issue per problem and feature request. Do not enumerate multiple bugs or feature requests in the same issue.
Do not add your issue as a comment to an existing issue unless it's for the identical input. Many issues look similar, but have different causes.
The more information you can provide, the more likely someone will be successful at reproducing the issue and finding a fix.
Please include the following with each issue:
- Version of the package
- Your operating system
- Reproducible steps (1... 2... 3...) that cause the issue
- What you expected to see, versus what you actually saw
- Images, animations, or a link to a video showing the issue occurring
- A code snippet that demonstrates the issue or a link to a code repository the developers can easily pull down to recreate the issue locally
We follow the normal GitHub pull request workflow to ensure that all code changes in this repository are code reviewed and all tests pass. This means that there will be a number of reviewers that formally review and sign off for changes. Reviewers should check for redundancy, optimization, stylization, and standardization in each changeset. While we will try to keep this repository as collaborative and open-source as possible, it must also be reliable.
Every change must be tested with proper unit tests. Integration tests are highly encouraged in libraries with critical workflows to ensure end-to-end consistency.
Every change must be described with a change log: Run rush change
on your committed and choose the appropriate change type. Commit your change log along with your pull request.
- Make source code changes on a new Git branch.
- Add unit tests.
- Ensure unit tests pass when run locally:
rush test
. - Test changes with the appropriate development app for your changes (web-viewer-test, desktop-viewer-test).
- From root directory -
rush build
(alternatively, runrushx start
in each project folder that you are editing as well as the development app folder to watch for changes and re-compile). - From packages\apps\web-viewer-test -
rushx start
. - Make changes to web-viewer-test, if necessary.
- Test changes.
- Do not check in changes to web-viewer-test to source control.
- From root directory -
- Commit your changes.
- Add a changelog entry (which could potentially cover several commits):
rush change
. - Follow prompts to enter a change description or press ENTER if the change does not warrant a changelog entry. If multiple packages have changed, multiple sets of prompts will be presented.
- Completing the
rush change
prompts will cause new changelog entry JSON files to be created. - Commit the changelog JSON files.
- Publish changes to the branch and open a pull request.