Übertragung von Suchanfragen in Spotlight unter macOS deaktivieren

In den neueren Versionen von Spotlight unter macOS besteht die Möglichkeit Suchanfragen an Apple zu übertragen, um der Firma bei der Verbesserung der Suchfunktion zu helfen. Auch wenn dort eine Anonymisierung vorgenommen werden soll, trägt dieses Verhalten doch einen schalen Beigeschmack.

Die Spotlight-Einstellungen

Um dies zu deaktivieren, müssen im ersten Schritt die Einstellungen geöffnet werden. Dort sollten dann die Einstellungen für Spotlight selektiert und dort der Punkt Apple beim Verbessern der Suche helfen deaktiviert werden. Anschließend werden keine Suchanfragen mehr an Apple übertragen.

Beispiel gefällig?

In der IT-Welt gibt es zahlreiche Fälle, in denen Platzhalterwerte für Dokumentationen, Tests und Simulationen benötigt werden. Diese Werte sollen realistisch erscheinen, dürfen aber nicht zu echten, existierenden Daten führen.

Auch über die IT-Welt hinaus werden solche Werte hier und da verwendet, sei es in Film und Fernsehen, in Spielen oder anderen Medien.

Natürlich können sich solche Beispielwerte einfach ausgedacht werden. Bei zugeteilten Ressourcen, wie Domains, Telefonnummern oder IP-Adressen kann dies allerdings zu Problemen führen.

Der Missbrauch echter Domains oder IP-Adressen kann dort zu technischen Problemen, Datenschutzverletzungen oder rechtlichen Konsequenzen führen.

In diesem Artikel werden die Hintergründe, die technischen Standards und die Best Practices im Umgang mit solchen Ressourcen, wie Beispieldomains, IP-Adressen und anderen reservierten Werten behandelt.

Nutzung

Im ersten Moment stellt sich vielleicht die Frage, wo solche Beispieldaten bzw. Ressourcen benötigt werden.

In Dokumentationen und Handbüchern oder auch Anleitungen für unterschiedlichste Netzwerkgeräte oder Software werde Dinge wie IP-Adressen oder URLs gezeigt. Wünschenswert ist es, bei solchen Beispielen keine echten Ressourcen zu involvieren.

In der Softwareentwicklung und beim Testen von Anwendungen setzen Entwickler gezielt Beispiel-Adressen ein. Diese Praxis dient dazu, sicherzustellen, dass Quellcode-Beispiele und Testumgebungen niemals versehentlich mit Produktivressourcen interagieren. So kommen in Unit-Tests oder Konfigurationsdateien oft Dummy-Domains wie example.org oder test.example zum Einsatz.

Auch IP-Adressen werden bewusst gewählt, um reale Systeme nicht zu beeinflussen.

Das Gleiche gilt für Telefonnummern, wer hier auf einer Visitenkartenvorlage eine Nummer zeigt, möchte sicherstellen, dass diese nicht genutzt wird oder Unbeteiligte belästigt werden.

In Produktdemos oder Marketingmaterial befinden sich oft Platzhalter. Etwa Screenshots einer CRM-Software zeigen Max Mustermann – +1 555 0176 als Kontakt, um realistische Daten vorzuführen, ohne echte Personen und Nummern preiszugeben.

Oder ein Cloud-Anbieter demonstriert eine Konsole mit einem fiktiven Server server.example.com und der IP 203.0.113.42, um die Oberfläche exemplarisch darzustellen.

In der Systemadministration werden separate Testumgebungen mit Dummy-Daten betrieben. Beispielsweise könnte ein E-Mail-System auf einer internen Domain test.example laufen, damit Test-E-Mails nicht in die Außenwelt gelangen. Datenbanken in Staging-Systemen enthalten Telefonnummern aus einem Pool von Beispielnummern, damit keine versehentlichen SMS oder Anrufe an echte Kunden herausgehen.

In all diesen Fällen dienen die Beispielwerte dazu, realitätsnahe Situationen nachzustellen, ohne reale Adressen, Telefonnummern oder weitere zugeteilten Ressourcen zu benutzen. Dadurch können Lernende, Entwickler oder Nutzer gefahrlos experimentieren und die Beispiele nachvollziehen, ohne unbeabsichtigte Seiteneffekte in der realen Welt.

Unberechtigte Nutzung reservierter Ressourcen

Oft jedoch werden solche reservierten Ressourcen verwendet, ohne auf deren Verfügbarkeit zu achten. Ein Beispiel für eine solche Nutzung ist die E-Mail-Adresse , welche insbesondere vor einigen Jahren gerne und häufig als Absender-Adresse für Newsletter oder Support-E-Mails verwendet wurde.

Mit dem notwendigen Kleingeld kann auch als E-Mail-Adresse genutzt werden

Derjenige der die Kontrolle über die Domain noreply.com ausübt, kann diese dazu nutzen, E-Mails, welche auf solchen E-Mail-Adressen auflaufen zu empfangen und damit potenziell missbräuchlich nutzen.

Eine fiktive und doch reale Domain aus dem Spiel „Do Not Feed the Monkeys“

Auch in anderen Medien, wie Spielen, sind immer wieder Domains zu finden, welche im besten Fall dem Spieleproduzenten gehören, im schlimmsten Fall aber andere Eigentümer haben.

Die Domain steht zum Verkauf

Was auf den ersten Blick harmlos erscheint, kann zu Problemen und ernsthaften Konsequenzen führen.

Risiken und Nebenwirkungen

Zu den Risiken und Nebenwirkungen der Verwendung solcher Ressourcen, welche nicht im Eigentum liegen, oder für den Beispielgebrauch vorgesehen sind, zählen unter anderem juristische Konsequenzen. Die unberechtigte Nutzung einer existierenden Telefonnummer oder IP-Adresse oder Domain kann zu rechtlichen Problemen führen.

Leser oder Anwender können der Versuchung erliegen, eine beispielhafte Telefonnummer anzurufen oder eine Kreditkarten-Testnummer als reale Nummer zu verwenden.

Das geschieht öfter als gemeinhin angenommen, z. B. mit amerikanischen Sozialversicherungsnummern. 1938 verwendete ein Geldbörsenhersteller, die E. H. Ferree Company, für Werbezwecke die echte Social Security Number der Sekretärin des Vizepräsidenten, Hilda Schrader Whitcher, auf einer Musterkarte, die in jede verkaufte Brieftasche eingelegt wurde. Trotz Aufdrucken wie Specimen und rotem Druck hielten viele Käufer die Karte für echt und übernahmen die Nummer als ihre eigene.

Zum Höhepunkt im Jahr 1943 nutzten über 5.700 Menschen diese Nummer. Insgesamt haben sie über 40.000 Menschen genutzt. Selbst 1977 benutzten noch zwölf Personen diese Sozialversicherungsnummer. Die Social Security Administration musste die Nummer für ungültig erklären und breit kommunizieren, dass sie nicht verwendet werden darf. Whitcher selbst wurde wegen des Vorfalls sogar vom FBI befragt, empfand den ganzen Trubel aber eher als Ärgernis.

Neben diesem Vorfall gab es immer wieder ähnliche Vorfälle auch mit anderen gefälschten oder illustrativen Sozialversicherungsnummern — unter anderem veröffentlichte das Social Security Board selbst 1940 ein Heft mit einer Fantasienummer (219-09-9999), die später ebenfalls von echten Personen beansprucht wurde.

