Contributing
Issues
You can find our open issues in the project's issue tracker. Please let us know if you find any issues or have any feature requests there.
Contributing
If you want to contribute to the project, your help is very welcome. Just fork the project, make your changes and send us a pull request. You can find the detailed description of how to do this in Github's guide to contributing to projects.
Our Roadmap page is a
comprehensive list of tasks we want to do in the future. It is a good place to
start if you want to contribute to Vizzu
. In case you have something else in
mind, that's awesome and we are very interested in hearing about it.
CI-CD
Development environment
The following steps demonstrate how to set up the development environment on an
Ubuntu
22.04
operating system. However, the process can be adapted for other
operating systems as well.
To contribute to the JavaScript
part of the project, it is recommended to use
Node.js
18
.
Run the following command to install the JavaScript
development dependencies:
npm install
The JavaScript
development requirements are installed based on the
package-lock.json
file. To update the development requirements, you can use
the command npm run lock:js
.
However, for the documentation we are also using Python
. If you plan to
contribute to this part of the project, you will need Python
, preferably
version 3.10
.
Run the following command to install the Python
development dependencies:
./tools/ci/run/init-py.sh
The Python
development requirements are installed based on the
tools/ci/pdm.lock
file. To update the development requirements, you can use
the command npm run lock:py
.
Note: For all available npm
scripts, run npm run --list
.
To contribute to the C++
part of the project, it is recommended to use
Docker
, but based on the Dockerfiles
below, you can also configure the
necessary dependencies on your local machine.
Run the following commands to build and run the Desktop
version's development
environment
docker build -t vizzu/vizzu-dev-desktop -f tools/ci/docker/vizzu-dev-desktop .
docker run -i -t -v .:/workspace vizzu/vizzu-dev-desktop bash
or you can use a specific version of the prebuilt image:
docker run -i -t -v .:/workspace vizzu/vizzu-dev-desktop:0.15 bash
Run the following commands to build and run the WASM
version's development
environment
docker build -t vizzu/vizzu-dev-wasm -f tools/ci/docker/vizzu-dev-wasm .
docker run -i -t -v .:/workspace vizzu/vizzu-dev-wasm bash
or you can use a specific version of the prebuilt image:
docker run -i -t -v .:/workspace vizzu/vizzu-dev-wasm:0.15 bash
Building the project
Building Desktop version
Run the following script in the running vizzu-dev-desktop
container to build
the Desktop
version and run the C++
unit tests:
./tools/ci/run/pkg-build-desktop.sh
Note: A successful gcc
and a clang
build are required to contribute,
just like successful format checks and linter checks (on the cvizzu
and
vizzutest
targets).
Run the following script in the running vizzu-dev-desktop
container to build
the Desktop
version with gcc
, clangformat
, and run the C++
unit tests:
./tools/ci/run/pkg-build-desktop-clangformat.sh
Run the following script in the running vizzu-dev-desktop
container to build
the Desktop
version with clang
, clangtidy
, cppcheck
and run the C++
unit tests:
./tools/ci/run/pkg-build-desktop-clangtidy.sh
Building WASM version
Run the following script in the running vizzu-dev-wasm
container to build the
WASM
version, run the C++
unit tests, check binary sizes, compile
TypeScript
, run JavaScript
unit tests, create vizzu.min.js
and check
d.ts
:
./tools/ci/run/pkg-build-wasm.sh
Note: To debug WASM version under Chrome:
- set Chrome/DevTools/Settings/Experiments/'WebAssembly Debugging: Enable DWARF support' to true
- set [repo]/project/cmake/emcc.txt: CMAKE_EXE_LINKER_FLAGS_DEBUG --source-map-base to the URL where the browser can find cvizzu.wasm.map file.
Building npm package
If you used the above script to build the WASM
version, the minified
JavaScript
file is already created otherwise you can run
npm run build:ts && npm run rollup
. After run the following command in order
to create the npm package:
npm run set-version
npm run build:js
Note: This task will set the version number in the package.json
file.
Note: You can build the npm
package without building the WASM
version:
npm run build:wasm-wocpp
npm run set-version
npm run build:js
CI
The CI pipeline includes code formatting checks, code analysis, typing
validation, and unit tests for the Vizzu
project.
To run the entire CI pipeline, execute the following npm
script:
npm run ci
However, if you want to run the CI steps on specific parts of the project, you
can use the following scripts: ci:src
, ci:docs
, or ci:tools
.
Formatting
You can check the code's formatting using the format
script:
npm run format
If you need to fix any formatting issues, you can use the fix-format
script:
npm run fix-format
If you wish to format specific parts of the project, you can use the following
scripts: format:src
, format:docs
, format:tools
, or fix-format:src
,
fix-format:docs
, fix-format:tools
.
Code analyses
To perform code analyses, you can use the lint
script:
npm run lint
If you need to run code analyses for specific parts of the project, you can
utilize the following scripts: lint:src
, lint:docs
, or lint:tools
.
Typing
For type checking, you can use the type
script:
npm run type
If you want to check specific parts of the project, you can use the following
script: type:tools
.
Testing
Run the following command to start e2e testing:
npm test
For information on how e2e testing works and what options it has, please see the program help:
npm test -- --help
Manual testing
Test cases can be viewed using different versions of Vizzu
using the manual
checker.
npm run test:man
# Press CTRL and click on the URL to open it in the default browser
For more options please see the program help.
npm run test:man -- --help
"Nightly" builds
Builds from the CI
are available on the following URLs
. However, you should
use these only for development purposes since they are subject to frequent and
sometimes unstable changes.
-
build from the
HEAD
commit of the main branch:https://vizzu-lib-main.storage.googleapis.com/lib/vizzu.js
and the minified, boundled version:
https://vizzu-lib-main.storage.googleapis.com/lib/vizzu.min.js
-
all builds of the past 30 days:
https://vizzu-lib-main-sha.storage.googleapis.com/lib-HASH/vizzu.js
where
HASH
is the first 7 character of the commit's git hash.
Documentation
Note: The showcases and some images are stored in the vizzu-lib-doc repository. If you wish to build the site, run the following command:
git clone --single-branch --branch main --depth 1 'git@github.com:vizzuhq/vizzu-lib-doc'
Note: If you also want to generate thumbnails, run the following command:
npm run gen-thumbnail
To build the documentation, you can use the build-docs
script:
npm run build-docs
You can read the online version at lib.vizzuhq.com.
Release
Vizzu
is distributed on npm. Note:
You need to be an administrator to release the project.
To release Vizzu
, follow the steps below:
- You should increase the version number in
src/chart/main/version.cpp
.
- If the major or minor version has changed, increase the version in
.github/workflows/docker-vizzu-dev-desktop.yml
,.github/workflows/docker-vizzu-dev-wasm.yml
,tools/ci/gcp/cloudbuild/cloudbuild.yaml
andCONTRIBUTING.md
.
- Set the release and release date in
CHANGELOG.md
, under theUnreleased
title.
- Create the release notes from
CHANGELOG.md
and publish the new release on Releases.