Files
nebula.js/.github/CONTRIBUTING.md

148 lines
5.2 KiB
Markdown

# nebula.js contributing guide
nebula.js is still in an early stage and is therefore very much open to suggestions and in need of all kinds of contributions.
- [Code of conduct](#code-of-conduct)
- [Bugs](#bugs)
- [Proposing a change](#features)
- [Developing](#developing)
- [Git guidelines](#git)
- [Signing the CLA](#cla)
## <a name="code-of-conduct"></a> Code of conduct
Please read and follow our [Code of conduct](https://github.com/qlik-oss/open-source/blob/master/CODE_OF_CONDUCT.md)
## <a name="bugs"></a> Bugs
Bugs can be reported by filing a [new bug issue](https://github.com/qlik-oss/nebula.js/issues/new?template=bug.md) in the repository. Please make sure to browse through existing [issues](https://github.com/qlik-oss/nebula.js/labels/bug) before creating a new one.
## <a name="features"></a> Proposing a change
If you want to propose changes to this project, let us know by [filing an issue](https://github.com/qlik-oss/nebula.js/issues/new/choose).
If the proposal includes new designs or bigger changes, please be prepared to discuss the changes with us so we can cooperate on how to best include them.
## <a name="developing"></a> Developing
### Prerequisites
- [Node.js](https://nodejs.org/) 18.10.0+ and [yarn](https://yarnpkg.com) 1+ installed
### Project structure
This is a multi-package repository which uses [lerna](https://github.com/lerna/lerna) for package task management and publishing.
- `apis` - JavaScript APIs
- `nucleus`: JavaScript library for mashups
- `supernova`: JavaScript API for consuming and visualizing QIX data
- `stardust`: Public JavaScript API which exposes the nucleus and supernova APIs
- `enigma-mocker`: Public JavaScript API which creates a mocked enigma app to render visualizations without a connected Qlik engine
- `snapshooter`: Public JavaScript API which captures rendered charts as images
- `conversion`: [private] Provides conversion functionality to extensions with hyperCubes.
- `theme`: [private] Provides access and consumption of the currently applied theme
- `locale`: [private] Handles translation strings and generates all locales
- `commands` - CLI commands
- `build`: cli command to build a supernova
- `cli`: entry point for all cli commands
- `create`: CLI command for creating a supernova project
- `sense`: CLI command to build a Qlik Sense extension from a supernova
- `serve`: CLI command to start a development server for rapid prototyping of a supernova
- `packages`
- `ui`: [private] UI components
- `test/`: contains test configs
### Visualizing packages
To better understand packages' relations, you can use Nx's capabilities to open an interactive visualization of the package graph.
To open the visualization, run:
npx nx graph
### Development workflow
- `yarn` install all dependencies
- `yarn run build` generate UMD bundles for all packages and an ESM bundle for stardust
- `yarn run lint` check code style
- `yarn run format` format code style
- `yarn run test` run all tests
### Cutting a release
**Pre-release**
```sh
npx lerna version --no-git-tag-version --no-push --no-conventional-commits --preid alpha --exact
```
## <a name="git"></a> Git Guidelines
Generally, development should be done directly towards the `master` branch.
### Branching
1. Fork and clone the repository
```sh
git clone git@github.com:YOUR-USERNAME/nebula.js.git
```
1. Create a branch in the fork
The branch should be based on the `master` branch in the master repository.
```sh
git checkout -b my-feature-or-bugfix master
```
1. Commit changes on your branch
Commit changes to your branch, following the commit message format.
```sh
git commit -m "fix: properly formatted SET statements."
```
1. Push the changes to your fork
```sh
git push -u myfork my-feature-or-bugfix
```
1. Create a Pull Request
> Before creating a Pull Request, make sure to sign the [CLA](#cla)
In the GitHub UI of your fork, create a Pull Request to the `master` branch of the master repository.
If the branch has merge conflicts or has been outdated, please do a rebase against the `master` branch.
### <a name="commit"></a> Commit message guidelines
Commit messages should follow the [commit message convention](https://conventionalcommits.org/).
#### Type
Should be one of the following:
- **build:** Changes that affect the build system or external dependencies
- **chore:** Changes to build and dev processes/tools
- **ci:** Changes to the CI configuration files and scripts
- **docs:** Changes to documentation
- **feat:** A new feature
- **fix:** A bug fix
- **perf:** A code change that improves performance
- **refactor:** Changes to production code that is neither a new feature nor a bug fix
- **revert:** Reverts a previous commit
- **style:** Changes to code style formatting (white space, commas, etc)
- **test:** Changes in test cases of production code
#### Scope
The `<scope>` of the commit is optional and can be omitted. When used though, it should describe the place or part of the project, e.g. `docs(examples)`, `feat(data)` etc.
## <a name="cla"></a> Signing the CLA
We need you to sign our Contributor License Agreement (CLA) before we can accept your Pull Request. Visit this link for more information: <https://github.com/qlik-oss/open-source/blob/master/sign-cla.md>.