In der IT verhindern reservierte Adressen, dass Testsoftware Schaden anrichtet. Ohne Beispieladressen könnte es passieren, dass ein Entwickler, natürlich nur zum Test, hart kodierte IP-Adressen oder Domains einbaut, die zufällig jemandem gehören. Im schlimmsten Fall sendet eine solche Software dann Daten an Unbefugte oder beeinträchtigt fremde Systeme.

Mit Beispiel-IPs wie 192.0.2.42 sind solche Kollisionen absichtlich ausgeschlossen. Auch werden potenzielle Konflikte mit künftigen echten Zuweisungen vermieden – ein wichtiger Grund, der auch in der RFC 2606 genannt wird. Niemand muss befürchten, dass etwa die Domain example.com nächstes Jahr von einer Firma registriert oder gekauft wird und plötzlich von bestehender Nutzung real angesprochen wird. Die Domain ist fest als reserviert vorgesehen und dadurch, besser als gewöhnliche Domains, abgesichert.

Insgesamt sind Risiken vorhanden, die von möglichen Belästigungen Unbeteiligter über potenzielle Datenlecks bis hin zu rechtlichen Fragen reichen.

Daher gilt: Real existierende Telefonnummern, Domains oder IP-Adressen haben in Publikationen und Tests nichts verloren, sofern sie nicht ausdrücklich zur Demonstration ausgewählt und genehmigt wurden und sich idealerweise im Eigentum des Nutzers befinden.

Domains

Wer eine Domain als Beispiel nutzen möchte, sollte im einfachsten Fall darauf achten, dass diese Domain im eigenen Besitz und entsprechende Kontrolle über die Domain vorhanden ist.

Dann wäre es kein Problem, eine E-Mail-Adresse wie zu nutzen. Werden Domains allerdings nur als Beispiel benötigt, so kann sich mit einer Beispiel-Domain wie example.com beholfen werden.

Solche Beispieldomains werden in einer Reihe von RFCs, wie der RFC 2606, definiert.

Die Domain example.com ist als Beispieldomain verfügbar

Dort sind die Domains example.com, example.net und example.org als Beispiel-Domains definiert.

In Dokumentation und Beispielen sollten solche Domains verwendet werden, anstatt auf beliebte echte Domains wie yourdomain.com, noreply.com oder im deutschsprachigen Raum auf beispiel.de zu verweisen.

beispiel.de versteht sich als Beispiel-Domain

Auch wenn sich die Domain beispiel.de als Beispiel-Domain versteht, so trägt sie doch keinen offiziellen Status und sollte deshalb nicht als Beispiel für eine solche in Betracht gezogen werden.

Beispiel.de steht ebenfalls zum Verkauf

So steht die Domain mittlerweile zum Verkauf und kann in Zukunft eine andere Nutzung erfahren, die mit dem Beispielzweck nicht übereinstimmt.

Vor allem in TV und Film wurden in der Vergangenheit auch gerne Domains mit ungültigen Top-Level-Domains wie z. B. der .web-Domain verwendet. So tauchte im James-Bond-Film Skyfall die Webadresse www.868000.web auf, während im Film Next Day Air die Domain www.nda.web auftauchte.

Das wird spätestens zu einem Problem, wenn die Top-Level-Domain .web in Zukunft eventuell angeboten wird. Ein vergleichbarer Fall ereignete sich 2024 bei AVM mit der Domain fritz.box.

Neben diesen konkreten Domains sind spezielle Top-Level-Domains für Beispiele reserviert. Diese sind in der RFC 2606 definiert worden. Hierzu gehören die Endungen .test, .example, .invalid und .localhost.

Die Top-Level-Domain .test wird für Tests von aktuellem oder neuem DNS-bezogenem Code empfohlen, während .example bevorzugt in Dokumentationen oder als Beispiel verwendet werden sollte.

Die Top-Level-Domain .invalid ist für solche Domains vorgesehen, die als sicher ungültig erkannt werden sollen.

Zudem wurde die TLD .localhost traditionell in DNS-Implementierungen statisch definiert, um einen A-Record auf die Loopback-IP-Adresse zu verweisen. Sie ist ausschließlich für diesen Zweck reserviert, da jede andere Nutzung mit weitverbreitetem Code in Konflikt geraten würde, der von dieser spezifischen Verwendung ausgeht.

IP-Adressen

Auch bei IP-Adressen kann die Nutzung falscher Beispiele zu Problemen führen. In Film und Fernsehen sind manchmal interessante Kombinationen wie 138.168.212.473 zu sehen, bei welcher es sich um eine ungültige IP-Adresse handelt.

Auch die Nutzung bekannter IP-Adressen, wie der 8.8.8.8 des Google Public DNS-Services, sollte nicht als Beispiel-IP-Adresse eingesetzt werden.

Besser und sicherer ist es hier dafür speziell vorgesehene Bereiche für Dokumentationszwecke zu nutzen. Definiert werden diese für IPv4-Adressen in der RFC 5737. Dabei sind mehrere Bereiche vorgesehen:

192.0.2.0/24
198.51.100.0/24
203.0.113.0/24

Die Blöcke tragen hierbei die Namen TEST-NET-1 (192.0.2.0/24), TEST-NET-2 (198.51.100.0/24) und TEST-NET-3 (203.0.113.0/24).

Gemäß der RFC sollen diese Blöcke von Adressen nicht im Internet auftauchen und in Netzwerken sollten diese Adressblöcke in die Liste der nicht routingfähigen Adressräume aufgenommen werden.

Damit gehören diese Adressbereiche nicht zu realen Netzwerken und können sicher in Handbüchern, Dokumentationen und Beispielen verwendet werden.

Natürlich könnten in der Theorie auch andere Bereiche genutzt werden, wie einer der privaten Adressbereiche wie 192.168.0.0/16. Somit wäre eine IP-Adresse wie 192.168.1.1 auf den ersten Blick unbedenklich. Allerdings werden diese IP-Adressen in internen Netzen produktiv genutzt und fallen damit als Beispiele in vielen Fällen weg.

Für besagte Dokumentationszwecke sind somit die oben genannten TEST-NET-Adressen vorzuziehen, weil sie global eindeutig als Beispieladressen kenntlich sind und nicht mit realen Netzen kollidieren.

Für IPv6 wurde ebenfalls ein Bereich bzw. ein Präfix für Dokumentationszwecke vorgegeben. Definiert ist dieses Präfix in der RFC 3849. Der für Dokumentationszwecke reservierte /32-Bereich lautet: 2001:0DB8::/32.

Jede IPv6-Adresse, die mit 2001:DB8 beginnt, ist somit als fiktiv für Dokumentations- und ähnliche Zwecke ausgewiesen.

Zusätzlich existiert für spezielle Protokoll-Demonstrationen ein reservierter IPv4-Multicast-Adressbereich mit dem Namen MCAST-TEST-NET (233.252.0.0/24), der in RFC 5771 definiert ist. Dieser Bereich ist für Demonstrations- und Beispielzwecke vorgesehen, doch im Alltag sind hauptsächlich die oben genannten Adressbereiche relevant.

Telefonnummern

Eine weitere zugeteilte Ressource sind Telefonnummern. Welche Folgen die unbedachte Verwendung realer Nummern haben kann, zeigt der Song Skandal im Sperrbezirk der Spider Murphy Gang. Dort heißt es im Songtext:

