Điều này chỉ phụ thuộc vào loại ổn định nào đảm bảo bạn đã cung cấp cho người dùng của mình và mức độ đau đớn mà bạn muốn gây ra cho người dùng của mình.
Lý tưởng nhất, API của bạn sử dụng semver để bất kỳ thay đổi vi phạm nào làm cho số phiên bản chính được tăng lên. Trong thực tế, nó là mong muốn để làm điều này gần như không bao giờ. Nếu API của bạn được cài đặt thông qua một số trình quản lý gói, bạn có thể muốn tạo một tên gói mới sau khi thay đổi vi phạm để nâng cấp đơn giản không gây ra xung đột (ví dụ myapi2 v2.123.4
so với myapi3 v3.2.1
). Điều đó có thể không cần thiết nếu trình quản lý gói của bạn hỗ trợ các phụ thuộc phiên bản chặt chẽ hơn (ví dụ: một đặc tả phụ thuộc như thế ~v2.120
không bao gồm v3.*
), nhưng các tên gói khác nhau có lợi thế là các phiên bản không tương thích có thể được sử dụng cạnh nhau rất dễ dàng. Ngay cả khi sử dụng semver, nó có thể hợp lý để có một khoảng thời gian khấu hao.
Semver không phải lúc nào cũng được áp dụng. Sau đó, điều quan trọng hơn là truyền đạt một chính sách ổn định rõ ràng. Ví dụ:
- Các tính năng thử nghiệm có thể được gỡ bỏ mà không cần thông báo trước.
- Các tính năng có thể bị xóa vì lý do bảo mật bất cứ lúc nào.
- Các tính năng khác sẽ chỉ bị xóa
- Sau khi bị từ chối trong một phiên bản phát hành
- Phiên bản mà phiên bản đó ít nhất ba tháng tuổi
- Càng và sẽ được đánh dấu bằng một vết sưng trong phiên bản chính.
Các chính sách này hoạt động đặc biệt tốt khi bạn có các bản phát hành thường xuyên để có thời gian khấu hao rõ ràng, ví dụ: một năm.
Ngoài việc đánh dấu bất kỳ phần nào của API là không dùng nữa, bạn nên làm cho sự phản đối được biết đến rộng rãi. Ví dụ:
- Có một phần trong danh sách thay đổi của bạn về các hướng và sự phản đối trong tương lai.
- Phát tán ý định của bạn để phản đối trước khi bạn thực hiện phản đối và lắng nghe cộng đồng để xem liệu có sự phản đối đáng kể nào không.
- Truyền đạt những lợi ích sẽ đến từ những thay đổi này. Tùy thuộc vào cơ sở người dùng của bạn, bản tin, bài thuyết trình, bài đăng trên blog hoặc thông cáo báo chí có thể là phương tiện phù hợp. Có một spin spin chúng tôi đang tạo ra một tính năng mới tuyệt vời! (đòi hỏi phải loại bỏ tính năng cũ được sử dụng rộng rãi này). Ít khó chịu hơn một chút so với loại bỏ một tính năng không có ngữ cảnh.
Về thời gian khấu hao chính xác để lựa chọn, trước tiên hãy xem liệu bạn có phải tôn trọng bất kỳ hợp đồng hỗ trợ nào với người dùng của mình không. Những hợp đồng như vậy có thể yêu cầu bạn duy trì khả năng tương thích trong một khoảng thời gian. Nếu không, xem xét bất kỳ tác động hạ lưu. Cố gắng thay đổi ít nhanh hơn so với người dùng xuôi dòng để họ có thể trải qua chu kỳ khấu hao của chính họ. Người dùng xuôi dòng sẽ mất một chút thời gian để thích ứng với các thay đổi của bạn, vì vậy bạn sẽ không bao giờ có thời gian khấu hao ngắn hơn một tháng.