Richtlinien zur Meldung von Problemen
Effektive Fehlerberichte und Feature-Anfragen sind entscheidend für die XOOPS-Entwicklung. Dieser Leitfaden hilft dir, qualitativ hochwertige Probleme zu erstellen.
Vor der Meldung
Abschnitt betitelt „Vor der Meldung“Bestehende Probleme überprüfen
Abschnitt betitelt „Bestehende Probleme überprüfen“Suche immer zuerst:
- Gehe zu GitHub Issues
- Suche nach Schlüsselwörtern im Zusammenhang mit deinem Problem
- Überprüfe geschlossene Probleme - könnten bereits gelöst sein
- Schau Pull Requests an - könnten in Arbeit sein
Verwende Suchfilter:
is:issue is:open label:bug- Offene Fehleris:issue is:open label:feature- Offene Feature-Anfragenis:issue sort:updated- Kürzlich aktualisierte Probleme
Ist es wirklich ein Problem?
Abschnitt betitelt „Ist es wirklich ein Problem?“Überleg zunächst:
- Konfigurationsproblem? - Überprüfe die Dokumentation
- Nutzungsfrage? - Frage in Foren oder Discord Gemeinschaft
- Sicherheitsproblem? - Siehe Abschnitt #Sicherheitsprobleme unten
- Modul-spezifisch? - Melde dem Modul-Verwalter
- Theme-spezifisch? - Melde dem Theme-Autor
Problemtypen
Abschnitt betitelt „Problemtypen“Fehlerbericht
Abschnitt betitelt „Fehlerbericht“Ein Fehler ist ein unerwartetes Verhalten oder ein Defekt.
Beispiele:
- Login funktioniert nicht
- Datenbankfehler
- Fehlende Formularvalidierung
- Sicherheitslücke
Feature-Anfrage
Abschnitt betitelt „Feature-Anfrage“Eine Feature-Anfrage ist ein Vorschlag für neue Funktionalität.
Beispiele:
- Unterstützung für neue Funktion hinzufügen
- Bestehende Funktionalität verbessern
- Fehlende Dokumentation hinzufügen
- Leistungsverbesserungen
Verbesserung
Abschnitt betitelt „Verbesserung“Eine Verbesserung verbessert bestehende Funktionalität.
Beispiele:
- Bessere Fehlermeldungen
- Verbesserte Leistung
- Besseres API-Design
- Bessere Benutzererfahrung
Dokumentation
Abschnitt betitelt „Dokumentation“Dokumentationsprobleme sind fehlende oder falsche Dokumentation.
Beispiele:
- Unvollständige API-Dokumentation
- Veraltete Guides
- Fehlende Code-Beispiele
- Tippfehler in der Dokumentation
Fehler melden
Abschnitt betitelt „Fehler melden“Fehlerberichts-Vorlage
Abschnitt betitelt „Fehlerberichts-Vorlage“## BeschreibungKurze, klare Beschreibung des Fehlers.
## Schritte zum Reproduzieren1. Schritt eins2. Schritt zwei3. Schritt drei
## Erwartetes VerhaltenWas sollte passieren.
## Tatsächliches VerhaltenWas tatsächlich passiert.
## Umgebung- XOOPS Version: X.Y.Z- PHP Version: 8.2/8.3/8.4- Datenbank: MySQL/MariaDB Version- Betriebssystem: Windows/macOS/Linux- Browser: Chrome/Firefox/Safari
## ScreenshotsFalls zutreffend, füge Screenshots ein, die das Problem zeigen.
## Zusätzlicher KontextAndere relevante Informationen.
## Mögliche LösungFalls du Vorschläge zur Fehlerbehebung hast (optional).Gutes Fehlerberichts-Beispiel
Abschnitt betitelt „Gutes Fehlerberichts-Beispiel“## BeschreibungDie Login-Seite zeigt eine leere Seite, wenn die Datenbankverbindung fehlschlägt.
## Schritte zum Reproduzieren1. Stoppe den MySQL-Service2. Navigiere zur Login-Seite3. Beobachte das Verhalten
## Erwartetes VerhaltenZeige eine benutzerfreundliche Fehlermeldung, die das Datenbankverbindungsproblem erklärt.
## Tatsächliches VerhaltenDie Seite ist komplett leer - keine Fehlermeldung, keine Benutzeroberfläche sichtbar.
## Umgebung- XOOPS Version: 2.7.0- PHP Version: 8.0.28- Datenbank: MySQL 5.7- Betriebssystem: Ubuntu 20.04- Browser: Chrome 120
## Zusätzlicher KontextDies betrifft wahrscheinlich auch andere Seiten. Der Fehler sollte an Admins angezeigt oder angemessen protokolliert werden.
## Mögliche LösungÜberprüfe die Datenbankverbindung in header.php vor dem Rendern des Templates.Schlechtes Fehlerberichts-Beispiel
Abschnitt betitelt „Schlechtes Fehlerberichts-Beispiel“## BeschreibungLogin funktioniert nicht
## Schritte zum ReproduzierenEs funktioniert nicht
## Erwartetes VerhaltenEs sollte funktionieren
## Tatsächliches VerhaltenEs funktioniert nicht
## UmgebungNeueste VersionFeature-Anfrage melden
Abschnitt betitelt „Feature-Anfrage melden“Feature-Anfrage-Vorlage
Abschnitt betitelt „Feature-Anfrage-Vorlage“## BeschreibungKlare, prägnante Beschreibung der Funktion.
## ProblembeschreibungWarum wird diese Funktion benötigt? Welches Problem löst sie?
## Vorgeschlagene LösungBeschreibe deine ideale Implementierung oder UX.
## Überlegte AlternativenGibt es andere Wege, dieses Ziel zu erreichen?
## Zusätzlicher KontextIrgendwelche Mockups, Beispiele oder Referenzen.
## Erwarteter ImpactWie würde dies den Benutzern nutzen? Wäre es breaking?Gutes Feature-Anfrage-Beispiel
Abschnitt betitelt „Gutes Feature-Anfrage-Beispiel“## BeschreibungZwei-Faktor-Authentifizierung (2FA) für Benutzerkonten hinzufügen.
## ProblembeschreibungMit zunehmenden Sicherheitsverletzungen bieten viele CMS-Plattformen nun 2FA an. XOOPS-Benutzer wollen bessere Kontosicherheit jenseits von Passwörtern.
## Vorgeschlagene LösungImplementiere TOTP-basierte 2FA (kompatibel mit Google Authenticator, Authy, etc.).- Benutzer können 2FA in ihrem Profil aktivieren- Zeige QR-Code für Einrichtung- Generiere Backup-Codes zur Wiederherstellung- Erfordere 2FA-Code bei Login
## Überlegte Alternativen- SMS-basierte 2FA (erfordert Träger-Integration, weniger sicher)- Hardware-Keys (zu komplex für durchschnittliche Benutzer)
## Zusätzlicher KontextÄhnlich wie GitHub, GitLab und WordPress Implementierungen.Referenz: [TOTP Standard RFC 6238](https://tools.ietf.org/html/rfc6238)
## Erwarteter ImpactErhöht die Kontosicherheit. Könnte zunächst optional sein, später zwingend erforderlich.Sicherheitsprobleme
Abschnitt betitelt „Sicherheitsprobleme“NICHT öffentlich melden
Abschnitt betitelt „NICHT öffentlich melden“Erstelle niemals ein öffentliches Problem für Sicherheitslücken.
Privat melden
Abschnitt betitelt „Privat melden“- E-Mail an das Sicherheitsteam: security@xoops.org
- Schließe ein:
- Beschreibung der Sicherheitslücke
- Schritte zum Reproduzieren
- Potenzieller Impact
- Deine Kontaktinformationen
Verantwortungsvolle Offenlegung
Abschnitt betitelt „Verantwortungsvolle Offenlegung“- Wir bestätigen den Empfang innerhalb von 48 Stunden
- Wir geben alle 7 Tage Updates
- Wir arbeiten an einem Lösungs-Zeitrahmen
- Du kannst um Anerkennung für die Entdeckung anfordern
- Koordiniere den Zeitpunkt der öffentlichen Offenlegung
Sicherheitsproblem-Beispiel
Abschnitt betitelt „Sicherheitsproblem-Beispiel“Betreff: [SECURITY] XSS-Sicherheitslücke in Kommentarformular
Beschreibung:Das Kommentarformular im Publisher-Modul bereinigt Benutzereingaben nicht richtig,was gespeicherte XSS-Angriffe ermöglicht.
Schritte zum Reproduzieren:1. Erstelle einen Kommentar mit: <img src=x onerror="alert('xss')">2. Reiche das Formular ein3. Das JavaScript wird ausgeführt, wenn du den Kommentar ansiehst
Impact:Angreifer können Benutzer-Session-Tokens stehlen, als Benutzer handeln,oder die Website verunstalten.
Umgebung:- XOOPS 2.7.0- Publisher Module 1.xBest Practices für Problem-Titel
Abschnitt betitelt „Best Practices für Problem-Titel“Gute Titel
Abschnitt betitelt „Gute Titel“OK - Die Login-Seite zeigt einen leeren Fehler, wenn die Datenbankverbindung fehlschlägtOK - Zwei-Faktor-Authentifizierung Unterstützung hinzufügenOK - Formularvalidierung verhindert SQL-Injection nicht im NamensfeldOK - Leistung der Benutzerlisten-Abfrage verbesserenOK - Installationsdokumentation für PHP 8.2 aktualisierenSchlechte Titel
Abschnitt betitelt „Schlechte Titel“NICHT OK - Fehler im SystemNICHT OK - Hilf mir!!NICHT OK - Es funktioniert nichtNICHT OK - Frage zu XOOPSNICHT OK - FehlerTitel-Richtlinien
Abschnitt betitelt „Titel-Richtlinien“- Sei spezifisch - Erwähne was und wo
- Sei prägnant - Unter 75 Zeichen
- Verwende Präsens - “zeigt leere Seite” nicht “zeigte leer”
- Schließe Kontext ein - “im Admin-Panel”, “während Installation”
- Meide generische Wörter - Nicht “fix”, “help”, “problem”
Best Practices für Problembeschreibung
Abschnitt betitelt „Best Practices für Problembeschreibung“Schließe wesentliche Informationen ein
Abschnitt betitelt „Schließe wesentliche Informationen ein“- Was - Klare Beschreibung des Problems
- Wo - Welche Seite, Modul oder Funktion
- Wann - Schritte zum Reproduzieren
- Umgebung - Version, Betriebssystem, Browser, PHP
- Warum - Warum ist dies wichtig
Verwende Code-Formatierung
Abschnitt betitelt „Verwende Code-Formatierung“Fehlermeldung: `Error: Cannot find user`
Code-Snippet:```php$user = $this->getUser($id);if (!$user) { echo "Error: Cannot find user";}### Schließe Screenshots ein
Für UI-Probleme schließe ein:- Screenshot des Problems- Screenshot des erwarteten Verhaltens- Annotiere, was falsch ist (Pfeile, Kreise)
### Verwende Labels
Füge Labels hinzu zur Kategorisierung:- `bug` - Fehlerbericht- `enhancement` - Verbesserungsanfrage- `documentation` - Dokumentationsproblem- `help wanted` - Suche nach Hilfe- `good first issue` - Gut für neue Beiträger
---
## Nach der Meldung
### Sei reaktionsfreeudig
- Überprüfe auf Fragen in den Problem-Kommentaren- Gib zusätzliche Informationen, wenn angefordert- Teste vorgeschlagene Lösungen- Verifiziere, ob der Fehler in neuen Versionen noch besteht
### Befolge Etikette
- Sei respektvoll und professionell- Nimm gute Absichten an- Fordere nicht Fixes ein - Entwickler sind Freiwillige- Biete Hilfe an, falls möglich- Danke Beitragenden für ihre Arbeit
### Halte Problem fokussiert
- Bleibe thematisch- Diskutiere nicht zusammenhanglose Probleme- Verlinke stattdessen zu verwandten Problemen- Verwende Probleme nicht für Feature-Abstimmungen
---
## Was passiert mit Problemen
### Triaging-Prozess
1. **Neues Problem erstellt** - GitHub benachrichtigt Verwalter2. **Initiale Überprüfung** - Überprüfung auf Klarheit und Duplikate3. **Label-Zuweisung** - Kategorisierung und Priorisierung4. **Zuweisung** - Zuweisung an jemanden, falls angemessen5. **Diskussion** - Weitere Info wird eingesammelt, falls nötig
### Prioritätsstufen
- **Kritisch** - Datenverlust, Sicherheit, vollständiger Ausfall- **Hoch** - Hauptfunktion kaputt, betrifft viele Benutzer- **Mittel** - Teil der Funktion kaputt, Workaround verfügbar- **Niedrig** - Geringes Problem, kosmetisch, oder Nischen-Anwendungsfall
### Lösungs-Ergebnisse
- **Behoben** - Problem gelöst in einem PR- **Wird nicht behoben** - Abgelehnt aus technischen oder strategischen Gründen- **Duplikat** - Gleiches wie anderes Problem- **Ungültig** - Nicht wirklich ein Problem- **Mehr Info erforderlich** - Warte auf zusätzliche Details
---
## Problem-Beispiele
### Beispiel: Guter Fehlerbericht
```markdown## BeschreibungAdmin-Benutzer können Elemente nicht löschen, wenn MySQL mit strict mode aktiviert ist.
## Schritte zum Reproduzieren1. Aktiviere `sql_mode='STRICT_TRANS_TABLES'` in MySQL2. Navigiere zu Publisher Admin Panel3. Klicke Löschen-Button auf irgendeinem Artikel4. Fehler wird angezeigt
## Erwartetes VerhaltenArtikel sollte gelöscht werden oder aussagekräftigen Fehler zeigen.
## Tatsächliches VerhaltenFehler: "SQL Error - Unknown column 'deleted_at' in ON clause"
## Umgebung- XOOPS Version: 2.7.0- PHP Version: 8.2.0- Datenbank: MySQL 8.0.32 mit STRICT_TRANS_TABLES- Betriebssystem: Ubuntu 22.04- Browser: Firefox 120
## Screenshots[Screenshot der Fehlermeldung]
## Zusätzlicher KontextDies passiert nur mit strict SQL mode. Funktioniert mit Standard-Einstellungen.Die Abfrage ist in class/PublisherItem.php:248
## Mögliche LösungVerwende einfache Anführungszeichen um 'deleted_at' oder verwende Backticks für alle Spaltennamen.Beispiel: Gute Feature-Anfrage
Abschnitt betitelt „Beispiel: Gute Feature-Anfrage“## BeschreibungREST API Endpoints für Read-Only Zugriff auf öffentliche Inhalte hinzufügen.
## ProblembeschreibungEntwickler möchten mobile Apps und externe Services mit XOOPS Daten erstellen.Aktuell beschränkt auf SOAP API, die veraltet und schlecht dokumentiert ist.
## Vorgeschlagene LösungImplementiere RESTful API mit:- Endpoints für Artikel, Benutzer, Kommentare (nur Lesen)- Token-basierte Authentifizierung- Standard HTTP Status Codes und Fehler- OpenAPI/Swagger Dokumentation- Pagination Unterstützung
## Überlegte Alternativen- Verbesserte SOAP API (Legacy, nicht Standards-konform)- GraphQL (komplexer, vielleicht später)
## Zusätzlicher KontextSiehe Publisher Module API Refactoring für ähnliche Muster.Würde sich mit modernen Web-Entwicklungs-Praktiken ausrichten.
## Erwarteter ImpactErmögliche Ökosystem von Third-Party Tools und Mobile Apps.Würde XOOPS Adoption und Ökosystem verbessern.Verwandte Dokumentation
Abschnitt betitelt „Verwandte Dokumentation“- Code of Conduct
- Contribution Workflow
- Pull Request Guidelines
- Contributing Overview
#xoops #issues #bug-reporting #feature-requests #github