Ja, Rosi hat ein Telefon
Auch ich hab ihre Nummer schon
Unter zwounddreißig sechzehn acht
Herrscht Konjunktur die ganze Nacht

Die dort besungene Telefonnummer 32 16 8 sollte angeblich einer älteren Dame gehören, allerdings erzählte der Sänger Günther Sigl in einem Interview eine andere Geschichte dazu:

Richtig, 32168 war auf einmal die berühmteste Telefonnummer Deutschlands. In München hatten wir die Nummer gecheckt, die gab’s da damals nicht. In anderen Städten aber schon. Einige Jugendliche haben sich da einen Spaß gemacht, angerufen und blöd dahergeredet. Naja, wir haben damals einige Rufnummernänderungen bezahlt und zahlreiche Blumensträuße als Entschuldigung quer durch Deutschland geschickt.

Seit 2006 ist der Rufnummernblock (0)89 32168 000 bis (0)89 32168 999 der Telefónica zugewiesen.

Statt echter Nummern können zu diesem Zweck reservierte Bereiche, sogenannte Drama Numbers, genutzt werden. Im deutschen Raum sind diese über die Amtsblatt-Mitteilung 148/2021 definiert.

In der Amtsblatt-Mitteilung wurden für einige Ortsnetze im Festnetz bestimmte Nummernbereiche zur freien Verwendung definiert:

Berlin: (0)30 23125 000 bis 999
Frankfurt am Main: (0)69 90009 000 bis 999
Hamburg: (0)40 66969 000 bis 999
Köln: (0)221 4710 000 bis 999
München: (0)89 99998 000 bis 999

Wer diese Nummern anruft, wird per Ansage erfahren, dass die Rufnummer nicht erreichbar ist. Interessierte haben die Möglichkeit, dies selbst zu testen, da dies der Zweck der reservierten Nummern ist.

Somit können diese Nummern gefahrlos in Medienproduktionen oder als Beispiel genutzt werden. Neben Festnetznummern sind auch eine Reihe von Mobilfunknummern in den deutschen Netzen freigegeben:

(0)152 28817386
(0)152 28895456
(0)152 54599371
(0)171 39200 00 bis 99
(0)172 9925904
(0)172 9968532
(0)172 9973185
(0)172 9973186
(0)172 9980752
(0)174 9091317
(0)174 9464308
(0)176 040690 00 bis 99

Die Rufnummern des Blockes (0)171 39200 00 bis 99 gehören hierbei der Deutschen Telekom, die des Blockes (0)176 040690 00 bis 99 zu Telefónica, während die restlichen Nummern im Vodafone-Netz liegen.

Internationale Telefonnummern

Ähnlich wie in Deutschland existieren auch international spezielle Rufnummernblöcke für Beispielzwecke. Zu den bekanntesten Nummern zählen sicherlich die Telefonnummern aus dem amerikanischen Raum, die mit der Ziffernfolge 555 beginnen.

In Nordamerika ist seit den 1960er Jahren die Vorwahl 555 für fiktive Nummern gebräuchlich. Telefongesellschaften und Filmstudios einigten sich darauf, diese Vorwahl in Fernsehen und Film zu nutzen.

Tatsächlich sind die nur Nummern 555-0100 bis 555-0199 für rein fiktive Zwecke reserviert – wenn solche Nummern im Film gewählt werden, ist sichergestellt, dass kein tatsächlicher Anschluss existiert. Definiert sind diese Nummern im 555 NXX Line Number Reference Document (ATIS-0300115). Dort heißt es:

With the sunset of the 555 NXX Assignment Guidelines, a block of one hundred (100) 555 line numbers will remain reserved as fictitious, non-working numbers for use by the entertainment and advertising industries. These specific numbers are 555-01XX, i.e., numbers between and including 555-0100 and 555-0199.

In der Kinofassung von Bruce Allmächtig (im Origial: Bruce Almighty), wurde die Nummer von Gott als 776-2323 angegeben. In Buffalo, wo der Film spielte, war die Nummer nicht belegt, aber in vielen anderen Vorwahlbereichen existierte die Nummer. So wurde sie für die DVD, HD-DVD und Bluray-Fassungen schließlich in 555 geändert.

Aktivieren Sie JavaScript um das Video zu sehen.
Video-Link: https://www.youtube.com/watch?v=mbZibNULsxI

Auch in britischen Produktionen kamen häufig Telefonnummern zum Einsatz, die sich nur bedingt als Beispiele eignen. Sehr bekannt ist sicherlich die „neue“ Notrufnummern. Anstatt der 999 soll in der Welt von IT Crowd nur noch die Nummer 0118 999 881 999 119 725 3 gewählt werden.

Aktivieren Sie JavaScript um das Video zu sehen.
Video-Link: https://www.youtube.com/watch?v=HWc3WY3fuZU

Der Sketch spielt auf eine wahre Gegebenheit an: Im Jahr 2003 hatte Großbritannien sein traditionelles Auskunftssystem umgestellt, bei dem früher einfach die 192 gewählt wurde, um eine Telefonnummer zu erfragen. Nach der Liberalisierung mussten Anrufer stattdessen eine der neuen, kommerziellen 118-Nummern wählen, wobei insbesondere die leicht einprägsame 118 118, auch aufgrund einer allgegenwärtigen Werbekampagne, schnell Berühmtheit erlangte.

Zwar existiert der Bereichscode 0118, aber der Rufnummernblock beginnend mit der 999 wird nicht weitergeleitet, sodass zumindest keine Gefahr bestand, hier wirklich jemand zu erreichen.

Allerdings existieren auch in Großbritannien entsprechende Nummern für die Nutzung in fiktivem Kontext. Diese wurde zuletzt 2019, von der britischen Medienaufsicht, dem Office of Communications, veröffentlicht. So könnte das Torchwood-Institut in Cardiff, vielleicht die Telefonnummer 029/20180000 nutzen.

Daneben existieren in vielen anderen Ländern wie Australien, Irland, Südkorea, Schweden oder Frankreich Regelungen und Freigaben für jeweils auf die Länder zugeschnittene Drama Numbers.

Weitere zugeteilte Ressourcen

Neben den genannten Anwendungsfällen, wie Telefonnummern, Domains und IP-Adressen, gibt es weitere Ressourcen, für die gegebenenfalls Beispiele und Testdaten benötigt werden.

Für Kreditkarten wird z. B. von VISA die Testkreditkartennummer 4111 1111 1111 1111 bereitgestellt. Dies ist auch für viele andere Kreditkarten der Fall, hängt aber in der konkreten Ausprägung auch vom jeweiligen Zahlungsdienstleister ab. Gültig sind diese Nummern, dann meist nur in den jeweiligen Testsystemen der Dienstleister.

Auch für Kontonummern, wie IBANs existieren entsprechende Testnummern, welche genutzt werden können.

Best Practices

In der Praxis ist es ratsam, Beispiele klar als solche zu kennzeichnen, um Missverständnisse zu vermeiden. Dies kann durch Kommentare im Quellcode, Fußnoten in Dokumentationen oder spezielle Formatierungen geschehen.

Dokumentationen sollten klar kennzeichnen, dass verwendete Werte nur Beispiele sind. In Software sollte sichergestellt werden, dass Testwerte nicht versehentlich in Produktionsumgebungen gelangen.

Wenn die existierenden Beispieldaten nicht ausreichen, kann in bestimmten Fällen nachgeholfen werden – beispielsweise durch die Nutzung von Subdomains:

api.example.com
blog.example.com
shop.example.com

