This is the multi-page printable view of this section. Click here to print.

Return to the regular view of this page.

Contribution Guidelines

How to contribute to Texera code and documentation.

    Thank you for your interest in contributing to Texera! This guide explains how to contribute to both Texera’s codebase and documentation.
    We follow a fork-based workflow and adopt the Conventional Commits standard for commit messages.

    Contributing to Texera

    Texera welcomes contributions from everyone — whether you’re fixing a small bug, improving documentation, or adding new features.


    👥 Roles in the Project

    RoleKey PermissionsHow to Join
    ContributorSubmit issues & PRs, join discussionsStart contributing — no formal process
    CommitterMerge PRs, push code, vote on code changesNominated by PPMC based on quality contributions
    PPMC MemberGovernance, release voting, new committer approvalsVoted by existing PPMC members
    MentorGuide project and ensure Apache complianceAppointed by the Incubator PMC

    🛠 How to Contribute Code

    1. Fork the Repository

    Fork the Texera repository on GitHub and clone it locally.

    2. Find or Open an Issue

    • Pick an existing issue or create a new one describing your proposal or bug.
    • Discuss your approach with committers before coding to reach consensus.

    3. Create and Submit a Pull Request

    • Develop in a new branch of your fork.
    • When ready, submit a PR to the main Texera repository.
    • Allow edits from maintainers to let committers make small fixes if needed.

    PR Title and Commit Format

    We use Conventional Commits:

    • Example PR titles:
      • feat: add new join operator
      • fix(ui): resolve workflow panel crash
      • chore(deps): bump dependency versions
    • The PR title becomes the final squashed commit message upon merge.

    PR Description Should Include:

    • Purpose: use Closes #1234 to auto-close an issue.
    • Summary: short overview of your changes.
    • Optional: design document, technical diagram, or screenshots.

    Avoid including:

    • Local config files (e.g., python_udf.conf)
    • Secrets or credentials
    • Binary or build artifacts

    🧪 Testing and Quality Checks

    Backend (Scala)

    1. Run lint:
      sbt "scalafixAll --check"
      
      Fix with:
      sbt scalafixAll
      
    2. Run formatter:
      sbt scalafmtCheckAll
      
      Fix with:
      sbt scalafmtAll
      
    3. Execute tests:
      cd core
      sbt test
      

    For IntelliJ users: ensure the working directory matches the module (amber for engine tests, core for services).

    Frontend (Angular)

    1. Run unit tests:
      cd core/gui
      ng test --watch=false
      
    2. Format code:
      yarn format:fix
      

    Write .spec.ts tests for new functionality to ensure future safety.


    🔍 Pull Request Review Process

    1. Request a committer to review your PR.
    2. Add labels (e.g., fix, enhancement, docs).
    3. Wait for CI to pass (GitHub Actions).
    4. Mark your PR as draft if it’s not ready.
    5. Once approved, a committer will merge your PR.

    📝 Apache License Header

    All new files must include the Apache License header.
    To automate this in IntelliJ:

    1. Go to Settings → Editor → Copyright → Copyright Profiles.
    2. Create a profile named Apache and add:
      Licensed to the Apache Software Foundation (ASF) under one
      or more contributor license agreements. See the NOTICE file
      distributed with this work for additional information
      regarding copyright ownership...
      
    3. Set this as the default profile for the project.

    ✍️ Contributing to Documentation

    Texera uses Hugo and the Docsy theme to build its website.
    All documentation is stored in the Texera GitHub repository.

    Quick Steps

    1. Click Edit this page at the top of any doc page to edit directly on GitHub.
    2. Make your edits and open a Pull Request.
    3. The site auto-deploys a preview for review via Netlify.
    4. Wait for approval and merge.

    Preview Locally

    To preview locally:

    hugo server
    

    Visit http://localhost:1313 to view the site as you edit.


    📚 Resources