Many Ways to Contribute

You don't need to be a Java expert. We value documentation, testing, and community support just as much as code.

💻 Write Code

GeoServer is built with Java and uses Maven. If you want to add features, fix bugs, or optimize performance, check out our contributor guide.

  • Fix issues labeled good first issue on GitHub
  • Develop new plugins or WPS processes
  • Improve styling engines (SLD/SE)
  • Refactor legacy codebases
View Developer Guide →

📚 Improve Documentation

Help users understand GeoServer better by updating the user manual, writing tutorials, or improving Javadoc comments.

  • Fix typos or outdated information
  • Add examples for complex features
  • Translate documentation into other languages
  • Create video walkthroughs
Edit Docs on GitHub →

🐛 Report Bugs

Quality assurance is a team effort. If you find a bug, please report it with clear reproduction steps.

  • Search existing issues before filing new ones
  • Provide log files and stack traces
  • Include your GeoServer version and OS
  • Suggest test data that triggers the issue
Report a Bug on JIRA →

💬 Support Community

Help other users solve problems on the mailing list or chat. Share your knowledge and experiences.

  • Answer questions on the user mailing list
  • Participate in office hours
  • Mentor new contributors
  • Review pull requests
Join Mailing List →
🤝

Community Code of Conduct

We are committed to providing a welcoming and inspiring community for all. Please read and adhere to our Code of Conduct in all interactions. Harassment of any kind will not be tolerated.

Getting Started

Follow these steps to set up your development environment and submit your first contribution.

Development Setup

GeoServer requires JDK 17+ and Apache Maven 3.8+. Follow the steps below to build the project locally.

1

Fork the Repository

Fork the main GeoServer repository on GitHub to your own account.

2

Clone & Build

Clone your fork and build the project with Maven. Skip tests on the first build for speed.

3

Run Development Server

Use the Jetty plugin to run GeoServer in debug mode for local testing.

4

Submit Pull Request

Push your changes to your fork and open a PR against the main branch. Ensure all CI checks pass.

Quick Commands

Common Maven commands for development:

# Build the entire project (skip tests first time)
mvn clean install -DskipTests

# Run GeoServer via Jetty for development
mvn jetty:run -pl web/app

# Run tests for a specific module
mvn test -pl main/web -Dtest=MapTest

# Package release distribution
mvn package -Pdist

💡 Tip: Use an IDE like IntelliJ IDEA or Eclipse with Maven integration for best results.

Contribution Guidelines

Please adhere to these guidelines to ensure smooth review and merge processes:

  • Commit Messages: Follow Conventional Commits format (e.g., fix(#1234): resolve CRS issue)
  • Code Style: Run mvn checkstyle:check to ensure formatting compliance
  • Tests: All new features must include unit tests. Aim for >90% coverage
  • JIRA: Link your PR to a JIRA ticket when available
  • CLA: Sign the Contributor License Agreement before your first PR