So bleibt die Beispielhaftigkeit gewahrt. Auch bieten die Beispiel-Top-Level-Domains die Möglichkeit viele Testdaten zu generieren z. B. shop.example, system.example.

Softwareentwickler sollten Mechanismen implementieren, die verhindern, dass echte Daten versehentlich in Testumgebungen verwendet werden. Skripte und Produktionscode können etwa prüfen, ob eine verwendete IP-Adresse oder Domain tatsächlich für Tests vorgesehen ist.

Auch der umgekehrte Fall gilt. In Produktivsystemen können auch Prüfungen eingebaut werden, ob in Feldern wie Telefonnummern oder Domains nur Beispielwerte eingegeben und diesen dann abgelehnt werden.

Daneben sollte man darauf verzichten, für Beispiele Templates aus echten Daten zu erstellen. Es mag verlockend sein, z. B. einen echten Konfigurationsausschnitt aus einem System als Grundlage für eine Dokumentation zu nutzen.

Hier besteht jedoch immer die Gefahr, einen Wert zu übersehen und reale Details abzubilden. Besser ist, von Anfang an eine künstliche Beispielumgebung aufzusetzen. So sollte ein Demo-Account mit Beispielnamen und -kontakten verwendet werden, statt eines echten Accounts.

Bei der Nutzung in Produktivumgebungen, wie als E-Mail-Absender, sollten die eigenen Domains genutzt werden. So kann sichergestellt werden, dass auch Rückläufer für noreply-Adressen nicht ins Leere laufen oder unbeabsichtigt Dritte erreichen.

Fazit

Beispiel ist nicht gleich Beispiel. Bei der Nutzung von Beispielen in Dokumentationen, anderen Texten, Medien oder Applikationen sollte Vorsicht geboten sein.

Handelt es sich um Beispiele, oder fiktive Werte, so sollten dafür vorgesehenen Varianten, wie z.B. Drama Numbers, verwendet werden.

Durch die Nutzung von Beispiel-IP-Adressen wird vermieden, dass Beispiel-Skripte, Konfigurationen oder Tutorien ungewollt fremde Rechner scannen oder ansprechen. Auch wenn ein Nutzer einen in einer Anleitung gezeigten Befehl kopiert, sind diese Adressen harmlos, da sie ins Leere führen oder nur lokale Wirkung haben.

Von inoffiziellen Beispieldomains wie beispiel.de sollte abgeraten werden, da hier keine Kontrolle darüber besteht, wie lange sie noch ihrer Funktion als Beispiel entspricht. Bei den hierfür offiziell reservierten Ressourcen kann hingegen von einer gewissen Kontinuität ausgegangen werden.

Beispieldomains, reservierte IP-Adressen und Drama Numbers sind essenziell für sichere und verständliche Dokumentationen sowie Testumgebungen. Durch die Verwendung standardisierter Werte können Fehler vermieden, Datenschutzrisiken minimiert und die Konsistenz in technischen Dokumentationen gewährleistet werden.

Die Einhaltung der entsprechenden RFCs und Best Practices hilft, Missverständnisse und missbräuchliche Nutzungen zu vermeiden.

Dieser Artikel erschien ursprünglich auf Golem.de und ist hier in einer alternativen Variante zu finden.

GitHub zu Codeberg spiegeln

Im Rahmen digitaler Souveränität ist das Hosten auf GitHub eine zwiespältige Sache. Während die zugrundeliegenden Werkzeuge wie Git frei verfügbar sind, trifft dies auf Plattformen wie GitHub nicht zu.

Allerdings existieren auch Alternativen, wie Codeberg. Dabei handelt es sich um eine gemeinnützige, community-getriebene Plattform für die Entwicklung und das Hosting von Open-Source-Softwareprojekten. Betrieben wird sie vom eingetragenen Verein Codeberg e.V. mit Sitz in Berlin. Die Plattform bietet eine datenschutzfreundliche Alternative zu kommerziellen Diensten wie GitHub und richtet sich an Entwickler:innen, die Wert auf Transparenz, Offenheit und digitale Souveränität legen.

Die Plattform Codeberg

Nun ist ein vollständiger Wechsel für viele Nutzer nicht unbedingt immer möglich. Eine Alternative ist dann unter Umständen die Nutzung zweier Plattformen wie GitHub und Codeberg und eine entsprechende Spiegelung. Die der Codeberg zugrundeliegende Plattform Forgejo beherrscht die Spiegelung von Repositories. Allerdings ist dieses Feature auf der Plattform mit Absicht deaktiviert.

Wer eine solche Synchronisation nutzen möchte, ist damit auf weitere Werkzeuge angewiesen. Eines dieser Werkzeuge ist Gickup. Nach der Installation:

brew install gickup

sollte eine Konfigurationsdatei mit dem Namen conf.yml angelegt werden. Eine Minimalkonfiguration könnte folgendermaßen aussehen:

source:
  github:
    - token: topsecret-github-token
      includeorgs:
        - Entitaet
        - seeseekey
      wiki: true
      issues: true
destination:
  gitea:
    - url: https://codeberg.org/
      token: topsecret-codeberg-token
      createorg: true
      mirror:
        enabled: true

Diese Konfiguration stellt sicher, dass nur gewünschte Organisationen synchronisiert werden und dass Repositories von Organisationen, als solche in Codeberg angelegt werden. Die Token müssen auf GitHub und Codeberg angelegt werden und anschließend in der Konfiguration hinterlegt werden. Für GitHub wird dieses Token in den Einstellungen erzeugt. Hier sollte ein Classic-Token erzeugt werden und die Rechte für repo sollten zugewiesen werden.

Für GitHub werden die repo-Berechtigungen benötigt

Unter Codeberg wird das neue Token ebenfalls in den Einstellungen unter Anwendungen angelegt.

Das Token für Codeberg wird erzeugt

Nachdem die Token in der Konfiguration hinterlegt worden sind, kann der Prozess mittels gickup gestartet werden:

2025-05-20T21:18:50+02:00 INF Reading conf.yml file=conf.yml
2025-05-20T21:18:50+02:00 INF Configuration loaded destinations=1 pairs=1 sources=1
2025-05-20T21:18:50+02:00 INF Backup run starting
2025-05-20T21:18:50+02:00 INF grabbing my repositories stage=github url=https://github.com
2025-05-20T21:19:20+02:00 INF starting backup for https://github.com/Entitaet/autoxylophon.git stage=backup
2025-05-20T21:19:20+02:00 INF mirroring autoxylophon to https://codeberg.org/ stage=gitea url=https://codeberg.org/
2025-05-20T21:19:21+02:00 INF already up-to-date stage=gitea url=https://github.com/Entitaet/autoxylophon.git

Je nach Größe der eigenen Repositories kann die Spiegelung einige Minuten in Anspruch nehmen. Ist eine Aktualisierung gewünscht, so kann der Prozess einfach erneut angestoßen werden. Neben dieser Möglichkeit existieren weitere Möglichkeiten, um eine Spiegelung von Repositories zu Codeberg zu realisieren.

KI-Werkzeuge in der Softwareentwicklung

In der Softwareentwicklung existierten schon immer Werkzeuge und Vereinfachungen wie Autocompletion oder Syntax-Highlighting, die den Entwicklungsprozess effizienter und weniger fehleranfällig machen sollten. Diese Werkzeuge haben es Entwicklern ermöglicht, sich stärker auf die Logik und Funktionalität ihres Quellcodes zu konzentrieren, anstatt sich mit den Details der Syntax oder der Strukturierung von Quellcode herumzuschlagen.

