บันทึกการเปลี่ยนแปลง (Changelog)
สรุปใจความสำคัญ
- Changelog คือบันทึกรายการการเปลี่ยนแปลงของซอฟต์แวร์ที่ปรับปรุงตามกาลเวลา
- แบ่งเป็นแบบคัดสรร (Curated) ที่เน้นให้อ่านง่าย และแบบสร้างอัตโนมัติ (Generated) ที่เน้นความครบถ้วนของข้อมูล
- ชื่อไฟล์มาตรฐานที่พบบ่อยคือ CHANGELOG, CHANGES และ HISTORY
- Release Notes แตกต่างจาก Changelog ตรงที่มักเน้นเฉพาะการเปลี่ยนแปลงล่าสุดเพื่อแจ้งผู้ใช้งาน
บันทึกการเปลี่ยนแปลง หรือ Changelog คือ รายการบันทึกรายละเอียดของการแก้ไข ปรับปรุง หรือเปลี่ยนแปลงที่เกิดขึ้นกับซอฟต์แวร์ ผลิตภัณฑ์ หรือชุดคำสั่ง (Codebase) ตลอดระยะเวลาที่มีการพัฒนาและปรับปรุงเวอร์ชัน

ประเภทของบันทึกการเปลี่ยนแปลง
บันทึกการเปลี่ยนแปลงสามารถแบ่งออกเป็นสองรูปแบบหลักตามวิธีการจัดทำและจุดประสงค์ในการนำเสนอข้อมูล:
1. บันทึกแบบคัดสรร (Curated Record)
เป็นบันทึกที่ผู้พัฒนาจัดทำขึ้นโดยตั้งใจ เพื่อให้ผู้ใช้งานหรือนักพัฒนาคนอื่นสามารถทำความเข้าใจการเปลี่ยนแปลงได้ง่าย โดยมักจะจัดกลุ่มข้อมูลออกเป็นหมวดหมู่ เช่น:
- คุณสมบัติใหม่ (New Features): สิ่งที่เพิ่มเข้ามาเพื่อให้ซอฟต์แวร์ทำงานได้มากขึ้น
- การแก้ไขข้อผิดพลาด (Bug Fixes): การปรับปรุงส่วนที่ทำงานผิดพลาดให้ถูกต้อง
- การปรับปรุงประสิทธิภาพ (Performance Improvements): การทำให้ซอฟต์แวร์ทำงานได้รวดเร็วหรือเสถียรขึ้น
2. บันทึกแบบสร้างอัตโนมัติ (Generated Report)
เป็นรายงานที่ระบบสร้างขึ้นโดยอัตโนมัติ ซึ่งจะรวมการเปลี่ยนแปลงทั้งหมดโดยไม่คำนึงถึงความง่ายในการอ่าน เช่น รายการ Commit ในระบบควบคุมเวอร์ชัน (Version Control System) อย่าง Git ซึ่งจะแสดงทุกการเปลี่ยนแปลงของโค้ด แม้ว่าบางส่วนอาจเป็นเพียงการแก้ไขคำผิดเล็กน้อย ซึ่งผู้ใช้บางส่วนอาจมองว่าข้อมูลละเอียดเกินไปและไม่เป็นประโยชน์เท่ากับบันทึกแบบคัดสรร
ตัวอย่างที่เห็นได้ชัดคือระบบวิกิ (Wiki) เช่น Wikipedia ที่มีลิงก์ "ดูประวัติ" (View history) เพื่อแสดงรายการการแก้ไขทุกครั้งที่เกิดขึ้นในแต่ละบทความ
การตั้งชื่อและรูปแบบไฟล์
ชื่อไฟล์ที่ใช้สำหรับบันทึกการเปลี่ยนแปลงมีความหลากหลาย ขึ้นอยู่กับมาตรฐานของโครงการนั้นๆ ชื่อที่พบบ่อย ได้แก่ CHANGELOG, CHANGES และ HISTORY สำหรับมาตรฐานของ GNU Automake จะใช้ชื่อ ChangeLog
ในด้านนามสกุลไฟล์ มักใช้รูปแบบที่รองรับการอ่านง่าย เช่น .txt (ข้อความธรรมดา), .md (Markdown) หรือ .rst (reStructuredText) โดยส่วนใหญ่ในโครงการซอฟต์แวร์แบบเปิด (Open-source) ไฟล์นี้จะถูกวางไว้ที่ระดับบนสุด (Top level) ของโครงสร้างไดเรกทอรี
ความแตกต่างระหว่าง Changelog และ Release Notes
ในบางกรณี ข้อมูลการเปลี่ยนแปลงที่จำกัดเฉพาะเวอร์ชันล่าสุดจะถูกนำเสนอในรูปแบบของ บันทึกการปล่อยตัวซอฟต์แวร์ (Release Notes) หรืออาจใช้ชื่อว่า "ข่าวสาร" (News) หรือ "การเปลี่ยนแปลงล่าสุด" (Recent changes) ซึ่งเน้นการสื่อสารกับผู้ใช้ปลายทางมากกว่าการบันทึกประวัติทางเทคนิคทั้งหมด
มาตรฐานการเขียนของ GNU
มาตรฐานการเขียนโค้ดของ GNU กำหนดให้บันทึกการเปลี่ยนแปลงจัดระเบียบเป็นบล็อกข้อมูล โดยแต่ละบล็อกต้องระบุ:
- วันที่ที่มีการเปลี่ยนแปลง
- ชื่อผู้แก้ไขและที่อยู่อีเมล (มักเขียนในรูปแบบ
<email@example.com>) - รายละเอียดการเปลี่ยนแปลงที่เกิดขึ้นภายในฟังก์ชันหรือไฟล์นั้นๆ
โปรแกรมแก้ไขข้อความอย่าง Emacs มีฟังก์ชันที่ช่วยสร้างรายการบันทึกตามรูปแบบมาตรฐานนี้โดยอัตโนมัติ
คำถามที่พบบ่อย
Changelog คืออะไร?
คือรายการบันทึกการแก้ไข ปรับปรุง หรือเพิ่มคุณสมบัติใหม่ๆ ให้กับซอฟต์แวร์หรือผลิตภัณฑ์ เพื่อให้ผู้ใช้และนักพัฒนาทราบว่ามีการเปลี่ยนแปลงอะไรเกิดขึ้นบ้างในแต่ละเวอร์ชัน
ความแตกต่างระหว่าง Changelog และ Release Notes คืออะไร?
Changelog มักเป็นบันทึกประวัติการเปลี่ยนแปลงทั้งหมดตั้งแต่เริ่มต้นจนถึงปัจจุบัน ในขณะที่ Release Notes จะเน้นเฉพาะการเปลี่ยนแปลงที่สำคัญในเวอร์ชันที่เพิ่งปล่อยออกมา เพื่อสื่อสารกับผู้ใช้โดยตรง
ทำไมบางคนถึงชอบ Changelog แบบคัดสรรมากกว่าแบบอัตโนมัติ?
เพราะแบบอัตโนมัติ (เช่น Git log) จะแสดงทุกการเปลี่ยนแปลงเล็กน้อย ซึ่งอาจทำให้ข้อมูลล้นและหาจุดสำคัญได้ยาก ส่วนแบบคัดสรรจะสรุปเฉพาะสิ่งที่สำคัญและจัดหมวดหมู่ให้อ่านง่าย


