Welcome & Community Values
GeoServer is a flagship project of OSGeo and thrives because of its global community. We value:
- Openness: Transparent development, clear communication, and accessible contribution paths.
- Quality: Rigorous testing, clean code, and adherence to OGC standards.
- Inclusivity: Welcoming contributors of all skill levels and backgrounds.
- Sustainability: Maintaining backward compatibility and long-term architectural health.
Start with good-first-issue or documentation labels in our issue tracker. Mentorship is always available.
Prerequisites
Before you begin, ensure your environment meets these requirements:
- Java: JDK 17 or newer (recommended: Temurin or Zulu)
- Build Tool: Apache Maven 3.8.6+
- Version Control: Git 2.30+
- IDE: IntelliJ IDEA or Eclipse (Eclipse has a recommended configuration plugin)
- Database: PostgreSQL/PostGIS (optional, for integration tests)
# Verify installations
java -version
mvn -version
git --version
Development Setup
Fork & Clone
Fork the geoserver/geoserver repository, then clone your fork locally.
git clone https://github.com/YOUR-USERNAME/geoserver.git
cd geoserver
Build the Project
Run a clean build. Skip tests initially to speed up the first run.
mvn clean install -DskipTests
Run the Jetty Module
Start the development server with hot-reload capabilities.
cd web/app
git submodule update --init
mvn jetty:run -pl :geoserver-web
Access at http://localhost:8080/geoserver/web (default: admin/geoserver)
GeoServer relies on external dependencies managed via Git submodules. Always run git submodule update --init --recursive after pulling updates.
Git & Development Workflow
We follow a feature-branch workflow with a strict focus on traceability and reproducibility.
Branching Strategy
main: Stable release branch (never commit directly)main-develop: Active development branch (base for PRs)feature/YOUR-FEATURE: New functionalityfix/GEOT-XXXX: Bug fixes linked to JIRA tickets
Commit Conventions
Use clear, descriptive commit messages. Reference tracker IDs when applicable:
feat: add vector tile optimization for large datasets (GEOT-12345)
- Implement streaming aggregation for WFS-T
- Add unit tests for edge cases
- Update documentation
Coding Standards
Consistency ensures maintainability. GeoServer enforces these rules via automated checks:
- Style: Sun/Oracle Java Code Conventions, 4-space indentation, 120-char max line length
- Checkstyle: Run
mvn checkstyle:checkbefore committing. Warnings will block CI. - Logging: Use SLF4J with parameterized logging. Avoid
System.out.println. - Null Safety: Prefer
Optional, explicit null checks, or@Nullableannotations. - Testing: All new code requires JUnit 5 tests. Target ≥80% coverage for core modules.
Run the full verification suite locally: mvn verify
Pull Request Process
Ready to submit your work? Follow these steps to ensure a smooth review:
- Sync with upstream:
git fetch upstream && git rebase upstream/main-develop - Push your branch:
git push origin feature/your-feature - Create PR: Use the template. Link related JIRA issues and provide context.
- Address reviews: Respond to all comments, make squash/fixup commits if requested.
- CI Checks: Ensure all GitHub Actions pass (build, tests, checkstyle, security scan).
Maintainers typically review within 48 hours. Urgent fixes can be flagged as priority/high.
Code of Conduct
GeoServer community interactions are governed by the OSGeo Code of Conduct. We expect:
- Respectful communication in all channels (GitHub, mailing lists, Slack, conferences)
- Constructive feedback without personal attacks
- Inclusive language and accessibility awareness
- Zero tolerance for harassment, discrimination, or intimidation
Violations should be reported privately to the maintainers team via conduct@geoserver.org. All reports are handled confidentially.
Need Help?
You're not alone. Reach out through any of these channels:
- GitHub Discussions: Best for Q&A and community chat
- dev@geoserver.org: Mailing list for architecture & core development
- Slack (#geoserver-dev): Real-time conversations (invite via OSGeo)
- Weekly Office Hours: Tuesdays, 15:00 UTC (Zoom link in calendar)
Explore the Official Documentation, JIRA Tracker, and Developer Wiki.