In den vergangenen Jahren hat sich die Landschaft der Softwareentwicklung weiterentwickelt und neue Technologien und Methoden haben Einzug gehalten. Beispielsweise haben Versionskontrollsysteme wie Git die Zusammenarbeit in Teams wesentlich verbessert und Continuous-Integration-/Continuous-Deployment-Pipelines ermöglichen es, Änderungen effizienter in Produktionsumgebungen zu bringen.

KI-Werkzeuge sollen die Entwicklungsarbeit vereinfachen

Aktuell finden immer mehr Werkzeuge, die mit maschinellem Lernen oder großen Sprachmodellen (Large Language Models) arbeiten, ihren Weg in die Praxis. Assistenten wie GitHub Copilot oder Tabnine nutzen hierbei große Mengen an Trainingsdaten, um Entwicklern kontextbezogene Vorschläge anzubieten, die weit über einfache Autocompletion hinausgehen. So können komplexere Code-Snippets vorgeschlagen oder ganze Methoden und Funktionen auf Basis kurzer Beschreibungen generiert werden.

Im Idealfall soll dies die Produktivität erhöhen, auch wenn das letzte Wort hierbei noch nicht gesprochen ist. Doch welche Werkzeuge existieren? Im Rahmen des Artikels soll ein Blick auf spezialisiertere Lösungen zur Entwicklung abseits von ChatGPT und Co. geworfen werden.

Arten von Werkzeugen

Auf dem Markt der KI-Werkzeuge zur Softwareentwicklung existieren Werkzeuge unterschiedlicher Couleur. Neben Integrationen für eine Anzahl von IDEs, existieren Standalone-Tools und auch webbasierte Tools. Viele KI-Werkzeuge sind als Plugins oder Erweiterungen für IDEs wie Visual Studio Code oder IntelliJ IDEA verfügbar. Diese Integrationen ermöglichen es, KI-gestützte Funktionen direkt in der gewohnten Entwicklungsumgebung zu nutzen, was den Arbeitsablauf verbessert.

Einige dieser Werkzeuge bieten spezialisierte Funktionen, die auf bestimmte Aspekte der Softwareentwicklung abzielen, wie Code-Generierung, Fehlererkennung, Optimierung, Review oder Testautomatisierung.

Code-Assistenten

Einer der häufigsten neuen Werkzeug-Typen sind Code-Assistenten, welche es ermöglichen Quellcode zu generieren und diese Fähigkeit in einer Entwicklungsumgebung einzusetzen. Daneben können Fragen zum Quellcode gestellt, Dokumentationen erzeugt, oder Vorschläge für ein Refactoring erzeugt werden.

Bei diesen Code-Assistenten finden sich etliche Schwergewichte der IT, wie Amazon oder Microsoft wieder.

Amazon Q

Als Antwort auf GitHub Copilot stellte Amazon CodeWhisperer vor. Mittlerweile ist dieses Werkzeug in Amazon Q aufgegangen.

Für Entwickler dürfte das Teilprodukt Amazon Q Developer interessant sein. Für dieses sind unter anderem Integrationen für die JetBrains IDEs, VS-Code und Visual Studio verfügbar. Auch eine Version für die Kommandozeile wird geboten.

Amazon Q in einer Jetbrains IDE

Für den Assistenten wird eine AWS Builder ID benötigt. Im begrenztem Rahmen kann der Assistent, damit kostenlos ausprobiert werden.

Sinnvolle Ergebnisse liefert der Assistenz nur bei Anfragen in englischer Sprache. Interessant ist die Möglichkeit, Quelltext zu generieren, der über mehrere Dateien reicht. Hier haben andere Assistenten meist ihre Probleme und erzeugen nur Quellcode an einem Stück.

Gesteuert wird der Assistent über Befehle wie /dev mit einem darauffolgenden Prompt. Angeboten wird neben der kostenlosen Variante, ein Business Lite und ein Business Pro Abonnement.

Insgesamt fühlt sich Amazon Q als generisches KI-Werkzeug zur Entwicklung unzureichend an, allerdings könnte es anders aussehen, wenn eine engere Verzahnung mit AWS und die Nutzung eigener Geschäftsdaten gewünscht wird.

Codeium

Codeium ist ebenfalls ein Code-Assistent, welcher sich in unterschiedlichste IDEs integriert.

Codeium unterstützt eine Reihe von IDEs

Das Plugin verfügt über eine Chat-Funktionalität, welche es ermöglicht Anforderungen bzw. Prompts zu definieren. Negativ fällt auf, dass hier die aktuell genutzte Programmiersprache nicht automatisch erkannt wird, sondern explizit angegeben werden muss.

Auch das Antworten auf bereits erzeugte Nachrichten muss separat erledigt werden. Wird stattdessen direkt im Chatfenster geantwortet, wird eine neue unabhängige Konversation gestartet. Soll auf einen vorherigen Chat Bezug genommen werden, so muss der Continue this chat-Button genutzt werden.

Die Chat-Funktionalität nutzt die falsche Programmiersprache

Interessanter ist die Möglichkeit, relativ unkompliziert Unit-Tests für ausgewählte Methoden zu generieren. Hierfür wird eine Methode ausgewählt und entsprechende Testfälle werden ermittelt und anschließend in Code umgesetzt.

Codium erzeugt Testfälle

Anschließend können die Testfälle in eine Datei übernommen werden. Auch hier fehlt wieder der Kontext, da die Datei standardmäßig einfach im Hauptverzeichnis des Projektes abgelegt wird, zumindest bei der JetBrains-IDE-Integration.

Genutzt werden für Codium die OpenAI-Modelle der GPT-3 und GPT-4 Reihe. Interessant ist Codium für Plattformen, bei denen sonst keine IDE-Integration vorliegt, da Codium hier mit Vielfalt glänzt.

Neben dem Codeassistenten bietet Codium mit Forge auch eine Lösung für das Review von Quellcode an.

Cody

Mit Cody existiert ein KI-gestützter Assistent zur Softwareentwicklung. Nicht verwechselt werden sollte der Assistent mit Cody AI, das sich mehr als KI-unterstützte Suche auf Basis einer Firmen-Wissensbasis versteht.

Neben der Webvariante von Cody werden primär die Entwicklungsumgebungen VS Code und die JetBrains-IDEs unterstützt. Daneben existiert eine experimentelle Unterstützung für Neovim. Andere IDEs wie Eclipse und Emacs sollen in Zukunft folgen.

In der JetBrains-Variante wirkt die Integration ausgereift. So ist nicht nur ein Fenster verfügbar, in dem ein Chat angezeigt wird, sondern es existiert auch eine Integration im Code-Editor.

Anhand des Methodennamens wurde der Inhalt der Methode generiert

Während im Chatfenster der Kontext, wie die aktuell verwendete Programmiersprache nicht erkannt wird, sieht dies im Code-Editor anders aus. Hier wird der Code in der verwendeten Sprache generiert.

Die Modellauswahl im Chat-Fenster

Ein Merkmal, mit dem sich Cody von anderen KI-Assistenten unterscheidet, ist die transparente Auswahl der genutzten Modelle. Das passende Modell kann hierbei einfach ausgewählt werden.

