ไอเดีย #72: ระบบ changelog และแจ้งเวอร์ชันใหม่ให้ผู้ใช้
เราอัปเดตระบบทุกสัปดาห์ แต่ผู้ใช้ไม่รู้เลยว่ามีอะไรใหม่ ฟีเจอร์ที่ทีมทำมาเป็นเดือนกลับไม่มีคนใช้ เพราะไม่มีใครรู้ว่ามันมีอยู่ ขณะที่บางครั้งเราเปลี่ยนหน้าจอแล้วผู้ใช้โทรมาถามว่าปุ่มหายไปไหน ระบบ changelog และแจ้งเวอร์ชันใหม่ช่วยปิดช่องว่างนี้ ให้ทีมเขียน release note ครั้งเดียว แล้วไปโผล่ทั้งในหน้า changelog และ widget เล็ก ๆ ในแอป
ใครจะใช้
- ทีมพัฒนา/Product — เขียน release note จัดหมวด เผยแพร่ตามเวลา
- ผู้ใช้ระบบ — เห็นจุดแจ้งเตือน "มีอะไรใหม่" อ่านรายละเอียด กดถูกใจหรือให้ความเห็น
- ทีม support — อ้างอิง changelog เวลาตอบคำถามลูกค้า
ฟีเจอร์ขั้นต่ำ (MVP)
- เขียน release note ด้วย Markdown แยกหมวด (ใหม่ ปรับปรุง แก้ไข) ผูกกับเลขเวอร์ชัน
- ตั้งเวลาเผยแพร่ และเลือกกลุ่มผู้ใช้ที่จะเห็น (ทุกคน/เฉพาะ admin/เฉพาะลูกค้าแผนใด)
- หน้า changelog สาธารณะเรียงตามเวลา มี RSS
- Widget แบบ JavaScript ฝังในแอปได้ด้วยโค้ดไม่กี่บรรทัด แสดง badge จำนวนเรื่องที่ยังไม่อ่าน
- จำว่าผู้ใช้อ่านถึงไหนแล้ว (ผ่าน user id ที่แอปส่งมา หรือ local storage)
- ผู้ใช้ให้ reaction หรือ feedback สั้น ๆ ต่อแต่ละรายการ
ต่อยอดได้อีก
- ดึงข้อความจาก commit หรือ pull request มาเป็นร่าง release note ให้คนแก้ต่อ
- Roadmap สาธารณะให้ผู้ใช้โหวตฟีเจอร์ที่อยากได้
- ส่งสรุปรายเดือนทางอีเมล
- รองรับหลายภาษา ไทย/อังกฤษ
โครงข้อมูลตั้งต้น
product— id, name, widget_keyrelease— id, product_id, version, title, body_md, category, audience, publish_at, statusrelease_read— product_id, external_user_id, last_read_release_id, updated_atrelease_reaction— id, release_id, external_user_id, reaction, comment, created_at
ระดับความยาก และสิ่งที่จะได้เรียนรู้
มือใหม่ถึงปานกลาง — ส่วนที่น่าเรียนคือการทำ widget ที่ฝังในเว็บคนอื่น
- ทำ embeddable widget ที่ไม่ชน CSS ของเว็บหลัก (ลองใช้ Shadow DOM หรือ iframe)
- ตั้งค่า CORS ให้ถูกต้องสำหรับ API ที่ widget เรียก
- render Markdown อย่างปลอดภัย (sanitize HTML)
- สร้าง RSS feed และหน้า public ที่ SEO ดี
ข้อควรระวัง
- Markdown ที่ render เป็น HTML ต้องกรอง script ออก ไม่อย่างนั้นเกิด XSS ในแอปลูกค้าทุกตัวที่ฝัง widget
- ถ้าแอปส่ง user id มา ให้ใช้ id ที่สุ่มหรือ hash ไม่ส่งอีเมลหรือข้อมูลส่วนตัวมาโดยไม่จำเป็น
- release note ไม่ควรเปิดเผยรายละเอียดช่องโหว่ที่เพิ่งแก้ก่อนผู้ใช้ทุกคนอัปเดต
ทีมคุณเขียน release note กันไหม หรือปล่อยให้ commit message เป็นเอกสารแทน? และคิดว่า widget แบบ popup หรือแบบ badge เล็ก ๆ ที่ไม่กวนผู้ใช้ดีกว่ากัน มาออกความเห็นกันครับ ทำเสร็จแล้วเอามาแชร์ในกระทู้ได้เลย