Thay đổi phá vỡ không bị cấm, nhưng phải được báo trước, có lộ trình rõ, và không được gây bất ngờ cho đội đang dùng hệ thống.
Chuẩn nền là đặt phiên bản theo ngữ nghĩa, gọi tắt là SemVer (ký hiệu MAJOR.MINOR.PATCH): thay đổi phá vỡ thì tăng số lớn, thêm tính năng tương thích ngược thì tăng số giữa, sửa lỗi nhỏ thì tăng số cuối. Thay đổi phá vỡ không bị cấm, nhưng phải được báo trước với cửa sổ ngừng dùng đủ dài để các đội kịp chuyển. Đặc biệt cần chú ý phá vỡ thị giác, tức đổi màu hay khoảng cách làm lệch giao diện dù giao diện lập trình không đổi, vì đây là loại hay bị nhầm là thay đổi nhỏ.
Thay đổi phá vỡ, hay breaking change (thay đổi làm hỏng cách dùng cũ), là phần không thể tránh trong vòng đời của bất kỳ design system nào đang trưởng thành. Vấn đề không phải là có nên thay đổi hay không, mà là thay đổi như thế nào để các đội đang dùng hệ thống không bị bất ngờ và có đủ thời gian chuyển đổi.
Chuẩn được dùng rộng rãi nhất là SemVer, tức Semantic Versioning (đặt phiên bản theo ngữ nghĩa), với ký hiệu MAJOR.MINOR.PATCH. Ba con số này không phải trang trí, mỗi con số truyền đạt một cam kết với người dùng hệ thống.
Ý nghĩa thực tế của quy ước này là: khi đội khác thấy số lớn nhảy lên, họ biết ngay rằng cần đọc nhật ký thay đổi (changelog) và kiểm tra lại trước khi nâng cấp. Nếu chỉ thấy số giữa hay số cuối tăng, họ có thể nâng cấp tự tin hơn.
Phá vỡ giao diện lập trình (API breaking change) thì tương đối dễ nhận ra vì code sẽ báo lỗi. Nguy hiểm hơn là phá vỡ thị giác (visual breaking change): đổi giá trị token màu, khoảng cách, hay cỡ chữ làm cho giao diện của đội khác lệch so với thiết kế gốc, dù không có dòng code nào báo lỗi.
Một thay đổi là breaking change nếu nó làm bất cứ điều gì người dùng đang dựa vào hoạt động khác đi, kể cả khi giao diện lập trình không thay đổi.
Nathan Curtis, Visual Breaking Change in Design Systems, EightShapes
Trước mỗi lần thay đổi token hoặc style dùng chung, Anh / Chị cần hỏi: liệu thay đổi này có làm bất kỳ màn hình nào của đội khác trông khác đi không? Nếu có, đó là phá vỡ thị giác và phải được đánh số MAJOR, không phải PATCH.
Ngừng dùng, hay deprecation (thông báo một tính năng sẽ bị gỡ trong tương lai), cần có hai yếu tố: thông báo rõ ràng và thời gian đủ dài để các đội chuyển đổi. Gỡ đột ngột mà không báo trước là nguyên nhân phổ biến nhất khiến các đội mất tin tưởng vào design system.
Cửa sổ dài, ví dụ 18 tháng như Salesforce: phù hợp khi có nhiều đội rời rạc, khó tập hợp để nâng cấp cùng lúc, hoặc khi các sản phẩm có chu kỳ phát hành dài và không linh hoạt.
Cửa sổ ngắn, ví dụ 3 đến 6 tháng như Origami của Financial Times: phù hợp khi cộng đồng nhỏ, gần, và có thói quen nâng cấp thường xuyên. Cửa sổ ngắn hơn giúp hệ thống thoát khỏi nợ kỹ thuật (technical debt, gánh nặng từ các quyết định cũ) nhanh hơn.
Tốt nhất là cho cái mới sống cạnh cái cũ một thời gian trước khi chính thức lên bản lớn. Morningstar từng giữ song song bản component cũ và mới sáu tháng trước khi ra phiên bản 2.0.0, để các đội có đường lui nếu cần.
Đây là quyết định cần chốt sớm trong giai đoạn dựng quản trị.
Chọn hướng nào tùy vào cách các đội thực sự làm việc với nhau, không phải tùy vào lý thuyết nào nghe hay hơn.
Trong quy trình A3 của Sinh Vũ, đánh phiên bản và nhật ký thay đổi đi kèm với token theo chuẩn trung lập DTCG JSON (Design Token Community Group, định dạng token dùng chung giữa các công cụ). Cấu trúc này có nghĩa là một thay đổi ở tầng token có thể lan ra toàn bộ hệ thống nếu thiếu kỷ luật phiên bản, đây chính là nơi phá vỡ thị giác xảy ra nhiều nhất và ít ai ngờ nhất.
Sinh Vũ đặt cửa sổ ngừng dùng và quy trình duyệt để mỗi thay đổi phá vỡ đều được báo trước và có đường lui. Nhịp phát hành cụ thể và độ dài cửa sổ nên được chốt trong lúc dựng quản trị ban đầu, vì con số đúng phụ thuộc vào số đội dùng chung và mức độ gần gũi giữa họ, không có con số mặc định áp dụng cho mọi tổ chức.
Chủ đề: Đánh phiên bản và xử lý breaking change trong design system. Cẩm nang Sinh Vũ, sinhvu.com
Bấm chọn từng mục Anh / Chị thấy đúng, rồi bấm in hoặc lưu thành PDF để mang theo.
Nếu Anh / Chị đánh dấu phần lớn ở nhóm dấu hiệu trên, đây là lúc nên trao đổi kỹ hơn. Sinh Vũ có thể cùng Anh / Chị soi lại và đề xuất hướng đi.
Semantic Versioning 2.0.0 (semver.org). Nathan Curtis, Versioning Design Systems và Releasing Design Systems và Visual Breaking Change in Design Systems (EightShapes). Kinh nghiệm thực hành Sinh Vũ Studio.
Không có con số cố định, phụ thuộc vào số đội dùng chung và mức độ gần gũi của cộng đồng đó. Salesforce để cửa sổ 18 tháng vì có nhiều đội rời rạc khó ép nâng cùng lúc. Origami của Financial Times nén còn 3 đến 6 tháng vì cộng đồng nhỏ và gần, nâng cấp nhanh được. Anh / Chị nên chốt con số này ngay trong lúc dựng quản trị, không để đến lúc cần gỡ mới bàn.
Có, nếu thay đổi đó làm giao diện của đội khác lệch so với thiết kế gốc. Đây gọi là phá vỡ thị giác, khác với phá vỡ giao diện lập trình. Lỗi thường gặp là đổi màu hay khoảng cách rồi đánh số phiên nhỏ vì giao diện lập trình không đổi, nhưng kết quả hiển thị của đội khác vẫn bị vỡ. Phải đánh giá cả hai chiều trước khi quyết định số phiên.
Đánh chung thì dễ điều phối khi cần cập nhật đồng loạt nhiều sản phẩm cùng lúc. Đánh riêng theo component thì các đội nâng cấp độc lập được và biết rõ component nào có phá vỡ. Không có hướng nào luôn đúng, chọn dựa trên cách các đội thực sự làm việc với nhau, không chọn theo lý thuyết.