Neben den Möglichkeiten zur Codegenerierung bietet Cody auch die Möglichkeit vorgefertigte Kommandos zu nutzen und mit diesen das Dokumentieren von Quellcode oder Unit-Test zu automatisieren.

CodeSquire

CodeSquire ist eine spezialisierte KI-Assistent-Lösung in Form einer Erweiterung für den Browser Chrome. CodeSquire ist ein Tool für Datenwissenschaftler, das Kommentare in Code umwandelt, SQL-Anfragen aus natürlicher Sprache erstellt, intelligente Codevervollständigung bietet und komplexe Funktionen generiert.

Unterstützt werden aktuell Plattformen wie Google Colab, BigQuery und JupyterLab.

Diese Plattformen zählen zu IDEs, die meist speziell für interaktive Datenanalyse und wissenschaftliches Rechnen genutzt werden. Diese speziellen IDEs kombinieren viele Funktionen, die in traditionellen IDEs zu finden sind, wie Code-Editoren, Terminals und Dateibrowser, mit speziellen Werkzeugen für die Arbeit mit Daten und interaktiven Notebooks.

CodeWP

Ebenfalls zu den spezialisierten Lösungen zählt CodeWP, welches einen Assistenten darstellt, welcher auf WordPress spezialisiert ist.

CodeWP

Die dahinterliegenden Modelle sind darauf trainiert, Code in PHP und JavaScript im Kontext von WordPress zu generieren. So kann mit einem einzelnen Prompt ein einfaches Plugin generiert werden.

Die CodeWP-Website

CodeWP erweckt mit Aussagen wie Proprietary AI und More accurate than ChatGPT sowie der Aussage:

Our Al models are trained to output the best, most modern, secure, simple code for WordPress. So no need to worry about common bugs or issues.

den Eindruck, dass ein eigenes Sprachmodel verwendet wird, ohne auf Mitbewerber wie OpenAI angewiesen zu sein.

Cursor

Cursor versteht sich, im Gegensatz zu den bisher vorgestellten Assistenten, als dedizierte IDE mit einer KI-basierten Unterstützung für Entwicklung.

Technisch handelt es sich um einen Fork von VS Code. Der Grund hierfür, ist nach Aussage des Herstellers, in der besseren Anpassbarkeit der IDE zu finden.

Der Onboarding-Prozess von Cursor

Nach der Installation wird der Nutzer durch einen kleinen Onboarding-Prozess geführt. Dieser führt in die Möglichkeiten ein, Bugs zu identifizieren, spezifische Codestellen zu lokalisieren oder Code von einer Programmiersprache in eine andere zu übersetzen.

Cursor kann natürliche Sprache verstehen und darauf reagieren, was es erleichtern soll, direkt im Code-Editor mit der KI zu interagieren. So können Fragen zu Codebasis gestellt werden, Vervollständigungen angefordert werden oder Code-Snippets generieren werden.

Die Freemium-Version unterliegt einigen Einschränkungen, welche in den kostenpflichtigen Tarifen aufgehoben werden.

Fraglich ist, ob hierfür eine neue IDE benötigt, und warum nicht auf Integrationen für bestehende Systeme gesetzt wurde. In den meisten Fällen werden Entwickler doch meist auf ihre angestammten Werkzeuge setzen wollen.

GitHub Copilot

Zu den bekannteren Lösungen auf dem Markt zählt sicherlich GitHub Copilot. Dieses Werkzeug ist in allen Varianten (bis auf die Trial-Version) kostenpflichtig.

Neben der Nutzung über die Kommandozeile, existieren eine Reihe von IDE-Integrationen, insbesondere für Visual Studio, VS Code und die JetBrains IDEs. Daneben werden Vim und Neovim, sowie Azure Data Studio unterstützt.

GitHub Copilot in einer JetBrains-IDE

Positiv fällt die Autovervollständigung bzw. die Geschwindigkeit derselben auf. Allerdings ist sie in einigen Fällen auch relativ nervig, da sie bei der Entwicklung zu unnötiger Ablenkung führen kann.

Eine Methode wird generiert

Zumindest in den JetBrains-IDEs gibt es keine Integration über die Quick-Fixes-Funktionalität. Dafür stehen eine Reihe von Kommandos wie /tests, /simplify, /fix oder /explain zur Verfügung.

Diese können in der eingebauten Chat-Funktionalität genutzt werden. Die Ergebnisse werden im Chat angezeigt, können allerdings nicht automatisch ins Projekt übernommen werden, sondern müssen kopiert und wieder eingefügt werden. Besonders nervig ist dies bei der Generierung von Dokumentation für Methoden, wie sich im Vergleich zum Assistenten JetBrains AI zeigt.

Positiv hervorzuheben ist die automatische Übernahme des Kontexts, wenn Themen im Chat angesprochen und genutzt werden.

JetBrains AI

Das tschechische Unternehmen JetBrains ist primär für seine unterschiedlichen IDEs bekannt und bietet mit JetBrains AI einen Assistenten für KI-unterstütze Entwicklung. Auch JetBrains AI muss über ein Abonnement freigeschaltet werden. Wenig verwunderlich ist die Integration von JetBrains AI in die jeweiligen IDEs der Firma sehr gelungen.

Entwicklung mit der JetBrains AI

Neben der bei vielen KI-Assistenten gegebenen Möglichkeiten des Chats mit dem Sprachmodell, bietet JetBrains AI die Möglichkeit von Quick-Fixes in Form von AI Actions, welche unter anderem das Schreiben von Dokumentation oder das Generieren von Unit-Tests vereinfachen sollen.

Neben den vorgefertigten Prompts können eigene Prompts hinterlegt und diese dann ebenfalls über die AI Actions genutzt werden. Angenehm an JetBrains AI ist die Möglichkeit Dokumentation wie Javadoc automatisch für eine Methode generieren und antragen zu können.

Die Einstellungen für JetBrains AI

Automatische Codevorschläge während der Entwicklung sind so gestaltet, dass sie nicht unnötig ablenken und können über die Einstellungen konfiguriert werden.

Daneben findet sich der KI-Assistent noch in anderen Integrationen wieder, wie bei der Umbenennung bzw. der Namensfindung, hier werden neben den klassischen Vorschlägen auch KI-Vorschläge angezeigt.

Durch ein kleines Symbol wird transparent gezeigt, welche Vorschläge von der KI stammen und welche nicht. Grundsätzlich zieht sich diese Transparenz durch JetBrains AI bzw. dessen Implementation.

Auch Fragen zu bestimmten Teilen des Quellcodes können schnell und bequem gestellt werden, indem an der gewünschten Stelle über eine Quick-Action ein KI-Chat zum aktuellen Quellcode gestartet wird.

Weitere Kleinigkeiten sind die Generierung von Commit-Nachrichten, welche ebenfalls von JetBrains AI bereitgestellt werden.

Während im Standard-Abonnement von JetBrains AI nicht gewählt werden kann, welche Sprachmodelle verwendet werden, soll dies später in den Enterprise-Varianten auswählbar sein. Je nach genutzter Funktionalität scheinen im Moment unterschiedliche Modelle genutzt werden.

Neben JetBrains AI, verfügen einige IDEs wie IntelliJ IDEA Ultimate mittlerweile auch über Möglichkeiten zur Codevervollständigung über ein lokales Sprachmodell, welches ohne externe Zugriffe auskommt.

Die IDE-Integration von JetBrains AI wirkt insgesamt sehr ausgereift, insbesondere im Vergleich zu anderen KI-basierten Assistenten. Dafür steht JetBrains AI nur für die entsprechenden IDEs der Firma zur Verfügung.

