Open-source project
oracle/opengrok avatar
oracle/opengrok

OpenGrok: Oracle's source browser that indexes version history too

OpenGrok is a fast and usable source code search and cross reference engine, written in Java

4,966 stars844 forksJavaNOASSERTION

At a glance

What is it?
OpenGrok is a fast and usable source code search and cross reference engine written in Java, originally conceived at Sun Microsystems in 2006 and now maintained by Oracle, helping teams search, cross-reference and navigate source trees while understanding program file formats and the version control histories of many systems. Releases follow semantic versioning with reindex rules encoded in the version numbers, the current line is 1.14, and a Docker image runs the full stack on Tomcat.
Who is it for?
Run OpenGrok when a team needs private, self-hosted code search across large trees and their version control history, the gap hosted code hosts leave when source cannot leave the building. Note the operational contract before deploying, minor version upgrades require a full clean reindex, major ones also change configuration, and only micro versions allow backward movement, so pin deliberately.
Can I use it commercially?
Check first. The repository uses a licence we do not classify automatically, so read its LICENSE file before any commercial use.
Is it still maintained?
Yes. The repository last received commits 1 day ago.
What is it written in?
Mainly Java, according to GitHub's language statistics.

Answers come from the project's GitHub data, last synced on September 30, 2026, and from our analysis. They are not legal advice.

Editorial analysis

A source browser born at Sun in 2006

OpenGrok is a fast and usable source code search and cross reference engine, written in Java, that helps you search, cross-reference and navigate your source tree, with the distinctive capability that it can understand various program file formats and version control histories of many source code management systems, so blame, history and cross references arrive in the same interface as search. The lineage is documented rather than guessed, the project was originally conceived in Sun Microsystems by Chandan B.N., and the copyright now runs to Oracle and its affiliates from 2006 through 2025, making this one of the longest continuously maintained open source developer tools in corporate hands. The official page sits at oracle.github.io/opengrok, with the release line 1.14 moving steadily, 1.14.17 on 2026-08-24, 1.14.18 on 2026-09-02 and 1.14.19 on 2026-09-14.

Semver with an operational gloss

OpenGrok uses semantic versioning, but the README assigns each component an operational meaning beyond compatibility, a table worth pinning above a deployment. A major version change is a major backwards incompatible update requiring a full reindex as well as configuration changes. A minor change needs a full clean reindex of your repositories, the example reason given being that the index format has changed. A micro change requires only redeploying the web application. The closing rule is the one that bites, generally it is possible to go backward only within the micro version, so a minor upgrade is effectively a commitment, and the version number you choose carries a migration plan with it rather than just a changelog. Reading the three rows together yields a deployment strategy, stay on a micro train for stability, schedule minor upgrades as maintenance windows with reindex time budgeted, and treat major jumps as projects with configuration migration work attached, because the index, not the binary, is the expensive artifact to rebuild on a large source tree.

Installation lives on the wiki

The README's installation section is a pointer, see the How to setup OpenGrok wiki page, with developer information likewise routed to wiki pages, and this is a deliberate division, the setup procedure is long enough to be versioned and updated independently of the release. For the container path, the Dockerfile builds in two stages, an ubuntu:jammy builder installing OpenJDK 21 and Python 3 with a Maven world cached in an early layer so incremental builds resume after the pom, a dummy build priming dependencies before the real package step, and a distribution tar.gz lifted from the target directory. The runtime stage is tomcat:10.1.59-jdk21, so the web application deploys into Tomcat with the indexer tooling beside it, the complete search service in one image. The caching strategy in the builder stage is worth copying for any Maven project of this size, copying only the pom files and module descriptors into the first layer and running a dummy package means a one line source change does not redownload the dependency graph, which is the difference between container rebuilds measured in minutes and ones measured in tens of minutes.

The indexer, the web app, and the suggester

