Інструкції щодо звітування про проблеми
Ефективні звіти про помилки та запити на функції мають вирішальне значення для розробки XOOPS. Цей посібник допоможе вам створити високоякісні випуски.
Перед звітуванням
Section titled “Перед звітуванням”Перевірте існуючі проблеми
Section titled “Перевірте існуючі проблеми”Завжди спочатку шукайте:
- Перейдіть до Проблеми GitHub
- Шукайте ключові слова, пов’язані з вашою проблемою
- Перевірте закриті питання - можливо, вони вже вирішені
- Подивіться на запити на вилучення - можливо, вони виконуються
Використовуйте пошукові фільтри:
is:issue is:open label:bug- Відкриті помилкиis:issue is:open label:feature- Відкрити запити функційis:issue sort:updated- Нещодавно оновлені проблеми
Це справді проблема?
Section titled “Це справді проблема?”Розглянемо спочатку:
- Проблема конфігурації? - Перевірте документацію
- Питання про використання? - Запитайте на форумах або в спільноті Discord
- Проблема безпеки? - Див. розділ #security-issues нижче
- Специфічний модуль? - Повідомте супроводжувачу модуля
- Окрема тема? - Звіт автору теми
Типи проблем
Section titled “Типи проблем”Звіт про помилку
Section titled “Звіт про помилку”Помилка — це несподівана поведінка або дефект.
Приклади:
- Вхід не працює
- Помилки бази даних
- Відсутня перевірка форми
- Вразливість безпеки
Запит функції
Section titled “Запит функції”Запит на функцію – це пропозиція щодо нових функцій.
Приклади: — Додано підтримку нової функції
- Покращити наявну функціональність
- Додайте відсутню документацію — Покращення продуктивності
Покращення
Section titled “Покращення”Покращення покращує наявну функціональність.
Приклади: — Кращі повідомлення про помилки — Покращена продуктивність
- Кращий дизайн API
- Кращий досвід користувача
Документація
Section titled “Документація”Проблеми з документацією включають відсутність або неправильність документації.
Приклади:
- Неповна документація API
- Застарілі довідники
- Відсутні приклади коду
- Помилки в документації
Повідомлення про помилку
Section titled “Повідомлення про помилку”Шаблон звіту про помилку
Section titled “Шаблон звіту про помилку”## DescriptionBrief, clear description of the bug.
## Steps to Reproduce1. Step one2. Step two3. Step three
## Expected BehaviorWhat should happen.
## Actual BehaviorWhat actually happens.
## Environment- XOOPS Version: X.Y.Z- PHP Version: 8.2/8.3/8.4- Database: MySQL/MariaDB version- Operating System: Windows/macOS/Linux- Browser: Chrome/Firefox/Safari
## ScreenshotsIf applicable, add screenshots showing the issue.
## Additional ContextAny other relevant information.
## Possible FixIf you have suggestions for fixing the issue (optional).Гарний приклад звіту про помилку
Section titled “Гарний приклад звіту про помилку”## DescriptionLogin page shows blank page when database connection fails.
## Steps to Reproduce1. Stop the MySQL service2. Navigate to the login page3. Observe the behavior
## Expected BehaviorShow a user-friendly error message explaining the database connection issue.
## Actual BehaviorThe page is completely blank - no error message, no interface visible.
## Environment- XOOPS Version: 2.7.0- PHP Version: 8.0.28- Database: MySQL 5.7- Operating System: Ubuntu 20.04- Browser: Chrome 120
## Additional ContextThis likely affects other pages too. The error should be displayed to admins or logged appropriately.
## Possible FixCheck database connection in header.php before rendering the template.Приклад поганого звіту про помилку
Section titled “Приклад поганого звіту про помилку”## DescriptionLogin doesn't work
## Steps to ReproduceIt doesn't work
## Expected BehaviorIt should work
## Actual BehaviorIt doesn't
## EnvironmentLatest versionПовідомлення про запит функції
Section titled “Повідомлення про запит функції”Шаблон запиту функції
Section titled “Шаблон запиту функції”## DescriptionClear, concise description of the feature.
## Problem StatementWhy is this feature needed? What problem does it solve?
## Proposed SolutionDescribe your ideal implementation or UX.
## Alternatives ConsideredAre there other ways to achieve this goal?
## Additional ContextAny mockups, examples, or references.
## Expected ImpactHow would this benefit users? Would it be breaking?Гарний приклад запиту функції
Section titled “Гарний приклад запиту функції”## DescriptionAdd two-factor authentication (2FA) for user accounts.
## Problem StatementWith increasing security breaches, many CMS platforms now offer 2FA. XOOPS users want stronger account security beyond passwords.
## Proposed SolutionImplement TOTP-based 2FA (compatible with Google Authenticator, Authy, etc.).- Users can enable 2FA in their profile- Display QR code for setup- Generate backup codes for recovery- Require 2FA code at login
## Alternatives Considered- SMS-based 2FA (requires carrier integration, less secure)- Hardware keys (too complex for average users)
## Additional ContextSimilar to GitHub, GitLab, and WordPress implementations.Reference: [TOTP Standard RFC 6238](https://tools.ietf.org/html/rfc6238)
## Expected ImpactIncreases account security. Could be optional initially, mandatory in future versions.Проблеми безпеки
Section titled “Проблеми безпеки”НЕ повідомляйте публічно
Section titled “НЕ повідомляйте публічно”Ніколи не створюйте публічну проблему щодо вразливості системи безпеки.
Повідомити приватно
Section titled “Повідомити приватно”- Напишіть електронного листа команді безпеки: security@xoops.org
- Включити:
- Опис вразливості
- Кроки для відтворення
- Потенційний вплив
- Ваша контактна інформація
Відповідальне розголошення
Section titled “Відповідальне розголошення”- Ми підтвердимо отримання протягом 48 годин
- Ми будемо надавати оновлення кожні 7 днів
- Ми будемо працювати над виправленням термінів
- Ви можете запросити кредит на відкриття
- Координувати час публічного оприлюднення
Приклад проблеми безпеки
Section titled “Приклад проблеми безпеки”Subject: [SECURITY] XSS Vulnerability in Comment Form
Description:The comment form in Publisher module does not properly escape user input,allowing stored XSS attacks.
Steps to Reproduce:1. Create a comment with: <img src=x onerror="alert('xss')">2. Submit the form3. The JavaScript executes when viewing the comment
Impact:Attackers can steal user session tokens, perform actions as users,or deface the website.
Environment:- XOOPS 2.7.0- Publisher Module 1.xНазва проблеми Рекомендації
Section titled “Назва проблеми Рекомендації”Гарні назви
Section titled “Гарні назви”✅ Login page shows blank error when database connection fails✅ Add two-factor authentication support✅ Form validation not preventing SQL injection in name field✅ Improve performance of user list query✅ Update installation documentation for PHP 8.2Бідні назви
Section titled “Бідні назви”❌ Bug in system❌ Help me!!❌ It doesn't work❌ Question about XOOPS❌ ErrorВказівки щодо назви
Section titled “Вказівки щодо назви”- Будьте конкретними - Згадайте, що і де
- Будьте лаконічними - До 75 символів
- Використовуйте теперішній час - «показує порожню сторінку», а не «показує порожню»
- Включити контекст - «на панелі адміністратора», «під час встановлення»
- Уникайте загальних слів - Не “виправити”, “допомогти”, “проблема”
Опис проблеми Рекомендації
Section titled “Опис проблеми Рекомендації”Додайте важливу інформацію
Section titled “Додайте важливу інформацію”- Що – чіткий опис проблеми
- Де – яка сторінка, модуль чи функція
- Коли – етапи відтворення
- Середовище - версія, ОС, браузер, PHP
- Чому – чому це важливо
Використовуйте форматування коду
Section titled “Використовуйте форматування коду”Error message: `Error: Cannot find user`
Code snippet:php $user = $this->getUser($id); якщо (!$user) { echo “Помилка: не вдається знайти користувача”; }
Додайте знімки екрана
Section titled “Додайте знімки екрана”Для проблем інтерфейсу користувача включіть:
- Скріншот проблеми
- Скріншот очікуваної поведінки
- Позначте, що не так (стрілки, кружечки)
Використовуйте мітки
Section titled “Використовуйте мітки”Додайте мітки для категоризації:
bug- звіт про помилкуenhancement- запит на покращенняdocumentation- Проблема з документацієюhelp wanted- Шукаю допомогиgood first issue- Добре для нових учасників
Після звітування
Section titled “Після звітування”Будьте чуйними
Section titled “Будьте чуйними”- Перевірте наявність питань у коментарях до випуску
- Надайте додаткову інформацію, якщо потрібно — Перевірте запропоновані виправлення
- Перевірте наявність помилки в нових версіях
Дотримуйтесь етикету
Section titled “Дотримуйтесь етикету”- Будьте поважними та професійними
- Припускайте добрі наміри
- Не вимагайте виправлення - розробники волонтери
- Запропонуйте допомогу, якщо це можливо
- Дякую дописувачам за роботу
Зосередьтеся на проблемі
Section titled “Зосередьтеся на проблемі”- Дотримуйтесь теми
- Не обговорюйте незв’язані питання
- Натомість посилання на пов’язані питання
- Не використовуйте питання для голосування за особливості
Що відбувається з проблемами
Section titled “Що відбувається з проблемами”Процес сортування
Section titled “Процес сортування”- Створено нову проблему - GitHub повідомляє розробників
- Початкова перевірка - Перевірено на ясність і дублікати
- Присвоєння мітки - категоризація та пріоритетність
- Призначення - призначається комусь, якщо це доречно
- Обговорення – за потреби збирається додаткова інформація
Рівні пріоритету
Section titled “Рівні пріоритету”- Критичний - втрата даних, безпека, повна поломка
- Високий - основна функція не працює, впливає на багатьох користувачів
- Середній - Частина функції не працює, доступне обхідне рішення
- Низький – незначна проблема, косметичний або нішевий варіант використання
Результати вирішення
Section titled “Результати вирішення”- Виправлено - проблему вирішено в PR
- Не виправляється - Відхилено з технічних або стратегічних причин
- Дублікат - те саме, що й інша проблема
- Недійсний - насправді це не проблема
- Потрібна додаткова інформація - Чекаємо додаткових деталей
Приклади проблем
Section titled “Приклади проблем”Приклад: хороший звіт про помилку
Section titled “Приклад: хороший звіт про помилку”## DescriptionAdmin users cannot delete items when using MySQL with strict mode enabled.
## Steps to Reproduce1. Enable `sql_mode='STRICT_TRANS_TABLES'` in MySQL2. Navigate to Publisher admin panel3. Click delete button on any article4. Error is shown
## Expected BehaviorArticle should be deleted or show meaningful error.
## Actual BehaviorError: "SQL Error - Unknown column 'deleted_at' in ON clause"
## Environment- XOOPS Version: 2.7.0- PHP Version: 8.2.0- Database: MySQL 8.0.32 with STRICT_TRANS_TABLES- Operating System: Ubuntu 22.04- Browser: Firefox 120
## Screenshots[Screenshot of error message]
## Additional ContextThis only happens with strict SQL mode. Works fine with default settings.The query is in class/PublisherItem.php:248
## Possible FixUse single quotes around 'deleted_at' or use backticks for all column names.Приклад: Хороший запит на функцію
Section titled “Приклад: Хороший запит на функцію”## DescriptionAdd REST API endpoints for read-only access to public content.
## Problem StatementDevelopers want to build mobile apps and external services using XOOPS data.Currently limited to SOAP API which is outdated and poorly documented.
## Proposed SolutionImplement RESTful API with:- Endpoints for articles, users, comments (read-only)- Token-based authentication- Standard HTTP status codes and errors- OpenAPI/Swagger documentation- Pagination support
## Alternatives Considered- Enhanced SOAP API (legacy, not standards-compliant)- GraphQL (more complex, maybe future)
## Additional ContextSee Publisher module API refactoring for similar patterns.Would align with modern web development practices.
## Expected ImpactEnable ecosystem of third-party tools and mobile apps.Would improve XOOPS adoption and ecosystem.Пов’язана документація
Section titled “Пов’язана документація”- Кодекс поведінки
- Робочий процес внеску
- Інструкції щодо запиту на отримання
- Огляд внеску
#xoops #issues #bug-reporting #feature-requests #github