# Contributing

Welcome to the Gonzo contributor guide! We're excited that you're interested in contributing to Gonzo. Whether you're fixing a bug, adding a feature, improving documentation, or just asking questions, your contributions are welcome and appreciated.

### Why Contribute?

Contributing to Gonzo offers many benefits:

* **Learn Go and TUI development**: Work with modern Go frameworks like Bubble Tea
* **Improve your skills**: Practice coding, testing, and documentation
* **Make an impact**: Help thousands of developers analyze logs better
* **Join a community**: Connect with other contributors and users
* **Build your portfolio**: Open source contributions look great on resumes
* **Give back**: Support a tool you use and rely on

### Ways to Contribute

You don't need to be a coding expert to contribute! Here are many ways to help:

#### 🐛 Report Bugs

Found a bug? Report it! Include:

* Clear description
* Steps to reproduce
* Expected vs actual behavior
* Your environment details

[Open a bug report →](https://github.com/control-theory/gonzo/issues/new)

#### 💡 Suggest Features

Have an idea for improvement? We'd love to hear it! Describe:

* The problem you're trying to solve
* Your proposed solution
* Why it would be useful
* Any alternatives you've considered

[Suggest a feature →](https://github.com/control-theory/gonzo/issues/new)

#### 📝 Improve Documentation

Documentation is crucial! You can:

* Fix typos or unclear explanations
* Add missing information
* Create tutorials or guides
* Improve examples
* Translate documentation

#### 🎨 Create Skins & Formats

Extend Gonzo's capabilities:

* Design custom color schemes
* Create parsers for new log formats
* Share configurations
* Build integrations

#### 💬 Help Others

Be an active community member:

* Answer questions in GitHub Discussions
* Help troubleshoot issues
* Review pull requests
* Share your use cases

#### 💻 Write Code

Contribute code improvements:

* Fix bugs
* Implement features
* Add tests
* Optimize performance
* Refactor code

### Getting Started

#### First Time Contributors

**Never contributed to open source before? No problem!**

1. **Development Setup** - Set up your development environment
2. **Look for "good first issue" labels** - These are beginner-friendly issues
3. **Ask questions** - Don't hesitate to ask for help
4. **Start small** - Begin with documentation or small fixes
5. **Learn as you go** - Every contributor was a beginner once

#### Experienced Contributors

**Familiar with open source?**

1. **Contribution Guidelines** - Review our process and standards
2. **Architecture Overview** - Understand the codebase
3. **Pick an issue** - Look for issues matching your skills
4. **Discuss first** - For large changes, open an issue to discuss before coding

### Contribution Process

Our contribution workflow:

```
1. Fork & Clone
   ↓
2. Create Branch
   ↓
3. Make Changes
   ↓
4. Write Tests
   ↓
5. Update Docs
   ↓
6. Run Tests & Lint
   ↓
7. Commit & Push
   ↓
8. Create Pull Request
   ↓
9. Code Review
   ↓
10. Merge! 🎉
```

See Contribution Guidelines for detailed steps.

### What We're Looking For

#### High Priority

These contributions are especially valuable:

* 🐛 **Bug fixes**: Stability improvements
* 📚 **Documentation**: Clarity and completeness
* ✅ **Tests**: Increasing code coverage
* 🎨 **Custom formats**: Parsers for popular log formats
* 🔌 **Integrations**: Connecting with other tools

#### Medium Priority

Also valuable contributions:

* ✨ **New features**: After discussion with maintainers
* ⚡ **Performance**: Optimization work
* 🎨 **UI improvements**: Better user experience
* 🌐 **Localization**: Translations

#### Always Welcome

These are always appreciated:

* 📖 **Examples**: Real-world use cases
* 🎨 **Skins**: Custom themes
* 💬 **Discussions**: Ideas and feedback
* 🤝 **Community support**: Helping others

### Project Areas

#### Frontend (TUI)

**What**: Terminal user interface using Bubble Tea

**Skills**: Go, terminal UI design, user experience

**Good for**: Visual thinkers, UI/UX enthusiasts

**Files**: `internal/tui/`

#### Backend (Processing)

**What**: Log parsing, analysis, and pattern detection

**Skills**: Go, algorithms, data structures

**Good for**: Problem solvers, algorithm enthusiasts

**Files**: `internal/analyzer/`, `internal/memory/`

#### Networking (OTLP)

**What**: OpenTelemetry protocol implementation

**Skills**: Go, networking, protocols, gRPC

**Good for**: Systems programmers, protocol enthusiasts

**Files**: `internal/otlplog/`

#### AI Integration

**What**: AI-powered log analysis features

**Skills**: Go, API integration, prompt engineering

**Good for**: AI/ML enthusiasts

**Files**: `internal/ai/`

#### Documentation

**What**: User guides, API docs, examples

**Skills**: Technical writing, clear communication

**Good for**: Writers, educators

**Files**: `docs/`, `README.md`, `*.md` files

#### Testing

**What**: Unit tests, integration tests, benchmarks

**Skills**: Go testing, test design

**Good for**: Quality-focused developers

**Files**: `*_test.go`

### Recognition

We value all contributions! Contributors receive:

* ✨ **Credit** in release notes
* 👥 **Listed** on GitHub contributors page
* 🏆 **Recognition** in the community
* 📣 **Mentions** on social media (with permission)
* 🎖️ **Special badges** for significant contributions

### Code of Conduct

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

* **Be respectful**: Treat everyone with respect and courtesy
* **Be inclusive**: Welcome people of all backgrounds
* **Be collaborative**: Work together constructively
* **Be professional**: Keep discussions on topic

See Community for full Code of Conduct.

### Questions?

Need help or have questions?

* 💬 **GitHub Discussions**: [Start a discussion](https://github.com/control-theory/gonzo/discussions)
* 🐛 **GitHub Issues**: [Open an issue](https://github.com/control-theory/gonzo/issues)
* 📧 **Email**: <hello@controltheory.com>

We're here to help!

### Resources

#### Essential Reading

* **Development Setup** - Get your environment ready
* **Contribution Guidelines** - Detailed process and standards
* **Community** - Connect with other contributors

#### Technical Resources

* **Architecture Overview** - How Gonzo works
* **OTLP Protocol** - OpenTelemetry implementation
* **Extension Points** - Ways to extend Gonzo

#### Helpful Links

* **GitHub Repository**: <https://github.com/control-theory/gonzo>
* **Issue Tracker**: <https://github.com/control-theory/gonzo/issues>
* **Discussions**: <https://github.com/control-theory/gonzo/discussions>
* **Website**: <https://gonzo.controltheory.com>

### Quick Start

Ready to contribute? Follow these steps:

**For code contributions**:

```bash
# 1. Fork the repository on GitHub

# 2. Clone your fork
git clone https://github.com/YOUR-USERNAME/gonzo.git
cd gonzo

# 3. Set up development environment
make deps
make build

# 4. Create a branch
git checkout -b feature/my-feature

# 5. Make changes and test
make dev

# 6. Push and create PR
git push origin feature/my-feature
```

**For documentation contributions**:

* Edit Markdown files directly on GitHub, or
* Follow the same process as code contributions

**For issues and discussions**:

* Just go to GitHub and start engaging!

### Thank You!

Your contributions, no matter how small, make Gonzo better for everyone. Thank you for taking the time to contribute!

We look forward to working with you! 🎉

***

{% hint style="info" %}
**New to open source?** Check out [First Contributions](https://firstcontributions.github.io/) for a gentle introduction to contributing to open source projects.
{% endhint %}

{% hint style="success" %}
**Ready to start?** Head over to Development Setup to get your environment configured, or browse [good first issues](https://github.com/control-theory/gonzo/issues?q=is%3Aissue+is%3Aopen+label%3A%22good+first+issue%22) to find your first contribution!
{% endhint %}


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.controltheory.com/controltheory-documentation/gonzo-docs/contributing.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
