GitHub gehört zu den wichtigsten Plattformen für die Softwareentwicklung weltweit. Ein Kernelement dieser Plattform ist die Issues-Suche, die Entwicklern hilft, Bugs, Feature Requests oder alle anderen gemeldeten Themen effizient zu finden. Lange Zeit war diese Suche auf eine einfache und lineare Syntax beschränkt, die nur logische UND-Verknüpfungen erlaubte. Dies schränkte die Flexibilität ein, insbesondere bei komplexen Anforderungen an die Suche. Im Mai 2025 wurde jedoch eine bedeutende Verbesserung eingeführt: Die GitHub Issues-Suche unterstützt jetzt verschachtelte Abfragen und boolesche Operatoren wie AND und OR, um differenziertere Suchanfragen zu ermöglichen.
Diese Neuerung eröffnet Entwicklern und Teams völlig neue Möglichkeiten bei der Fehlerbehebung und Projektübersicht. Zunächst war die Issues-Suche von GitHub auf einfache, flache Anfragen ausgelegt, bei denen einzelne Kriterien durch UND-Verknüpfungen verbunden wurden. Das bedeutete, dass mehrere Suchfilter wie Assignee, Label oder Status stets gemeinsam erfüllt sein mussten. Für viele Nutzer war diese Einschränkung frustrierend, weil sie beispielsweise alle Issues finden wollten, die entweder ein bestimmtes Label besitzen oder von einem bestimmten Autor stammen. Bis dahin konnte man lediglich über eine Komma-separierte Liste innerhalb eines Feldes eine OR-Verknüpfung realisieren, aber nicht über mehrere Felder hinweg oder durch komplexe Schachtelungen.
Der Drang der Entwickler-Community nach mehr Flexibilität war über Jahre spürbar. GitHub reagierte 2021 erstmals mit einer Erweiterung, die OR-Verknüpfungen für Listen von Labels ermöglichte. Doch das reichte vielen Nutzern nicht, die sich eine systemweite, allgemein gültige Lösung für boolesche Operatoren wünschten. So wurde das Entwicklungsteam motiviert, die Suche grundlegend neu zu konzipieren und zu implementieren. Technisch bedeutete dies einen tiefgreifenden Umbau der Such-Engine, die bisher einfach strukturierte Suchanfragen linear verarbeitete.
Die alte Architektur basierte auf einem Modul namens IssuesQuery, das Suchbegriffe analysierte und daraus Elasticsearch-Anfragen generierte. Die Herausforderung bestand darin, eine neue Such-Engine zu bauen, die komplexe geschachtelte boolesche Ausdrücke verstehen, verarbeiten und schnell ausführen kann, ohne dabei die bewährte Rückwärtskompatibilität zu gefährden. Die Lösung war die Einführung eines neuen Moduls namens ConditionalIssuesQuery. Dieses Modul kann verschachtelte Abfragen mit beliebig geschachtelten AND- und OR-Bedingungen abbilden. Statt einer einfachen Liste von Suchfiltern wird nun ein abstrakter Syntaxbaum (AST) erzeugt, der die logische Struktur der Suchanfrage repräsentiert.
Für die Umsetzung wurde die Parsing-Bibliothek parslet eingesetzt, die mit Hilfe einer Parsing Expression Grammar (PEG) die komplexe Syntax analysiert. Dieses Verfahren ermöglicht, dass eine Suche wie „is:issue AND (author:deborah-digges OR author:monalisa)“ in einen Baum zerlegt wird, der die einzelne Suchbedingungen sowie deren logische Verknüpfung miteinander widerspiegelt. Der Ansatz, boolesche Ausdrücke als AST zu modellieren, ist entscheidend für eine präzise Verarbeitung der Anfragen. Die Suchmaschine traversiert diesen Baum rekursiv und wandelt jede Bedingung in ein entsprechendes Elasticsearch Query-Element um. So lassen sich beispielsweise AND-Operatoren in Elasticsearch-Must-Clauses und OR-Operatoren in Should-Clauses übersetzen.
Dadurch generiert die Suchengine eine fein abgestimmte, performante Suche, die auch sehr komplexe verschachtelte Bedingungen abbilden kann. Die Umstellung erforderte umfassende Tests und Performance-Messungen. Eine so zentrale Funktion wie die Issues-Suche mit durchschnittlich etwa 2000 Suchanfragen pro Sekunde stellt extrem hohe Anforderungen an Effizienz und Stabilität. GitHub setzte daher eine Kombination aus Unit-Tests, Integrationstests und sogenannten Dark-Shipments ein, bei denen ein Prozent aller Suchanfragen parallel von beiden Suchsystemen ausgeführt wurden, um Regressions- und Fehleraufkommen frühzeitig zu erkennen. Performance wurde mit GitHub’s Open Source Ruby-Library Scientist überwacht, um sicherzustellen, dass die neue Suche keine Verschlechterung gegenüber dem alten System darstellt.
Ein wichtiger Aspekt bei Solch einer groß angelegten Neuerung ist aber auch der Nutzerkomfort. GitHub wählte hier einen behutsamen Rollout, beginnend im GraphQL API und in der Issues-Tab eines Repositories. Erst nach der positiven Validierung erfolgte die Ausweitung auf die REST API und das Issues-Dashboard. Die User Experience wurde sorgfältig optimiert – so werden die AND/OR-Operatoren etwa in der Suchleiste farblich hervorgehoben, und die bisherige Autovervollständigung für Filterbegriffe wurde so erweitert, dass sie auch bei verschachtelten Abfragen unterstützt wird. Um die Suchsyntax nicht über Gebühr zu verkomplizieren, wurde eine maximale Verschachtelungstiefe von fünf Ebenen definiert, was die meisten praktischen Anwendungsfälle abdeckt und die Bedienbarkeit erhält.
Für Entwickler bedeutet die neue Suche eine wesentlich gesteigerte Flexibilität und Genauigkeit. Sie können jetzt sehr spezifische Suchanfragen formulieren, die etwa alle offenen Issues eines Projekts anzeigen, die entweder einem bestimmten Entwickler zugewiesen sind oder ein spezielles Label tragen. Das Erstellen solcher Abfragen spart Zeit und verbessert die Qualität der Arbeit, da relevante Issues zielgerichtet identifiziert werden. Darüber hinaus fördert die erweiterte Suchfunktion auch die Transparenz und Zusammenarbeit in Teams. Indem komplexe Filter möglich werden, lassen sich Berichte und Suchabfragen leichter teilen, dokumentieren und reproduzieren.
Entwickler können sich auf die wirklich wichtigen Issues konzentrieren, ohne sich durch eine Vielzahl irrelevanter Tickets wühlen zu müssen. Die kontinuierliche Verbesserung der GitHub Issues-Suche zeigt auch, wie wichtig es ist, etablierte Softwareplattformen laufend an die Bedürfnisse ihrer Nutzer anzupassen und dabei technische Innovationen einzubauen. Gerade bei Funktionen, die täglich millionenfach genutzt werden, ist ein verantwortungsvoller Entwicklungsprozess gefragt. GitHub demonstriert hier beispielhaft, wie technische Herausforderungen mittels moderner Architektur, sorgfältigem Testing und einem schrittweisen Rollout gemeistert werden können. Wer das neue Suchsystem in der Praxis ausprobieren möchte, findet in den offiziellen GitHub-Dokumentationen umfassende Anleitungen und Beispiele.
Dort wird etwa erläutert, wie man boolesche Operatoren einsetzt und welche Einschränkungen bzw. Regeln bei der Syntax zu beachten sind. Die GitHub-Community steht zudem bereit, um Feedback entgegenzunehmen und den weiteren Ausbau der Suchfunktion mitzugestalten. Insgesamt markiert die Einführung der Unterstützung für verschachtelte Abfragen und boolesche Operatoren einen bedeutenden Fortschritt für alle Nutzer, die innerhalb von GitHub Issues präzise und effizient arbeiten möchten. Die Fähigkeit, komplexe Suchlogiken abzubilden, verbessert die Workflow-Qualität erheblich und fördert letztlich die Produktivität in der Softwareentwicklung.
GitHub hat damit erneut unter Beweis gestellt, wie wichtig es ist, etablierte Funktionen durch moderne Technologien zu ergänzen und gleichzeitig den Nutzerfokus nie aus den Augen zu verlieren.