Skip to main content

Contributing Guidelines

Thank you for your interest in contributing to VectorAlpha! We value every contribution, whether it is code, documentation, bug reports, or community support. This guide will help you get started.

Quick Start

Looking to make your first contribution? Check out issues labeled good first issue in our repositories. These are specifically chosen for newcomers!

Ways to Contribute

Contributing to open source is not just about code. Here are various ways you can help VectorAlpha grow:

Code Contributions

  • Implement new indicators
  • Optimize existing algorithms
  • Fix bugs and issues
  • Add GPU acceleration

Documentation

  • Write tutorials and guides
  • Improve API documentation
  • Create examples and demos
  • Translate documentation

Testing

  • Write unit tests
  • Add integration tests
  • Test edge cases

Community

  • Answer questions
  • Review pull requests
  • Organize meetups
  • Write blog posts

Getting Started

1. Set Up Your Development Environment

# Install Rust (if not already installed)
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh

# Clone the repository
git clone https://github.com/VectorAlpha/ta-library.git
cd ta-library

# Install development dependencies
cargo install cargo-watch cargo-edit cargo-outdated

# Run tests to verify setup
cargo test

# Build the project
cargo build --release

2. Find Something to Work On

Browse our issue trackers for tasks that match your interests and skill level:

  • Good First Issues: Perfect for newcomers to the project
  • Help Wanted: Issues where we specifically need community help
  • Enhancement: New features and improvements
  • Performance: Optimization opportunities
  • Documentation: Documentation improvements needed

Pro Tip

Before starting work on a significant feature, open an issue to discuss your proposal. This ensures your contribution aligns with the project direction and prevents duplicate efforts.

Code Style Guidelines

Rust Style

We follow the standard Rust style guidelines. Use rustfmt to automatically format your code:

# Format all code
cargo fmt

# Check formatting without making changes
cargo fmt -- --check

# Run clippy for additional lints
cargo clippy -- -D warnings

Code Quality Standards

  • Safety First: Minimize unsafe code. When necessary, document why it is needed
  • Performance: Profile before optimizing. Include benchmarks for performance claims
  • Documentation: All public APIs must have doc comments with examples
  • Testing: New features require tests. Aim for >90% coverage

Code Example Coming Soon

Full code examples with syntax highlighting will be available in the next update.

Submitting Changes

1. Fork and Branch

# Fork the repository on GitHub, then:
git clone https://github.com/YOUR_USERNAME/ta-library.git
cd ta-library
git remote add upstream https://github.com/VectorAlpha/ta-library.git

# Create a feature branch
git checkout -b feature/your-feature-name

2. Make Your Changes

Follow these practices while developing:

  • Write clear, concise commit messages
  • Keep commits focused and atomic
  • Add tests for new functionality
  • Update documentation as needed
  • Ensure all tests pass locally

3. Commit Message Format

type(scope): subject

body

footer

# Examples:
feat(indicators): add Ichimoku Cloud indicator
fix(backtest): correct slippage calculation in limit orders
docs(api): update RSI parameter descriptions
perf(sma): optimize moving average calculation using SIMD

Learn more about Conventional Commits specification for standardized commit messages.

Commit Types

  • feat: New feature
  • fix: Bug fix
  • docs: Documentation changes
  • style: Code style changes (formatting, etc.)
  • refactor: Code refactoring
  • perf: Performance improvements
  • test: Test additions or corrections
  • chore: Maintenance tasks

4. Submit a Pull Request

# Push your branch
git push origin feature/your-feature-name

# Then create a pull request on GitHub

In your pull request description:

  • Clearly describe what changes you have made
  • Reference any related issues (e.g., "Fixes #123")
  • Include screenshots for UI changes
  • List any breaking changes
  • Mention if documentation updates are needed

Code Review Process

All contributions go through code review. Here is what to expect:

  1. Automated Checks: CI runs tests, linting, and benchmarks
  2. Maintainer Review: A project maintainer reviews the code
  3. Feedback: You may receive suggestions or requests for changes
  4. Iteration: Make requested changes and push to the same branch
  5. Approval: Once approved, your PR will be merged

Review Timeline

We aim to review pull requests within 3-5 business days. Complex changes may take longer. Feel free to ping maintainers if your PR has not been reviewed after a week.

Community Guidelines

Code of Conduct

We are committed to providing a welcoming and inclusive environment. All participants must adhere to our code of conduct:

  • Be respectful and inclusive
  • Welcome newcomers and help them get started
  • Focus on constructive criticism
  • Respect differing viewpoints and experiences
  • Show empathy towards other community members

Getting Help

Recognition

We value all contributions and ensure proper recognition:

  • Contributors are listed in our CONTRIBUTORS.md file
  • Significant contributions are highlighted in release notes
  • Active contributors may be invited to join the maintainer team
  • We use the All Contributors specification to recognize all types of contributions

Thank You!

Your contributions make VectorAlpha better for everyone in the quantitative finance community. We are grateful for your time and expertise!

Next Steps