--- title: Getting Started description: How to start contributing to Wails v3 --- import { Steps, Tabs, TabItem } from '@astrojs/starlight/components'; ## Welcome, Contributor! Thank you for your interest in contributing to Wails! This guide will help you make your first contribution. ## Prerequisites Before you begin, ensure you have: - **Go 1.25+** installed ([download](https://go.dev/dl/)) - **Node.js 20+** and **npm** ([download](https://nodejs.org/)) - **Git** configured with your GitHub account - Basic familiarity with Go and JavaScript/TypeScript ### Platform-Specific Requirements **macOS:** - Xcode Command Line Tools: `xcode-select --install` **Windows:** - MSYS2 or similar Unix-like environment recommended - WebView2 runtime (usually pre-installed on Windows 11) **Linux:** - `gcc`, `pkg-config`, `libgtk-3-dev`, `libwebkit2gtk-4.0-dev` - Install via: `sudo apt install build-essential pkg-config libgtk-3-dev libwebkit2gtk-4.0-dev` (Debian/Ubuntu) ## Contribution Process Overview The typical contribution workflow follows these steps: 1. **Fork & Clone** - Create your own copy of the Wails repository 2. **Setup** - Build the Wails CLI and verify your environment 3. **Branch** - Create a feature branch for your changes 4. **Develop** - Make your changes following our coding standards 5. **Test** - Run tests to ensure everything works 6. **Commit** - Commit with clear, conventional commit messages 7. **Submit** - Open a pull request for review 8. **Iterate** - Respond to feedback and make adjustments 9. **Merge** - Once approved, your changes become part of Wails! ## Step-by-Step Guide Choose your contribution type: 1. **Find or Report the Bug** - Check if the bug is already reported in [GitHub Issues](https://github.com/wailsapp/wails/issues) - If not, create a new issue with steps to reproduce - Wait for confirmation before starting work 2. **Fork and Clone** Fork the repository at [github.com/wailsapp/wails/fork](https://github.com/wailsapp/wails/fork) Clone your fork: ```bash git clone https://github.com/YOUR_USERNAME/wails.git cd wails git remote add upstream https://github.com/wailsapp/wails.git ``` 3. **Build and Verify** Build Wails and verify you can reproduce the bug: ```bash cd v3 go build -o ../wails3 ./cmd/wails3 # Reproduce the bug to understand it ``` 4. **Create a Bug Fix Branch** Create a branch for your fix: ```bash git checkout -b fix/issue-123-window-crash ``` 5. **Fix the Bug** - Make the minimal changes needed to fix the bug - Don't refactor unrelated code - Add or update tests to prevent regression ```bash # Make your changes # Add tests in *_test.go files ``` 6. **Test Your Fix** Run tests to ensure the fix works: ```bash go test ./... # Test the specific package go test ./pkg/application -v # Run with race detector go test ./... -race ``` 7. **Commit Your Fix** Commit with a clear message: ```bash git commit -m "fix: prevent window crash when closing during initialization Fixes #123" ``` 8. **Submit Pull Request** Push and create PR: ```bash git push origin fix/issue-123-window-crash ``` In your PR description: - Explain the bug and root cause - Describe your fix - Reference the issue: "Fixes #123" - Include before/after behavior 9. **Respond to Feedback** Address review comments and update your PR as needed. 1. **Discuss the Feature** - Open a [GitHub Discussion](https://github.com/wailsapp/wails/discussions) or issue - Describe what you want to add and why - Wait for maintainer feedback before implementing - Ensure it aligns with Wails' goals 2. **Fork and Clone** Fork the repository at [github.com/wailsapp/wails/fork](https://github.com/wailsapp/wails/fork) Clone your fork: ```bash git clone https://github.com/YOUR_USERNAME/wails.git cd wails git remote add upstream https://github.com/wailsapp/wails.git ``` 3. **Setup Development Environment** Build Wails and verify your environment: ```bash cd v3 go build -o ../wails3 ./cmd/wails3 # Run tests to ensure everything works go test ./... ``` 4. **Create a Feature Branch** Create a descriptive branch: ```bash git checkout -b feat/window-transparency-support ``` 5. **Implement the Feature** - Follow our [Coding Standards](/contributing/standards) - Keep changes focused on the feature - Write clean, documented code - Add comprehensive tests ```bash # Example: Adding a new window method # 1. Add to window.go interface # 2. Implement in platform files (darwin, windows, linux) # 3. Add tests # 4. Update documentation ``` 6. **Test Thoroughly** Test your feature: ```bash # Unit tests go test ./pkg/application -v # Integration test - create a test app cd .. ./wails3 init -n feature-test cd feature-test # Add code using your new feature ../wails3 dev ``` 7. **Document Your Feature** - Add docstrings to all public APIs - Update relevant documentation in `/docs` - Add examples if applicable 8. **Commit with Convention** Use conventional commits: ```bash git commit -m "feat: add window transparency support - Add SetTransparent() method to Window API - Implement for macOS, Windows, and Linux - Add tests and documentation Closes #456" ``` 9. **Submit Pull Request** Push and create PR: ```bash git push origin feat/window-transparency-support ``` In your PR: - Describe the feature and use cases - Show examples or screenshots - List any breaking changes - Reference the discussion/issue 10. **Iterate Based on Review** Maintainers may request changes. Be patient and collaborative. 1. **Identify Documentation Needs** - Found outdated docs while using Wails? - Notice missing examples or explanations? - Want to fix typos or improve clarity? - Check [documentation issues](https://github.com/wailsapp/wails/labels/documentation) 2. **Fork and Clone** Fork the repository at [github.com/wailsapp/wails/fork](https://github.com/wailsapp/wails/fork) Clone your fork: ```bash git clone https://github.com/YOUR_USERNAME/wails.git cd wails git remote add upstream https://github.com/wailsapp/wails.git ``` 3. **Setup Documentation Environment** The docs are in `/docs` and built with Astro: ```bash cd docs npm install npm run dev ``` Open http://localhost:4321/ to preview changes live. 4. **Create a Documentation Branch** Create a branch for your changes: ```bash git checkout -b docs/improve-window-api-examples ``` 5. **Make Your Changes** Documentation files are in `/docs/src/content/docs/`: ```bash # Edit MDX files # Check the preview in your browser # Ensure formatting is correct ``` **Best Practices:** - Use clear, concise language - Include practical code examples - Add links to related sections - Check spelling and grammar - Test all code examples 6. **Verify Your Changes** Check the live preview and ensure: - Links work correctly - Code examples are accurate - Formatting renders properly - No broken images or references 7. **Commit Documentation Changes** Commit with clear message: ```bash git commit -m "docs: add practical examples to Window API guide - Add window positioning examples - Include common patterns section - Fix broken links to Event API" ``` 8. **Submit Pull Request** Push and create PR: ```bash git push origin docs/improve-window-api-examples ``` In your PR: - Describe what docs you improved - Explain why the change helps users - Include screenshots if visual changes 9. **Address Review Feedback** Documentation PRs are usually quick to review and merge! ## Finding Issues to Work On - Look for [`good first issue`](https://github.com/wailsapp/wails/labels/good%20first%20issue) labels - Check [`help wanted`](https://github.com/wailsapp/wails/labels/help%20wanted) issues - Browse [open issues](https://github.com/wailsapp/wails/issues) and ask to be assigned ## Getting Help - **Discord:** Join [Wails Discord](https://discord.gg/JDdSxwjhGf) - **Discussions:** Post in [GitHub Discussions](https://github.com/wailsapp/wails/discussions) - **Issues:** Open an issue if you find a bug or have a question ## Code of Conduct Be respectful, constructive, and welcoming. We're building a friendly community focused on creating great software together. ## Next Steps - Set up your [Development Environment](/contributing/setup) - Review our [Coding Standards](/contributing/standards) - Explore the [Technical Documentation](/contributing)