15/10/2026 · VietTechies · Biên tập

Định dạng ảnh PNG ra đời để đáp lại một thông báo thu phí bản quyền hồi tháng 12 năm 1994. Những ngày cuối tháng ấy, dịch vụ trực tuyến CompuServe công bố đã đạt thỏa thuận với Unisys để thu phí bản quyền từ những người viết phần mềm hỗ trợ GIF. Theo lời Greg Roelofs, người sau này ghi lại lịch sử của PNG, tin ấy đến “ngay giữa kỳ nghỉ Giáng sinh”.
Ngày 4 tháng 1 năm 1995, Tom Boutell đăng bản nháp đầu tiên của một định dạng thay thế GIF lên ba nhóm thảo luận trên mạng Usenet. Khoảng sáu tuần sau thông báo thu phí bản quyền, chính CompuServe đã ủng hộ định dạng thay thế ấy làm người kế nhiệm chính thức của GIF.
GIF — viết tắt của Graphics Interchange Format — vốn là định dạng của riêng CompuServe. Stephen Wilhite tạo ra GIF tại CompuServe năm 1987, và định dạng này nén ảnh bằng LZW (Lempel–Ziv–Welch), một phương pháp mà Terry Welch đã mô tả trong một bài báo trên tạp chí năm 1984. Welch phát triển LZW tại Sperry, và Sperry đã đăng ký bằng sáng chế cho phương pháp này: bằng sáng chế Mỹ số 4.558.302, nộp đơn vào tháng 6 năm 1983 và được cấp vào tháng 12 năm 1985. Năm 1986, khi Sperry và Burroughs sáp nhập thành Unisys, bằng sáng chế này về tay Unisys.
Bài báo của Welch không nhắc đến bằng sáng chế. Trong một bản tường thuật năm 1995 về vụ tranh chấp, lập trình viên Michael Battilana viết rằng có vẻ như cả CompuServe lẫn người cộng sự đã thiết kế GIF cho CompuServe đều không biết đến bằng sáng chế này. CompuServe và Unisys ký thỏa thuận cấp phép sử dụng bằng sáng chế vào ngày 21 tháng 6 năm 1994, sáu tháng trước thông báo thu phí bản quyền.
Giấy phép của CompuServe thực ra yêu cầu những gì
Trên giấy tờ, các điều khoản có phạm vi hẹp. Một thông báo tiếp theo của CompuServe, đề ngày 4 tháng 1 năm 1995, cho biết giấy phép này nhắm vào những lập trình viên viết chương trình “chủ yếu để dùng cùng với CompuServe”. Họ sẽ trả khoản phí một lần 1,00 USD, cộng với phí bản quyền 1,5% hoặc 0,15 USD cho mỗi bản được đăng ký, tùy khoản nào lớn hơn. Thông báo này hứa rằng thỏa thuận “sẽ không phát sinh bất kỳ khoản phí nào đối với những ai dùng trình xem ảnh hoặc truyền tải ảnh GIF”. Còn Unisys cho biết các ứng dụng GIF phi thương mại, phi lợi nhuận không cần giấy phép và không phải trả phí, kể cả các ứng dụng dành cho dịch vụ trực tuyến và phần mềm miễn phí (freeware) trên Internet.
Dù vậy, giờ đây GIF đã gắn với một giấy phép bằng sáng chế. Bản thuyết minh thiết kế (rationale) mà các tác giả PNG công bố về sau đã tóm gọn vấn đề trong một câu: “GIF không còn được sử dụng tự do nữa.”
Cách các tình nguyện viên làm ra định dạng thay thế GIF trong hai tháng
Boutell đặt tên cho bản nháp của mình là PBF, viết tắt của Portable Bitmap Format. Cuộc thảo luận lớn dần, từ Usenet chuyển sang một nhóm trao đổi qua email (mailing list), kèm theo một diễn đàn trên CompuServe. Boutell dẫn dắt nhóm làm việc không chính thức này với vai trò “nhà độc tài nhân từ” (Benevolent Dictator): khi không thể đạt được đồng thuận, ông là người quyết định. Roelofs gọi vai trò ấy là “yếu tố quan trọng nhất đối với tiến độ của nhóm”.
Cái tên mới xuất hiện trong bản nháp số 5, ngày 23 tháng 1: PNG. Oliver Fromme được ghi nhận là người đặt ra cái tên này. Về mặt chính thức, PNG là viết tắt của Portable Network Graphics, nhưng Roelofs viết rằng sức hút của một từ viết tắt đệ quy không chính thức, “PNG’s Not GIF” (PNG không phải GIF), “là điều đã định đoạt chuyện này”.
Tom Lane, nhóm Info-ZIP và một số người khác đề xuất cho PNG phương pháp nén deflate, cũng là cách nén mà các công cụ zip và gzip sử dụng. Jean-loup Gailly và Mark Adler viết lại phần mã nén ấy thành thư viện đa dụng zlib.
Trong khi đó, ngày 16 tháng 1, CompuServe thông báo đang phát triển một định dạng kế nhiệm riêng, mang tên GIF24. Ngày 7 tháng 2 năm 1995, hãng bỏ dự án này và chuyển sang ủng hộ PNG, vì theo lời Roelofs, CompuServe đã “đủ ấn tượng với thiết kế”. Đến đầu tháng 3, bản nháp số 9 ra đời và bản đặc tả được chính thức đóng băng — “chỉ hơn hai tháng kể từ lúc bắt đầu”, Roelofs viết.
Những lựa chọn thiết kế vẫn hiện diện trong mọi file PNG
Nhóm phát triển PNG chọn không vá lại GIF. Theo bản thuyết minh thiết kế mà nhóm công bố, lẽ ra họ có thể dùng GIF với một cơ chế nén không vướng bằng sáng chế, “nhưng dù sao thì việc đó cũng đòi hỏi code mới”, nên nhóm đã nhân cơ hội này khắc phục một số hạn chế đã biết của GIF.
Đến nay, mọi file PNG vẫn mở đầu bằng phần chữ ký (signature) dài tám byte mà Tom Lane chốt vào cuối tháng 1 năm 1995. Tám byte ấy — giá trị 137, ba chữ cái P, N và G, cặp ký tự về đầu dòng và xuống dòng (CR-LF), một ký tự control-Z và một ký tự xuống dòng ở cuối — giúp nhận diện file và phát hiện những trục trặc thường gặp khi truyền file. Byte đầu tiên không thuộc bảng mã ASCII (văn bản thuần 7 bit), nên khó có chuyện một file văn bản bị nhầm là file PNG, và nếu quá trình truyền file xóa mất bit cao nhất của từng byte thì lỗi đó sẽ bị phát hiện. Theo bản thuyết minh, cặp CR-LF “phát hiện những lần truyền file lỗi làm biến đổi chuỗi ký tự xuống dòng”. Ký tự control-Z ngăn file bị hiển thị ra màn hình trên MS-DOS, hệ điều hành dòng lệnh của Microsoft, còn ký tự xuống dòng ở cuối thì phát hiện kiểu chuyển đổi ký tự xuống dòng theo chiều ngược lại.
Sau phần chữ ký, file PNG là một chuỗi khối dữ liệu (chunk). Mỗi khối mang mã kiểm tra (checksum) CRC-32 riêng, tức một phép kiểm tra dư thừa vòng 32 bit, nhờ vậy có thể phát hiện dữ liệu bị hỏng. PNG hỗ trợ kênh alpha đầy đủ — mỗi điểm ảnh có một mức trong suốt riêng — trong khi GIF chỉ có thể đánh dấu một màu duy nhất trong bảng màu là trong suốt. Cơ chế xen kẽ hai chiều (interlacing) của PNG — gọi là Adam7, đặt theo tên Adam M. Costello — hiển thị được một hình ảnh thô đầu tiên sau khi nhận được 1/64 số điểm ảnh, so với 1/8 ở GIF; vì vậy, theo bản thuyết minh, hình ảnh đầu tiên của PNG hiện ra “nhanh gấp tám lần”.
Có một tính năng bị cố ý gạt ra ngoài: thời đó, mỗi file PNG chỉ chứa một ảnh, một giới hạn mà bản thuyết minh coi là phản ánh “thực tế rằng nhiều ứng dụng không cần và sẽ không hỗ trợ nhiều ảnh trong một file”. Ảnh động vẫn là địa hạt của GIF.
Tiêu chuẩn, trình duyệt chậm chân và đợt hoảng sợ về GIF năm 1999
Ngày 1 tháng 10 năm 1996, tổ chức World Wide Web Consortium (W3C) công bố PNG dưới dạng một Khuyến nghị (Recommendation) — cách W3C gọi một tiêu chuẩn. Hai trình duyệt chính thì mất nhiều thời gian hơn. Internet Explorer 4.0 của Microsoft (tháng 10 năm 1997) và Navigator 4.04 của Netscape (tháng 11 cùng năm) đều tích hợp sẵn hỗ trợ PNG, ở mức mà Roelofs mô tả là “có phần hạn chế”.
Năm 1999, tranh chấp quanh GIF lại bùng lên. Lần này, Unisys yêu cầu các trang web mua giấy phép giá 5.000 USD nếu ảnh GIF trên trang có nguồn gốc “từ một nhà phát triển phần mềm hoặc dịch vụ không có giấy phép”. Bản tin TidBITS cho biết độc giả Slashdot đã biến chính sách này thành “âm mưu của Unisys nhằm tống tiền 5.000 USD từ mọi trang web có ảnh GIF”, còn Eric S. Raymond gọi chính sách ấy là “một mưu toan bẩn thỉu nhằm bắt chẹt mỗi trang web 5.000 USD”.
Nhưng nếu ảnh GIF của một trang web đến từ phần mềm có giấy phép, trang đó không cần giấy phép riêng, miễn là giấy phép của phần mềm bao gồm cả cách dùng ấy. Những người phản đối tuyên bố ngày 5 tháng 11 năm 1999 là Burn All GIFs Day (Ngày đốt hết GIF). Hôm đó, tại một cuộc tuần hành kéo đến một văn phòng của Unisys ở Brisbane, California, một người phát ngôn của công ty ước tính khoảng sáu người đã có mặt.
Bằng sáng chế LZW tại Mỹ hết hạn vào tháng 6 năm 2003, còn các bằng tương ứng ở những nước khác thì vào năm 2004. GIF chưa bao giờ biến mất. Định dạng này làm được ảnh động, còn chuẩn PNG thì cố ý không hỗ trợ — cho đến tháng 6 năm 2025, khi W3C phát hành ấn bản thứ ba của đặc tả PNG và bổ sung ảnh PNG động (animated PNG).
Câu chuyện PNG cho thấy gì về định dạng file
Một định dạng file có thể được thiết kế xoay quanh chính những kiểu hỏng mà file của nó gặp phải. Chữ ký và mã kiểm tra trên từng khối của PNG nhắm vào các lỗi truyền file thời giữa thập niên 1990, chẳng hạn ký tự xuống dòng bị biến đổi hay bit bị xóa mất.
Một tính năng bị gạt ra ngoài cũng có thể có cái giá của nó. Quy tắc mỗi file một ảnh của PNG khớp với những gì nhiều ứng dụng cần, và cũng chính quy tắc ấy đã giữ ảnh động nằm ngoài chuẩn PNG cho đến năm 2025.
Ngày nay, mở một file PNG bằng trình chỉnh sửa hex (hex editor), bạn vẫn sẽ thấy tám byte đầu tiên là 89 50 4E 47 0D 0A 1A 0A — những phép kiểm tra mà một nhóm tình nguyện viên đã đưa vào định dạng này trong những tuần sau thông báo thu phí bản quyền giữa kỳ nghỉ lễ.
Bài liên quan
Đọc bằng ngôn ngữ khác: English
Nguồn
- Greg Roelofs, “History of the Portable Network Graphics (PNG) Format”, libpng.org
- Greg Roelofs, PNG: The Definitive Guide, chương 7, “History of the Portable Network Graphics Format” (O’Reilly, 1999), libpng.org
- Thông báo của CompuServe về GIF và giấy phép LZW của Unisys, ngày 4 tháng 1 năm 1995 (kho lưu trữ của League for Programming Freedom)
- Tuyên bố của Unisys về LZW và GIF (kho lưu trữ của League for Programming Freedom)
- US Patent 4,558,302, “High speed data compression and decompression apparatus and method”, Terry A. Welch, Sperry Corporation
- Michael Battilana, “The GIF Controversy: A Software Developer’s Perspective”, 1995, bản sửa đổi năm 2004
- W3C, PNG (Portable Network Graphics) Specification, Rationale
- W3C, PNG (Portable Network Graphics) Specification Version 1.0, W3C Recommendation, ngày 1 tháng 10 năm 1996
- RFC 2083, “PNG (Portable Network Graphics) Specification Version 1.0”, 1997
- W3C, Portable Network Graphics (PNG) Specification (Third Edition), 2025
- NBC News, “Stephen Wilhite, creator of the GIF, dies at 74”, 2022
- The Register, “Unisys demands $5k licence fee for use of GIFs”, ngày 1 tháng 9 năm 1999
- Eric S. Raymond, thông báo về Burn All GIFs Day, LWN.net, tháng 11 năm 1999
- TidBITS, “GIF Licensing Controversy”, ngày 13 tháng 9 năm 1999
- Computergram International (Tech Monitor), bài tường thuật về cuộc biểu tình Burn All GIFs, tháng 11 năm 1999
- Ảnh đại diện: menu CompuServe trên máy TRS-80 Color Computer tại báo The Washington Post, năm 1981 (ảnh minh họa, chụp khi GIF chưa ra đời), tác giả Marion S. Trikosko, qua Wikimedia Commons, phạm vi công cộng (Public domain)
