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 issueon GitHub - Develop new plugins or WPS processes
- Improve styling engines (SLD/SE)
- Refactor legacy codebases
📚 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
🐛 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
💬 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
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.
Fork the Repository
Fork the main GeoServer repository on GitHub to your own account.
Clone & Build
Clone your fork and build the project with Maven. Skip tests on the first build for speed.
Run Development Server
Use the Jetty plugin to run GeoServer in debug mode for local testing.
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:checkto 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