Đôi khi một dự án có thể được tổ chức dưới dạng một gói đơn lẻ hoặc dưới dạng một số gói. Khi một người trong tình huống như vậy, làm thế nào người ta nên quyết định lựa chọn nào tốt hơn?Làm cách nào để xác định xem có nên phát hành thư viện Haskell dưới dạng một gói hay nhiều gói không?
Trả lời
Có một số hạn chế ngay lập tức phân phối một dự án trên nhiều gói:
- quá trình xây dựng là phức tạp hơn chỉ
cabal build
- phát hành và số phiên bản đã được phối hợp
- người dùng có cài đặt và phụ thuộc vào nhiều gói
- Tài liệu API nằm rải rác trên hackage
Nhưng cũng có lợi ích tiềm năng cho người dùng sẽ chỉ phụ thuộc vào một tập hợp con của các gói:
- họ không cần phải tải về, biên dịch, liên kết, cài đặt, tin tưởng và mã bản quyền trong các gói mà họ không cần
- họ không phải tải xuống, ... và phụ thuộc giấy phép của các gói mà họ không cần
- họ có thể khám phá các gói dễ dàng hơn nếu tên và siêu dữ liệu của họ cụ thể cho từng cá nhân gói, không phải toàn bộ dự án
Và có một số lợi ích ngay cả khi người dùng kết thúc tùy thuộc vào tất cả các gói:
- gói khác nhau có thể có bảo trì khác nhau và/hoặc phát hành lịch
Tôi nghĩ quyết định phải dựa trên cho dù bạn nghĩ rằng có những người dùng có thể thực sự nhận ra những lợi ích tiềm năng. Vì vậy, tôi sẽ nói rằng quyết định phụ thuộc chủ yếu vào các câu trả lời cho các câu hỏi sau đây :
- Có một phần của dự án làm thay đổi nhiều thường xuyên hơn so với các bộ phận khác?
- Có một phần của dự án ít nhiều đáng tin cậy hơn các phần khác không?
(ví dụ: gói cốt lõi và gói đóng góp) - Có một phần của dự án có nhiều phụ thuộc bổ sung nhưng không cần thiết cho tất cả người dùng?
(ví dụ: giao diện cho một dự án khác) - Có một phần của dự án có thể được sử dụng lại độc lập với mục đích của dự án tổng thể không?
(ví dụ: thư viện tổ hợp được sử dụng trong dự án chính) - Có một phần của dự án buộc người dùng sử dụng giấy phép cụ thể (trực tiếp hoặc qua phụ thuộc) nhưng không cần thiết cho tất cả người dùng?
Cuối cùng, với cabal có mặt đất giữa "một gói" và "nhiều gói", bởi vì một gói cabal có thể chứa cả một thư viện và bất kỳ số lượng thực thi nào, bộ kiểm tra và điểm chuẩn.Điều này bao gồm một lý do quan trọng mà nếu không sẽ dẫn đến các gói chia nhỏ: Người dùng không phải phụ thuộc vào các thư viện kiểm tra chỉ để sử dụng gói.