Qt Town · community field guide

How the numbers work

About Qt Town and corrections

Names on Qt Town come from public Git history and recorded review trailers. They help recognize the people behind Qt and connect contributors with relevant experience.

To report a website problem or correct a contributor name, create an issue in the QTWEBSITE project in Qt's issue tracker. Start the summary with Qt Town:, link to the affected page, and explain what needs correcting. If two entries represent the same person, include links to public source records that support the correction.

For a confidential inquiry about personal information appearing on Qt Town, consult the Qt Group's published privacy instructions, which list gdpr@qt.io for individual-rights questions. Mention Qt Town and the affected page. Qt Jira issues are public; keep confidential details out of reports and attachments.

A snapshot, not a census

Qt Town publishes a static snapshot built from public Git histories. Each release reports its coverage, date range, snapshot identifier, source check information, and build time. A local repository read does not prove that a remote source was checked successfully at that moment. A new page build alone is not evidence that every source refreshed.

Each HTML and Markdown page identifies an immutable publication manifest. The JSON download contains that manifest, with references to the dataset index, complete commit objects, and browser assets. Version 2 identifies each addressed file by its exact bytes. A new source check can change the manifest while reusing unchanged records and assets. The complete records remain available through those references; the manifest is not a full statistics export.

The site retains the current publication and two previous distinct publication roots with their complete data, export, and browser assets. Version 1 pages keep their recorded identity and frozen browser files while their root remains retained. Statistics filters load and verify the complete dataset before changing those views. Activity repository selection uses the separately verified aggregate for this publication interval and does not load complete commit records. If a pinned file is unavailable or has expired, the published baseline remains available; reload the current page to use the latest publication.

What is counted

The statistics count reachable commits in the selected repository references and inclusive UTC date range. The collector excludes Git commit objects with two or more parents; this is the technical meaning of the non-merge filter. A usual Gerrit change integrated by rebasing onto a linear branch has one parent and is counted. This counting rule is separate from whether a change is submitted to or reviewed in Gerrit. The 30- and 90-day windows end at the snapshot's last covered date; their inclusive ranges clamp to the snapshot's coverage start when shorter than the requested window. Integrations and backports can represent the same underlying change more than once. This release counts covered branch integrations, not unique changes. A future release comparison should report branch integrations separately from deduplicated changes and explain missing or repository-scoped Change-Ids; Qt Town does not currently deduplicate changes across branches. Committer dates are recorded Git timestamps, not verified merge times. Root commits appear in the commit count, while their imported file contents contribute zero added or removed lines. Binary changes contribute zero line counts.

Contributor identities use the snapshot's documented identity mapping. Unresolved addresses remain separate rather than being joined by a guessed name. Public names appear on the site; raw email addresses do not. Added and removed values are recorded line churn, not a measure of effort, quality, or productivity. The initial import baseline and binary changes do not contribute line counts under the collector's rules.

Qt Group address proxy

The “outside qt.io email domain” filter uses the original author email domain as an attribution proxy. It is not an employee list or verified employment history. Email choice and identity resolution can affect this classification.

Fixed Qt 4 archive

The Qt 4 source is the canonical qt.git archive, using only the pinned refs/heads/4.8 ancestry. Its verification time and observed record span are separate from live repository checks and publication build time. The archive contains records from 23 March 2009 through the observed end shown with its source details; it does not establish earlier history. Counts include reachable non-merge integrations across all parents, so backports can count more than once. Root commits count as integrations and have zero line baseline. Recorded reviewer evidence includes only supported final review trailers, not complete Gerrit activity. Historical qt.io email-domain filtering is a literal address-domain proxy and does not establish employment. The archive path does not establish a current maintainer role.

Development branch and release coverage

The default collection uses each Qt module's declared development branch. It does not include separate release-branch histories unless the coverage record explicitly lists them. Qt Town therefore does not present the current view as a release-by-release comparison or a complete history of stable-branch fixes. The superrepository inventory and selected branch heads are described in the coverage record.

Automation

The contribution view excludes only commits carrying the exact qt-submodule-update classification for the Qt Submodule Update Bot account, evidenced by this public qt5.git commit. The rule trims and case-folds the original author address before mailmap identity mapping; it does not infer automation from a name, committer, commit message, or similar-looking account. This is a conservative classification of one known account, not a census of bots. The same filters show a separate count of these updates; Qt Town does not publish a dedicated bot list or chart. The addressed dataset retains all observed commits and reviewer evidence; contribution totals and rankings exclude classified update commits.

