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
| Role | Key Permissions | How to Join |
|---|---|---|
| Contributor | Submit issues & PRs, join discussions | Start contributing — no formal process |
| Committer | Merge PRs, push code, vote on code changes | Nominated by PPMC based on quality contributions |
| PPMC Member | Governance, release voting, new committer approvals | Voted by existing PPMC members |
| Mentor | Guide project and ensure Apache compliance | Appointed 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 operatorfix(ui): resolve workflow panel crashchore(deps): bump dependency versions
- The PR title becomes the final squashed commit message upon merge.
PR Description Should Include:
- Purpose: use
Closes #1234to 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)
- Run lint:Fix with:
sbt "scalafixAll --check"sbt scalafixAll - Run formatter:Fix with:
sbt scalafmtCheckAllsbt scalafmtAll - Execute tests:
cd core sbt test
For IntelliJ users: ensure the working directory matches the module (
amberfor engine tests,corefor services).
Frontend (Angular)
- Run unit tests:
cd core/gui ng test --watch=false - Format code:
yarn format:fix
Write .spec.ts tests for new functionality to ensure future safety.
🔍 Pull Request Review Process
- Request a committer to review your PR.
- Add labels (e.g.,
fix,enhancement,docs). - Wait for CI to pass (GitHub Actions).
- Mark your PR as draft if it’s not ready.
- 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:
- Go to Settings → Editor → Copyright → Copyright Profiles.
- 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... - 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
- Click Edit this page at the top of any doc page to edit directly on GitHub.
- Make your edits and open a Pull Request.
- The site auto-deploys a preview for review via Netlify.
- Wait for approval and merge.
Preview Locally
To preview locally:
hugo server
Visit http://localhost:1313 to view the site as you edit.