← กลับไปยังบทความทั้งหมด

บันทึกการเปลี่ยนแปลง (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) จะแสดงทุกการเปลี่ยนแปลงเล็กน้อย ซึ่งอาจทำให้ข้อมูลล้นและหาจุดสำคัญได้ยาก ส่วนแบบคัดสรรจะสรุปเฉพาะสิ่งที่สำคัญและจัดหมวดหมู่ให้อ่านง่าย