Skip to main content

Contributing

walkerOS is an open-source project, and we welcome contributions of all kinds. There are multiple ways to contribute, and we appreciate them all. If you have any questions, feel free to reach out:

Development workflow

The main language is TypeScript, but others are welcome as well. We use a test-driven development approach and write tests using Jest. Since the docs are also part of the repository, they can directly be updated as well. Pushing code to the repository will trigger a test-pipeline that runs all tests and checks the code style.

Visual Studio Code (vscode)

When using Visual Studio Code, there is a devcontainer setup available. It will automatically install all tools, dependencies and extensions. To use it, make sure to install the Remote - Containers extension. Then, open the command palette and select Remote-Containers: Reopen in Container.

Packages

walkerOS is separated into multiple packages and developed in a monorepo. The latest version is under the develop branch, while main contains the latest stable and released versions. The whole project can be tested and build using TurboRepo. Run all commands from the root directory.

# Make sure to install all dependencies first
npm i

# To start a local development server
turbo run dev

# To run all tests
turbo run test

# To build the whole project
turbo run build

# To develop or build a specific package use --filter option
turbo run dev --filter=walker.js
turbo run build --filter=walker.js --filter=utils

The filter option can be used to only run one or multiple packages. To filter use the packages name field in the package.json file.

Documentation

The documentation is also included in the repository under the website/docs folder. It is built using Docusaurus. To start a local server with live reload make sure to run npm i first, go to the website/ directory and call:

npm run start

How to release

How to update a package, create a changeset, and publish a (pre-)release.

Making Changes and Creating a Changeset

  1. Implement Changes: Make the necessary updates or additions to your packages.

  2. Create a Changeset: From the root of your monorepo, run:

$ npx changeset

Select the packages that should be updated and describe the changes.

Preparing for (Pre-)Release

  1. (Optional) Enter pre-release process:
$ npx changeset pre enter next
  1. Bump Version for (Pre-)Release: Now, run:
$ npx changeset version

Publishing the Pre-Release

  1. Login to npm: Ensure you're logged into npm with npm login or set the token with export NPM_TOKEN="insert_npm_token_here".

  2. To publish with the current tag (latest by default or next for a pre-release): From the root of the monorepo, run:

$ npm run publish-packages

(Optional) Exiting Pre-Release Mode

After a pre-release is done and it's ready to be released as a stable version:

  1. Exit Pre-Release Mode: Run:
$ npx changeset pre exit
  1. Follow the release process again: Create a new changeset for the stable release, version, and then publish normally.

Work-in-progress

@TODOS

  • Stacks
    • Firebase
    • Google Tag Manager
  • Walkerjs GTM Installation

About walkerOS

Getting started

Creating a server-side setup with Stacks

Principles

Live demo

Guides

Data contract

  • what is a data contract
  • Describing data structure
  • validating events
  • utils/validate page

Fingerprinting

  • hashing
  • (dis-)advantages

Attribution

  • different attribution strategies
  • building an independent attribution model
  • custom analysis