Review evidence

Recorded reviewer figures come from review trailers on covered Git commits. Each trailer is associated with the whole change. It does not establish that the reviewer examined every touched file, include every patch-set discussion, or represent every vote or comment. Reviewer suggestions show relevant recorded experience; they do not identify maintainers or promise availability.

The exact original account for Qt Cherry-pick Bot is classified as qt-cherry-pick. Its review evidence remains in the addressed dataset but is omitted from contribution reviewer totals, reviewed-commit counts, and reviewer suggestions. Unknown or unmarked reviewer entries remain eligible.

A human-authored cherry-pick remains a human contribution based on its original Git author; Qt Town does not credit the bot committer or Gerrit owner. This snapshot's review-evidence parser accepts the standard cherry-pick provenance line in a separated footer, so human review trailers can remain available for such a change. See this public Qt Base development commit and Qt's review guidance.

Summary counts identify recorded author and reviewer identities, not verified unique people. Active repositories count repository identities with activity in the current selection. Weekly author counts are distinct recorded identities per week. The line totals measure Git diff churn only; they are not measures of code quality or individual productivity.

Documented maintainer assignments come from the official Qt Maintainers list, revision 46241, checked 10 October 2026. Qt Town matches a listed person only through an exact opaque identity derived from a normalized public email address. It does not guess from names, review activity, or contribution volume. Unmatched aliases and missing badges do not establish that someone has no Qt role. The list documents maintainer responsibilities; Qt Town does not infer approver status from it. This role-source revision and check date are separate from Git collection freshness.

Inventory and branch selection

The full-inventory collection starts from a pinned commit of the qt5.git superrepository. It reads that commit's .gitmodules manifest and includes the superrepository plus every top-level module declared there, regardless of the module's status label. Each module uses its declared branch, such as dev or master. A local build reads the available remote-tracking ref without fetching. Managed updates now fetch these refs directly from the canonical Qt repositories and identify the selected immutable heads as canonical-source checks. Retained releases can still show earlier mirror checks and canonical fallbacks. Failure to establish complete valid coverage stops publication. The collector does not substitute the gitlink commit recorded by the superrepository for the selected branch head.

The public coverage record identifies the pinned manifest commit, declared module count and status, selected branch, and collected source head. A module's manifest integration pin and its selected branch head can differ. A catalog record identifies each selected independent project and its checked head. The Qt for Python record covers only pyside-setup.git on dev. The audited setup history includes PySide and Shiboken component history, but the separate tools history and full examples history remain gaps. The standalone PySide and Shiboken predecessors are not counted again, and dependency gitlink targets are not traversed. This does not cover other branches or every historical PySide repository. The Qbs record covers only qbs.git on master; it does not include other Qbs branches or tags, copied upstream histories, or commits reached through Qt Creator's Qbs gitlink. A Creator commit that updates that gitlink remains a Creator integration. The Qt Installer Framework record covers only installer-framework.git on dev. Other branches and tags, including release lines, remain outside coverage; build dependencies do not add histories. Bundled and copied code remain part of Installer Framework history under the existing counting rules. Manifest-only releases do not include independent project source records. The inventory describes top-level modules declared by the Qt manifest; nested third-party sources and unselected refs remain outside coverage. The fixed Qt 4 archive is identified separately. Check the coverage record and source-check status in each release before comparing results.

Source age uses the oldest successful remote check across the covered repositories. An idle repository can still be current; an old source check does not become current when pages are rebuilt. The site indicates stale or unknown check evidence. An independent check of the Maintainers Wiki revision preserves the reviewed catalog and badges if the source changes or cannot be reached, and identifies when another catalog review is needed.

Public source references

  • The Qt Git repository browser is the canonical source browser used by this release.
  • The Qt GitHub organization identifies its repositories as mirrors of Qt Project Git repositories; a mirror is not by itself proof of canonical ref freshness.
  • The public Qt Gerrit merged-change search provides a separate view of merged changes. This release does not claim full Gerrit event coverage.
  • Qt Town counts the Git snapshot described above. It does not import a historic dashboard's figures or infer its refresh schedule.