Tabnine

Die Firma hinter Tabnine existiert schon länger als der aktuelle KI-Hype und hat seit längerem Code-Assistenten zur Unterstützung in der Entwicklung angeboten.

Ursprünglich bekannt als Codota, hat sich das Unternehmen auf die Entwicklung von KI-basierten Werkzeugen für Entwickler spezialisiert. Im Gegensatz zu vielen anderen Lösungen wird bei Tabnine, über Tabnine Enterprise, auch das Selbst-Hosting angeboten.

Interessant ist bei Tabnine die Wahl der Modelle zur Verarbeitung der Anfragen. Hier werden Modelle wie Tabnine Protected angeboten, welche nur mit Quellcodes trainiert wurden, welche eine entsprechende Lizenz besitzen und somit idealerweise z. B. keine Codeschnipsel unter GPL replizieren.

Auch werden je nach Modell gewisse Garantien gegeben, was Themen wie Datenschutz und die Weiterverwendung der Prompts angeht. Daneben werden die Modelle über Tags sinnvoll kategorisiert, sodass die Wahl des passenden Modells aufgrund dieser getätigt werden kann.

Die Auswahl der Modelle

Bei den IDEs unterstützt Tabnine eine Reihe von IDEs, angefangen bei VS Code über die JetBrains-IDEs, bis hin zu Neovim.

Die Fix-Funktionalität von Tabnine

In Bezug auf die IDE-Integration wirkt Tabnine in JetBrains-IDEs recht gut integriert. Dadurch können kontextbasierte Operationen wie das Beheben von Fehlern oder das Dokumentieren von Quellcode effizient durchgeführt werden.

Im Tabnine-Chat wird dabei eine Antwort generiert und dessen Ergebnis kann mit in den Quellcode übernommen werden.

Das manuelle Einfügen fühlt sich allerdings immer etwas umständlich an und aktiviert oft die automatische Codeformatierung nicht, was im schlechtesten Fall immer einen zusätzlichen Bearbeitungsschritt bedeutet.

Die Generation eines Tests schlägt fehl

Andere Operationen, wie die Erstellung eines Testplans, können unter Umständen scheitern, da eine vom Plugin generierte Datei möglicherweise nicht befüllt werden kann, was auf einen Bug hinzudeuten scheint.

Die Testplan-Ideen von Tabnine

Auch wenn die Ideen für den Testplan von Tabnine interessant sind, fühlt sich hier die Integration durch das manuelle Einfügen komplex und fehleranfällig an.

Analyse-Werkzeuge

Neben den allgemeinen Code-Assistenten existieren einige Werkzeuge, welche sich auf die Analyse von Quellcode spezialisiert haben, z. B. für das Review von Quellcode bzw. Pull Requests.

Amazon CodeGuru

Ein von Amazon angebotenes Analyse-Werkzeug ist Amazon CodeGuru. Dieses Werkzeug versteht sich als Scanner, um Sicherheitslücken und Schwachstellen im Code zu finden. Daneben werden auch Vorschläge erstellt wie Anwendungen optimiert bzw. beschleunigt werden können.

Gedacht ist dieses Werkzeug nicht für die direkte Nutzung, sondern eher für die Integration in entsprechende Pipelines.

Neben der Nutzung in AWS CodeCommit (das demnächst eingestellt wird) wird auch die Nutzung von BitBucket- und GitHub-Repositories unterstützt.

Sourcery AI

Sourcery AI versteht sich als Werkzeug für automatisches Reviewing. Verknüpft werden kann dieses Werkzeug unter anderem mit GitHub oder GitLab. Wenn gewünscht, wird so bei jedem Pull-Request ein entsprechender Kommentar hinterlassen.

Sourcery AI erstellt Kommentare zu einem Pull Request

Während die Nutzung für kommerzielle Projekte mit einem Abonnement verbunden ist, können Open-Source-Projekte Sourcery AI ohne weitere Kosten einsetzen.

Neben der Kommentierung des Pull-Requests werden auch Hinweise für den Reviewer und eine Zusammenfassung erstellt.

Snyk

Neben Werkzeugen, die sich auf normale Entwicklungsarbeiten konzentrierten, existiert mit Snyk ein Analyse-Werkzeug, welches Verwundbarkeiten und Sicherheitsprobleme im Code aufdecken soll.

Snyk in einer JetBrains IDE

Snyk positioniert sich als Werkzeug, das durch den Einsatz von maschinellem Lernen sowie dynamischen und statischen Analysen den Quellcode auf diese Problemklasse hin untersucht.

Dabei werden eine Reihe von Produkten angeboten, welche diese Technologie zur Anwendung bringen soll.

WhatTheDiff

Ähnlich wie Sourcery AI ist auch WhatTheDiff ein Werkzeug für automatisierte Code-Reviews.

Im Gegensatz zu Sourcery AI muss die GitHub-Integration vor der Nutzung konfiguriert und aktiviert werden.

Die Repositories müssen aktiviert werden

Nach der Aktivierung werden für Pull Requests automatisch Kommentare erzeugt.

What The Diff erzeugt automatisch Kommentare zu den Pull Requests

Wie bei Sourcery AI werden hier auch Kommentare zur Zusammenfassung und Review-Kommentare am Pull Request erstellt, welche dann bearbeitet werden können.

Weitere Werkzeuge

Neben den größeren Klassen wie Code-Assistenten und Analysewerkzeuge, existieren weitere Werkzeuge, welche KI-basiert einen Mehrwert in der Entwicklung bringen können.

bloop.ai

Unter bloop.ai werden verschiedene Services rund um KI-gestützte Codegenerierung und Nutzung angeboten.

So wird ein Dienst angeboten, welcher COBOL-Programme in lesbare Java-Applikationen umwandeln soll. Ein weiterer Dienst befasst sich mit einem Sprachmodell, welches direkt COBOL-Quellcode schreiben kann.

bloop indiziert ein Repository

Für den alltäglichen Gebrauch interessanter war die Understand-Funktionalität, die es ermöglicht, Repositories zu laden und anhand dieser Repositories Fragen zum Quellcode zu stellen.

Bloop wird zum Bevy-Projekt befragt

Diese existierte in einer freien Variante sowie in einer kostenpflichtigen Personal-Variante. In der kostenpflichtigen Variante wurde unter anderem die Indizierung mehrerer Branches ermöglicht.

Nach der kürzlich erfolgten Einstellung steht nur noch die freie Variante dieser Funktionalität zur Verfügung. Für den alltäglichen Gebrauch, vorwiegend mit unbekannteren Codebasen, kann dieses Werkzeug eine wertvolle Ergänzung sein.

GitFluence

Wer in der Softwareentwicklung arbeitet, wird oft auch mit Versionskontrollsystemen wie Git arbeiten. Auch hier existieren mittlerweile KI-Tools, welche unterstützen sollen.

GitFluence

Eines dieser Werkzeuge ist GitFluence, das unter der Haube mit der OpenAI-API arbeitet. Gedacht ist das Werkzeug für den Fall, dass eine Git-Aktion beschrieben wird und automatisch ein Git-Kommando dafür erstellt wird.

Dies wirkt allerdings in einigen Fällen eher unausgegoren und lieferte unbrauchbare Ergebnisse, während es sporadisch sinnvolle Antworten liefert.

Grit.io