The Maven module structure names the architecture, opengrok-indexer as the indexing engine, opengrok-web as the search interface deployed to the servlet container, plugins for extension, suggester for query completion, tools for command line helpers, and distribution for packaging. An openapi.yaml at the root documents the REST API surface, the programmatic side that search integrations and the vscode-style clients consume. Language support is visible in the repository's license files, separate LICENSE texts for adaic.org, eclipse, ecma, mandoc, ruby and scala analyzers, a small archaeology of the file formats the engine understands, each analyzer carrying its own licensing provenance beside the main CDDL-1.0 license the badge references. The suggester module powers the query completion in the web interface, drawing on the indexed identifiers so that partial queries propose real symbols from the codebase, and the plugins module provides the extension surface for site specific analyzers and behavior without forking the core.

Oracle's process, applied to an open source project

The repository carries the full corporate open source apparatus, a CONTRIBUTING.md gating pull requests, a SECURITY.md describing a responsible security vulnerability disclosure process, GitHub Discussions as the contact channel, and SonarCloud badges watching code quality on new code. The Dockerfile itself carries hadolint suppression comments, a linting discipline for the container build, and per-file copyright headers reaching 2026. This is what a two decade old project looks like under sustained corporate maintenance, process heavy, quietly updated, with the master branch pushed 2026-09-21 and JetBrains noted among the powered by credits for development tooling. For teams evaluating self-hosted code search, the age cuts both ways, the feature set is settled and the failure modes are known, while the interface reflects its long history rather than current web fashion, a trade every buyer weighs against the privacy and scale guarantees a self-hosted engine provides.

Editorial conclusion

Run OpenGrok when a team needs private, self-hosted code search across large trees and their version control history, the gap hosted code hosts leave when source cannot leave the building. Note the operational contract before deploying, minor version upgrades require a full clean reindex, major ones also change configuration, and only micro versions allow backward movement, so pin deliberately. Installation instructions live on the wiki rather than the README, the current release line 1.14 moves about weekly, and the container route wraps the indexer and web application in one Tomcat image built from an Ubuntu JDK 21 builder.

Frequently asked questions

what is opengrok?

OpenGrok is a fast and usable source code search and cross reference engine written in Java, maintained by Oracle and originally conceived at Sun Microsystems in 2006. It helps teams search, cross-reference and navigate source trees, understanding program file formats and the version control histories of many source code management systems.

Is OpenGrok free?

OpenGrok is open source, with the main code under the CDDL-1.0 license referenced by its badge and per-analyzer license files for supported languages. It can be self-hosted without charge, including as a Docker container.

Who owns OpenGrok?

The project is under Oracle, with copyright running to Oracle and its affiliates from 2006 through 2025, after being originally conceived at Sun Microsystems by Chandan B.N. Development happens in the open at github.com/oracle/opengrok with contributors listed on GitHub.

how to install opengrok?

Setup instructions are maintained on the project wiki's How to setup OpenGrok page rather than the README. For containers, a Docker image builds from an Ubuntu JDK 21 stage and deploys to Tomcat 10.1, and after any install or upgrade, remember the version rules, minor upgrades need a full clean reindex and micro upgrades only a web application redeploy.

what does opengrok do?

It indexes a source tree so developers can search and cross-reference code and navigate version control history from a web interface, running as an indexer plus a servlet web application with a REST API documented in openapi.yaml, and it understands many program file formats and source code management systems.

Official sources

  1. Issues
  2. oracle/opengrok on GitHub
  3. Project website
  4. README
  5. Releases
Add this badge to your README

If you maintain this project, the badge below links readers to this analysis and shows its maintenance status from the daily GitHub snapshot. Paste the markdown into your README; add ?metric=license or ?metric=stars to the image URL for a different field.

Add this badge to your README

markdown
[![Hysen Labs](https://hysenlabs.com/badge/oracle-opengrok.svg)](https://hysenlabs.com/projects/oracle-opengrok)