แนวทางการรายงานปัญหา
รายงานข้อบกพร่องที่มีประสิทธิภาพและการร้องขอคุณลักษณะมีความสำคัญอย่างยิ่งต่อการพัฒนา XOOPS คู่มือนี้ช่วยคุณสร้างปัญหาคุณภาพสูง
ก่อนรายงานตัว
หัวข้อที่มีชื่อว่า “ก่อนรายงานตัว”ตรวจสอบปัญหาที่มีอยู่
หัวข้อที่มีชื่อว่า “ตรวจสอบปัญหาที่มีอยู่”ค้นหาก่อนเสมอ:
- ไปที่ ปัญหา GitHub
- ค้นหาคำหลักที่เกี่ยวข้องกับปัญหาของคุณ
- ตรวจสอบปัญหาที่ปิดแล้ว - อาจได้รับการแก้ไขแล้ว
- ดูคำขอดึง - อาจอยู่ระหว่างดำเนินการ
ใช้ตัวกรองการค้นหา:
is:issue is:open label:bug- เปิดข้อบกพร่องis:issue is:open label:feature- เปิดคำขอคุณลักษณะis:issue sort:updated- ปัญหาที่อัปเดตล่าสุด
มันเป็นปัญหาจริงๆเหรอ?
หัวข้อที่มีชื่อว่า “มันเป็นปัญหาจริงๆเหรอ?”พิจารณาก่อน:
- ปัญหาการกำหนดค่า? - ตรวจสอบเอกสารประกอบ
- คำถามการใช้งาน? - ถามในฟอรั่มหรือชุมชน Discord
- ปัญหาด้านความปลอดภัย? - ดูส่วน #ปัญหาด้านความปลอดภัย ด้านล่าง
- เฉพาะโมดูล? - รายงานไปยังผู้ดูแลโมดูล
- เฉพาะธีม? - รายงานไปยังผู้เขียนธีม
ประเภทปัญหา
หัวข้อที่มีชื่อว่า “ประเภทปัญหา”รายงานข้อผิดพลาด
หัวข้อที่มีชื่อว่า “รายงานข้อผิดพลาด”จุดบกพร่องคือพฤติกรรมหรือข้อบกพร่องที่ไม่คาดคิด
ตัวอย่าง:
- เข้าสู่ระบบใช้งานไม่ได้
- ข้อผิดพลาดของฐานข้อมูล
- ขาดการตรวจสอบแบบฟอร์ม
- ช่องโหว่ด้านความปลอดภัย
คำขอคุณสมบัติ
หัวข้อที่มีชื่อว่า “คำขอคุณสมบัติ”คำขอคุณลักษณะเป็นข้อเสนอแนะสำหรับฟังก์ชันการทำงานใหม่
ตัวอย่าง:
- เพิ่มการรองรับคุณสมบัติใหม่
- ปรับปรุงฟังก์ชันการทำงานที่มีอยู่
- เพิ่มเอกสารที่ขาดหายไป
- การปรับปรุงประสิทธิภาพ
การเพิ่มประสิทธิภาพ
หัวข้อที่มีชื่อว่า “การเพิ่มประสิทธิภาพ”การปรับปรุงปรับปรุงฟังก์ชันการทำงานที่มีอยู่
ตัวอย่าง:
- ข้อความแสดงข้อผิดพลาดที่ดีขึ้น
- ปรับปรุงประสิทธิภาพ
- การออกแบบ API ที่ดีกว่า
- ประสบการณ์การใช้งานที่ดีขึ้น
เอกสารประกอบ
หัวข้อที่มีชื่อว่า “เอกสารประกอบ”ปัญหาด้านเอกสารรวมถึงเอกสารที่ขาดหายไปหรือไม่ถูกต้อง
ตัวอย่าง:
- เอกสาร API ไม่สมบูรณ์
- คำแนะนำที่ล้าสมัย
- ตัวอย่างโค้ดที่หายไป
- การพิมพ์ผิดในเอกสาร
รายงานข้อผิดพลาด
หัวข้อที่มีชื่อว่า “รายงานข้อผิดพลาด”เทมเพลตรายงานข้อผิดพลาด
หัวข้อที่มีชื่อว่า “เทมเพลตรายงานข้อผิดพลาด”markdown## 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).ตัวอย่างรายงานข้อผิดพลาดที่ดี
หัวข้อที่มีชื่อว่า “ตัวอย่างรายงานข้อผิดพลาดที่ดี”markdown## 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.ตัวอย่างรายงานข้อผิดพลาดที่ไม่ดี
หัวข้อที่มีชื่อว่า “ตัวอย่างรายงานข้อผิดพลาดที่ไม่ดี”markdown## DescriptionLogin doesn't work
## Steps to ReproduceIt doesn't work
## Expected BehaviorIt should work
## Actual BehaviorIt doesn't
## EnvironmentLatest versionการรายงานคำขอคุณสมบัติ
หัวข้อที่มีชื่อว่า “การรายงานคำขอคุณสมบัติ”เทมเพลตคำขอคุณสมบัติ
หัวข้อที่มีชื่อว่า “เทมเพลตคำขอคุณสมบัติ”markdown## 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?ตัวอย่างคำขอคุณสมบัติที่ดี
หัวข้อที่มีชื่อว่า “ตัวอย่างคำขอคุณสมบัติที่ดี”markdown## 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.ปัญหาด้านความปลอดภัย
หัวข้อที่มีชื่อว่า “ปัญหาด้านความปลอดภัย”ทำ NOT รายงานต่อสาธารณะ
หัวข้อที่มีชื่อว่า “ทำ NOT รายงานต่อสาธารณะ”อย่าสร้างปัญหาสาธารณะเกี่ยวกับช่องโหว่ด้านความปลอดภัย
รายงานเป็นการส่วนตัว
หัวข้อที่มีชื่อว่า “รายงานเป็นการส่วนตัว”- ส่งอีเมลถึงทีมรักษาความปลอดภัย: security@xoops.org
- รวม:
- คำอธิบายของช่องโหว่
- ขั้นตอนในการสืบพันธุ์
- ผลกระทบที่อาจเกิดขึ้น
- ข้อมูลการติดต่อของคุณ
การเปิดเผยอย่างมีความรับผิดชอบ
หัวข้อที่มีชื่อว่า “การเปิดเผยอย่างมีความรับผิดชอบ”- เราจะรับทราบการรับภายใน 48 ชั่วโมง
- เราจะให้ข้อมูลอัปเดตทุกๆ 7 วัน
- เราจะดำเนินการแก้ไขไทม์ไลน์
- คุณสามารถขอเครดิตสำหรับการค้นพบได้
- ประสานงานกำหนดเวลาการเปิดเผยต่อสาธารณะ
ตัวอย่างปัญหาด้านความปลอดภัย
หัวข้อที่มีชื่อว่า “ตัวอย่างปัญหาด้านความปลอดภัย”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หัวข้อปัญหาแนวทางปฏิบัติที่ดีที่สุด
หัวข้อที่มีชื่อว่า “หัวข้อปัญหาแนวทางปฏิบัติที่ดีที่สุด”✅ 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ชื่อไม่ดี
หัวข้อที่มีชื่อว่า “ชื่อไม่ดี”❌ Bug in system❌ Help me!!❌ It doesn't work❌ Question about XOOPS❌ Errorหลักเกณฑ์ชื่อเรื่อง
หัวข้อที่มีชื่อว่า “หลักเกณฑ์ชื่อเรื่อง”- ระบุให้เจาะจง - กล่าวถึงอะไรและที่ไหน
- กระชับ - ไม่เกิน 75 ตัวอักษร
- ใช้กาลปัจจุบัน - “แสดงหน้าว่าง” ไม่ใช่ “แสดงหน้าว่าง”
- รวมบริบท - “ในแผงผู้ดูแลระบบ”, “ระหว่างการติดตั้ง”
- หลีกเลี่ยงคำทั่วไป - ไม่ใช่ “แก้ไข” “ช่วยเหลือ” “ปัญหา”
คำอธิบายประเด็น แนวทางปฏิบัติที่ดีที่สุด
หัวข้อที่มีชื่อว่า “คำอธิบายประเด็น แนวทางปฏิบัติที่ดีที่สุด”รวมข้อมูลที่จำเป็น
หัวข้อที่มีชื่อว่า “รวมข้อมูลที่จำเป็น”- อะไร - คำอธิบายปัญหาที่ชัดเจน
- ที่ไหน - เพจ โมดูล หรือฟีเจอร์ใด
- เมื่อ - ขั้นตอนในการสืบพันธุ์
- สภาพแวดล้อม - เวอร์ชัน OS เบราว์เซอร์ PHP
- ทำไม - เหตุใดจึงสำคัญ
ใช้การจัดรูปแบบโค้ด
หัวข้อที่มีชื่อว่า “ใช้การจัดรูปแบบโค้ด”markdownError message: `Error: Cannot find user`
Code snippet:```php$user = $this->getUser($id);if (!$user) { echo "Error: Cannot find user";}### Include Screenshots
For UI issues, include:- Screenshot of the problem- Screenshot of expected behavior- Annotate what's wrong (arrows, circles)
### Use Labels
Add labels to categorize:- `bug` - Bug report- `enhancement` - Enhancement request- `documentation` - Documentation issue- `help wanted` - Looking for help- `good first issue` - Good for new contributors
---
## After Reporting
### Be Responsive
- Check for questions in the issue comments- Provide additional information if requested- Test suggested fixes- Verify bug still exists with new versions
### Follow Etiquette
- Be respectful and professional- Assume good intentions- Don't demand fixes - developers are volunteers- Offer to help if possible- Thank contributors for their work
### Keep Issue Focused
- Stay on topic- Don't discuss unrelated issues- Link to related issues instead- Don't use issues for feature voting
---
## What Happens to Issues
### Triage Process
1. **New issue created** - GitHub notifies maintainers2. **Initial review** - Checked for clarity and duplicates3. **Label assignment** - Categorized and prioritized4. **Assignment** - Assigned to someone if appropriate5. **Discussion** - Additional info gathered if needed
### Priority Levels
- **Critical** - Data loss, security, complete breakage- **High** - Major feature broken, affects many users- **Medium** - Part of feature broken, workaround available- **Low** - Minor issue, cosmetic, or niche use case
### Resolution Outcomes
- **Fixed** - Issue resolved in a PR- **Won't fix** - Rejected for technical or strategic reasons- **Duplicate** - Same as another issue- **Invalid** - Not actually an issue- **Needs more info** - Waiting for additional details
---
## Issue Examples
### Example: Good Bug Reportmarkdown
Description
หัวข้อที่มีชื่อว่า “Description”Admin users cannot delete items when using MySQL with strict mode enabled.
Steps to Reproduce
หัวข้อที่มีชื่อว่า “Steps to Reproduce”- Enable
sql_mode='STRICT_TRANS_TABLES'in MySQL - Navigate to Publisher admin panel
- Click delete button on any article
- Error is shown
Expected Behavior
หัวข้อที่มีชื่อว่า “Expected Behavior”Article should be deleted or show meaningful error.
Actual Behavior
หัวข้อที่มีชื่อว่า “Actual Behavior”Error: “SQL Error - Unknown column ‘deleted_at’ in ON clause”
Environment
หัวข้อที่มีชื่อว่า “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
หัวข้อที่มีชื่อว่า “Screenshots”[Screenshot of error message]
Additional Context
หัวข้อที่มีชื่อว่า “Additional Context”This only happens with strict SQL mode. Works fine with default settings. The query is in class/PublisherItem.php:248
Possible Fix
หัวข้อที่มีชื่อว่า “Possible Fix”Use single quotes around ‘deleted_at’ or use backticks for all column names.
### ตัวอย่าง: คำขอคุณลักษณะที่ดีmarkdown
Description
หัวข้อที่มีชื่อว่า “Description”Add REST API endpoints for read-only access to public content.
Problem Statement
หัวข้อที่มีชื่อว่า “Problem Statement”Developers want to build mobile apps and external services using XOOPS data. Currently limited to SOAP API which is outdated and poorly documented.
Proposed Solution
หัวข้อที่มีชื่อว่า “Proposed Solution”Implement 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
หัวข้อที่มีชื่อว่า “Alternatives Considered”- Enhanced SOAP API (legacy, not standards-compliant)
- GraphQL (more complex, maybe future)
Additional Context
หัวข้อที่มีชื่อว่า “Additional Context”See Publisher module API refactoring for similar patterns. Would align with modern web development practices.
Expected Impact
หัวข้อที่มีชื่อว่า “Expected Impact”Enable ecosystem of third-party tools and mobile apps. Would improve XOOPS adoption and ecosystem.
---
## เอกสารที่เกี่ยวข้อง
- หลักจรรยาบรรณ- ขั้นตอนการทำงานสมทบ- แนวทางการขอดึง- ภาพรวมการมีส่วนร่วม
---
#xoops #issues #การรายงานจุดบกพร่อง #คำขอคุณสมบัติ #github