Der Dienst Grit.io spezialisiert sich auf Code-Migration und automatische Dependency Upgrades. Aktuell ist er nur über eine Warteliste verfügbar, sodass hier eine genauere Beurteilung schwerfällt.

Eines der Beispiele von der Grit.io-Seite

Durch die automatische Aktualisierung von Abhängigkeiten und die Durchführung größerer Migrationen soll eine allgemeine Verbesserung der Codequalität stattfinden.

Mutable AI

Neben Code-Assistenten, die sich auf die Entwicklung spezialisieren, existieren auch solche Assistenten, die sich der Dokumentation und Schaffung einer Wissensbasis zur entwickelten Software verschrieben haben. Zu diesen Diensten gehört Mutable AI.

Eine Mutable AI-Wiki

Nach Abschluss eines Abonnements ist es möglich zu einem Repository ein automatisches Wiki zur Dokumentation zu erstellen. Neben dieser Art der Dokumentation kann die Codebasis auch über einen KI-Assistenten befragt werden.

Die Dokumentation wird automatisch bei Änderungen des Repositories aktualisiert.

SQLAI.ai

Für die Arbeit mit SQL und Datenbanken existieren eine Reihe von KI-Werkzeugen wie SQLAI.ai. Mithilfe dieser Werkzeuge können Abfragen erzeugt, überprüft und auf Fehler untersucht werden.

SQLAI

Im Wesentlichen generieren die meisten dieser Werkzeuge, häufig unter Einbeziehung zusätzlicher Informationen wie des Datenbankschemas, passende Eingaben für das verwendete Sprachmodell. Zusätzliche Metainformationen wie das Datenbankschema, helfen hierbei sinnvolle Ausgaben für die eigenen Projekte zu erzeugen.

Ein ähnliches Werkzeug ist AI Query, das ebenfalls über Werkzeuge zur SQL-Prüfung und Bearbeitung verfügt. Daneben existieren eine Vielzahl anderer Werkzeuge dieser Art wie TEXT2SQL oder AI2sql.

Über den Tellerrand

Neben all diesen Werkzeugen existieren weitere Ansätze und Möglichkeiten, welche die Entwicklung und Prozesse der Softwareentwicklung vereinfachen sollen.

So existiert mit Stepsize AI ein Werkzeug, welches Sprint Reports im Kontext der agieren Softwareentwicklung erzeugen soll oder mit Bugasura ein Bug-Tracker mit KI-Unterstützung.

Neben kommerziellen Lösungen, welche auf entsprechende Modelle von OpenAI und Co. setzen, existieren auch freie Modelle zur Entwicklung von Software.

Eines dieser Modelle ist PolyCoder, welches auf Basis von GPT-2, mit einem Korpus von über zwölf Programmiersprachen trainiert wurde. Ähnliches vermag CodeGeeX zu leisten, welches aus dem asiatischen Raum stammt.

Allerdings lassen sich diese Systeme nicht so einfach nutzen wie die vorkonfektionierten Angebote, kommerzieller Anbieter. Es muss ein entsprechender Setup-Aufwand geleistet werden, bevor die Modelle genutzt werden können. Darüber hinaus ist die Performanz lokal ausgeführter Modelle, aufgrund der genutzten Hardware, oft unzureichend.

Fazit

Sprachmodelle konnten für die Entwicklung bereits genutzt werden, bevor es spezielle Integrationen dafür gab. Dafür musste der Entwickler Prompts definieren und diese mit dem Quelltext in das Modell geben.

Viele Integrationen nehmen dem Entwickler das Schreiben des Prompts in vielen Fällen ab und ermöglichen so eine schnellere Nutzung der Modelle. Bedingt durch die zugrundeliegenden Sprachmodelle werden viele Programmiersprachen auch von den vorgestellten Werkzeugen unterstützt.

Damit können in der Theorie viele Standardaufgaben, wie die Dokumentation, Unit-Tests oder auch komplexere Dinge wie die Konvertierung zwischen zwei Programmiersprachen mehr oder weniger vereinfacht werden. Allerdings sollten die Ergebnisse dieser KI-basierten Assistenzfunktionen immer bewertet und analysiert werden und nicht einfach ungeprüft übernommen werden. Spätestens bei komplexeren Problemen, welche ein umfassenderes Verständnis über die Codebasis benötigen, versagen die KI-Assistenten in vielen Fällen.

Aktuell existieren auf dem Markt eine unzählige Anzahl von KI-Werkzeugen und jeden Tag werden es mehr. Einige dieser Werkzeuge werden wieder verschwinden, während andere Werkzeuge erhalten bleiben. Auch in Zukunft sollen KI-Assistenten weiter integriert werden, wie in XCode von Apple.

Für Code-Assistenten sowie zahlreiche andere Werkzeuge gilt, dass sie im Wesentlichen auf ähnliche Weise funktionieren: Ein beliebiger Prompt wird erstellt, an ein Sprachmodell übermittelt und von diesem verarbeitet.

Hier stechen am Ende nur Lösungen hervor, welche eine gute Integration bieten und es somit dem Entwickler nicht unnötig schwer machen, die Assistenzfunktionen im Arbeitsalltag anzuwenden.

Positiv haben neben der Integration der JetBrains AI die Codesuche über Bloop überrascht, bei welcher zu einer Codebasis Fragen gestellt werden können und diese Codebasis damit genauer und schneller kennengelernt werden kann.

Neben den praktischen Aspekten sollte auch beachtetet werden, dass ein Großteil der aktuellen KI-Lösungen kostenpflichtig sind und ihren Gegenwert einspielen müssen.

Abgesehen von den monetären Aspekten gilt es auch den Datenschutz zu beachten, schließlich werden in vielen Fällen vertrauliche Daten an Drittservices gesendet und dort verarbeitet.

Daneben ist die Datenbasis prinzipbedingt immer leicht veraltet. So können Informationen zu neuen Versionen einer Software z. B. zur Game Engine Bevy über viele Sprachmodelle nicht bezogen werden, da ihr Trainingsdatum vor dem Erscheinungsdatum der neuen Softwareversion liegt.

Ob sich die Technologie in Zukunft einen wirklichen Mehrwert in der Entwicklung bringt, wird sich zeigen. Gegenwärtig scheint es so, dass sich ein Teil der KI-Werkzeuge sich dem Plateau der Produktivität im Hype-Zyklus nähert.

Bei einer guten und niederschwelligen Integration kann damit vielleicht das ein oder andere KI-basierte Werkzeug seinen Weg in den Werkzeugkasten der Softwareentwicklung finden.

Dieser Artikel erschien ursprünglich auf Golem.de und ist hier in einer alternativen Variante zu finden.

Wetterwarnungen unter iOS aktivieren

Viele Assistenzsysteme wie z.B. Alexa verfügen über die Möglichkeit bei Wetterwarnungen zu informieren. Auch Apple bietet unter iOS diese Funktionalität. Dazu muss im ersten Schritt in den Einstellungen unter Datenschutz & Sicherheit im Punkt Ortungsdienste für die App Wetter die Berechtigung auf Immer gestellt werden.

Die Einstellungen zur Aktivierung der Wetterwarnungen

Anschließend müssen die Warnungen in der Wetter-App aktiviert werden. Dort muss die Wetterliste aufgerufen werden und dort über den Button mit den drei Punkten der Punkt Mitteilungen aufgerufen werden. Anschließend können die Wetterwarnungen für die gewünschten Orte aktiviert werden.