Cộng đồng phát triển phần mềm đang sôi nổi thảo luận về Pride Versioning, một cách tiếp cận hài hước trong việc đánh số phiên bản phần mềm, thay thế hệ thống semantic versioning truyền thống bằng một phương pháp trung thực hơn về mặt cảm xúc. Được tạo ra bởi Niki Tonsky, hệ thống thay thế này sử dụng định dạng PROUD.DEFAULT.SHAME thay vì cấu trúc major.minor.patch thông thường.
So sánh Định dạng Pride Versioning
Hệ thống Versioning | Định dạng | Ví dụ | Đặc điểm chính |
---|---|---|---|
Pride Versioning | PROUD.DEFAULT.SHAME | 2.7.123 | Tăng phiên bản dựa trên cảm xúc |
Semantic Versioning | MAJOR.MINOR.PATCH | 2.7.123 | Dựa trên tác động kỹ thuật |
Calendar Versioning | YYYY.MM.DD | 2020.12.07 | Phát hành dựa trên ngày tháng |
OpenSSL System | MAJOR.MINOR.LETTER | 1.1.1a | Quy tắc tương thích tùy chỉnh |
![]() |
---|
Hình ảnh này minh họa hệ thống Pride Versioning, làm nổi bật cách các số phiên bản có thể phản ánh sự tham gia cảm xúc với những thay đổi trong quá trình phát triển |
Cộng Đồng Tiết Lộ Những Thực Hành Đánh Phiên Bản Kỳ Quặc Trong Thực Tế
Khái niệm Pride Versioning đã khuyến khích các nhà phát triển chia sẻ những ví dụ về các hệ thống đánh phiên bản phi truyền thống đã được sử dụng bởi các dự án lớn. Chính sách đánh phiên bản của OpenSSL nổi bật như một trường hợp đặc biệt bất thường đối với một phần mềm hạ tầng quan trọng như vậy. Hệ thống của họ sử dụng các phiên bản chính cho những thay đổi phá vỡ tính tương thích, các phiên bản phụ cho việc bổ sung tính năng duy trì tính tương thích nhị phân, và các phiên bản chữ cái dành riêng cho việc sửa lỗi và bảo mật. Cách tiếp cận này khác biệt đáng kể so với semantic versioning tiêu chuẩn, nhưng vẫn phục vụ một trong những phần mềm nhạy cảm nhất về bảo mật trong thế giới máy tính.
Lịch sử đánh phiên bản của Ruby cung cấp một nghiên cứu trường hợp thú vị khác. Ngôn ngữ này trước đây tuân theo cái mà họ gọi là Semantic Versioning, nhưng với một điểm khác biệt độc đáo - các phiên bản phụ được phát hành vào mỗi ngày Giáng sinh tại Nhật Bản, bất kể tính tương thích API. Cách tiếp cận dựa trên lịch này ưu tiên thời gian phát hành có thể dự đoán hơn các cân nhắc kỹ thuật, mặc dù Ruby đã chuyển sang gần hơn với các thực hành semantic versioning truyền thống.
Các Phương Pháp Đánh Phiên Bản Thay Thế Nhận Được Sự Chú Ý
Cuộc thảo luận cũng đã làm nổi bật calendar versioning, đôi khi được các thành viên cộng đồng gọi là Gregorian versioning, như một phương án thực tế thay thế cho semantic versioning. Cách tiếp cận này sử dụng ngày tháng trong số phiên bản, giúp người dùng biết ngay khi nào phần mềm được cập nhật lần cuối. Hệ thống đánh phiên bản gói của Ubuntu minh họa cho phương pháp này, giúp người dùng nhanh chóng xác định liệu các dự án có đang được duy trì tích cực hay đã bị bỏ rơi.
Điều này có ý nghĩa hơn vẻ ngoài của nó. semver là một lời nói dối bởi vì mọi thay đổi đều là thay đổi phá vỡ
Quan điểm này phản ánh sự hoài nghi ngày càng tăng về hiệu quả của semantic versioning trong thực tế, tham chiếu đến Định luật Hyrum - nguyên tắc rằng với đủ nhiều người dùng, mọi hành vi có thể quan sát được đều trở thành một phần của API.
Quy tắc phiên bản Pride
- Phiên bản PROUD: Tăng khi thực hiện những thay đổi mà bạn thực sự tự hào
- Phiên bản DEFAULT: Tăng cho các bản phát hành chỉ ở mức ổn
- Phiên bản SHAME: Tăng khi sửa những lỗi đáng xấu hổ
- Quy tắc reset: Khi tăng phiên bản PROUD, đặt lại các số khác về 0 (ví dụ: 1.2.3 → 2.0.0)
- Mở rộng: Có sẵn nhãn pre-release và build metadata
Kiểm Tra Thực Tế Cho Ngữ Nghĩa Số Phiên Bản
Mặc dù Pride Versioning bắt đầu như một khái niệm hài hước, nó đã gây được tiếng vang với các nhà phát triển nhận ra thực tế cảm xúc đằng sau việc phát hành phần mềm. Cuộc thảo luận cộng đồng tiết lộ rằng nhiều nhà phát triển đã phân loại các bản phát hành của họ một cách không chính thức dựa trên mức độ tin cậy hơn là chỉ tác động kỹ thuật. Một số nhà phát triển lưu ý rằng một chữ số phiên bản marketing nên được thêm vào làm số đầu tiên, thừa nhận cách các cân nhắc kinh doanh thường ghi đè logic đánh phiên bản kỹ thuật.
Cuối cùng, cuộc trò chuyện làm nổi bật thách thức đang diễn ra trong việc truyền đạt các thay đổi phần mềm một cách hiệu quả đến người dùng trong khi cân bằng độ chính xác kỹ thuật với nhu cầu thực tế.
Tham khảo: Pride Versioning 0.3.0