Homebrew thêm cảnh báo về HashiCorp và dự kiến ngừng hỗ trợ
(github.com/Homebrew)- PR Homebrew/homebrew-core #139538 là thay đổi thêm cảnh báo cho người dùng vào formula
terraformdo thay đổi giấy phép của HashiCorp, đồng thời thông báo rằng formula này có thể bị vô hiệu hóa vào một thời điểm nào đó - Lý do thay đổi là sau khi giấy phép thay đổi,
terraformsẽ không còn được cập nhật phiên bản trong homebrew-core nữa; trọng tâm là để người dùng nhận biết điều này khi cài đặt - Trong quá trình rà soát, một ngoại lệ về phiên bản được thảo luận: các bản phát hành trong tương lai trước 1.6.0 có thể được chấp nhận, dù cũng có khả năng sẽ không có bản phát hành nào như vậy
- Sau khi dọn dẹp phụ thuộc, PR trở lại trạng thái sẵn sàng review vào ngày 4/4/2024 và được cập nhật bằng commit
terraform: deprecate and add caveat, phản ánh góp ý bỏ cách diễn đạt ở thì tương lai - Thay đổi cuối cùng được merge vào
mastercủa Homebrew thông qua merge queue vào ngày 5/4/2024 dưới dạng commit4782218, và PR ngừng hỗ trợterraformliên quan #168090 cũng đã được merge
Ngừng hỗ trợ formula terraform và thêm cảnh báo
- Mục tiêu của PR #139538 là thông báo cho người dùng rằng do thay đổi giấy phép của HashiCorp,
terraformsẽ không còn được cập nhật phiên bản trong homebrew-core nữa - Mô tả ban đầu theo hướng thông báo cho người dùng rằng “formula này có thể bị vô hiệu hóa vào một thời điểm nào đó”
- Đối tượng thay đổi là
Formula/terraform.rb, và sau đó đường dẫn tệp được hiển thị làFormula/t/terraform.rb - PR được gắn các nhãn như
formula deprecated,busl-license,go,maintainer feedback
Thảo luận liên quan đến phiên bản và giấy phép
- Trong quá trình review, có ý kiến rằng trong các bản phát hành tương lai của
terraform, các phiên bản trước 1.6.0 có thể được chấp nhận- Tuy nhiên, cũng có khả năng thực tế sẽ không có bản phát hành nào như vậy
- Mô tả PR lấy việc không còn cập nhật phiên bản trong homebrew-core sau thay đổi giấy phép làm cơ sở cho thay đổi này
- Thông điệp commit sau đó mang ý rằng “do thay đổi giấy phép khiến homebrew-core không còn cập nhật phiên bản nữa, nên formula này sẽ bị vô hiệu hóa vào một thời điểm nào đó”
Quy trình review và phản ánh thay đổi
- PR được mở vào ngày 14/8/2023, và nhiều maintainer đã review thay đổi đối với
Formula/terraform.rb - Ngày 6/9/2023 có một ping yêu cầu phản ánh góp ý review, và tác giả thông báo đã hoàn tất
- Ngày 7/9/2023, MikeMcQuaid phê duyệt thay đổi, nhưng PR bị loại khỏi merge queue do kiểm tra trạng thái thất bại
- Ngày 20/9/2023, chenrui333 cũng phê duyệt thay đổi
- Ngày 23/2/2024, PR được đánh dấu là draft
Dọn dẹp phụ thuộc và các PR liên quan
- Ngày 13/3/2024, commit
cdktf: deprecatetham chiếu đến PR này- Thông điệp commit đó cho biết
cdktfsử dụngterraform, vốn sắp bị ngừng hỗ trợ - Commit mô tả đây là một trong những formula cuối cùng đang chặn việc ngừng hỗ trợ
terraform - Commit cũng ghi rằng
cdktfđược tải xuống hơn 700 lần mỗi tháng và dù được host trong GitHub org của HashiCorp, nó không bị ảnh hưởng bởi thay đổi giấy phép BUSL
- Thông điệp commit đó cho biết
- PR liên quan cdktf: deprecate #166001 đã được merge
- Ngày 3/4/2024, atlantis: vendor terraform #167948 tham chiếu đến PR này và đã được merge
Hoàn tất và merge
- Ngày 4/4/2024, tác giả thông báo “tất cả phụ thuộc đã được xử lý nên giờ đã ổn” và chuyển PR sang trạng thái sẵn sàng review
- p-linnane góp ý rằng vì tình huống này đã xảy ra rồi, có thể bỏ cách diễn đạt ở thì tương lai
- Tác giả đã phản ánh góp ý này và cập nhật branch bằng commit
terraform: deprecate and add caveat1c7b99b - p-linnane, MikeMcQuaid và chenrui333 phê duyệt thay đổi cuối cùng
- Ngày 5/4/2024, PR được merge vào
mastercủa Homebrew thông qua merge queue bằng commit4782218 - Cùng ngày, terraform: deprecate and add caveat #168090 cũng được tham chiếu là PR đã được merge
1 bình luận
Ý kiến trên Hacker News
Điều quan trọng là họ không loại bỏ ngay các gói phụ thuộc, mà đang tạm giữ lại để xem liệu có thể chuyển sang lựa chọn thay thế hay không
Ví dụ, các chương trình phụ thuộc vào Terraform rất có khả năng có thể dùng OpenTofu làm phương án thay thế
Đáng tiếc là có vẻ sẽ không có lựa chọn mã nguồn mở thay thế cho Vault, Consul, Nomad. Đặc biệt Nomad từng là một sản phẩm tốt cho đến khi HashiCorp ngừng đầu tư, nhưng giờ khi đã thành mã nguồn đóng thì khả năng được chấp nhận gần như không còn, đến mức hơi buồn cười
Bổ sung: https://github.com/hashicorp/vault/graphs/contributors?from=...
Thấy mọi chuyện diễn ra như vậy thì hơi tiếc
Docker Swarm là một giải pháp đơn giản hơn và tốt hơn Nomad, lại được tích hợp sẵn trong chính Docker Engine
Họ thúc đẩy việc IPO, và phần lớn các khiếm khuyết gần đây đều có thể truy ngược về những nỗ lực nhằm đẩy giá cổ phiếu lên
HashiCorp thời kỳ đầu thật tuyệt vời. Họ là người bảo vệ mã nguồn mở, trông như một Red Hat hay Canonical đang lên. Các sản phẩm mang tính đột phá và bổ sung giá trị khổng lồ cho hệ sinh thái mã nguồn mở. Nhưng khi Terraform nổi lên mạnh mẽ, nó cũng kéo sự chú ý sang các sản phẩm khác, và công ty trở nên quá nổi tiếng
Sau khi niêm yết, có thể thấy rõ họ muốn có tiền và khách hàng doanh nghiệp bằng mọi giá
Bản thân Terraform cũng có cảm giác như đã ở chế độ bảo trì kể từ sau phiên bản 1. Terraform provider thường xuyên bị vỡ, và tôi cho rằng trong môi trường vận hành nên ghim provider đến tận phiên bản patch. Trong vài năm gần đây, ngay cả các bản cập nhật patch nhỏ cũng đã gây sự cố nhiều lần. Họ cũng nổi tiếng là bắt đầu từ chối các đóng góp mã nguồn mở không có giá trị kinh doanh đối với HashiCorp. Sau khi Terraform đạt v1, gần như mọi sự chú ý dường như đều đổ vào Terraform Cloud và Terraform Enterprise. Ở HashiConf, mọi bài trình bày đều có cảm giác như tuyên truyền để đẩy mạnh các sản phẩm này, và giờ có vẻ họ chỉ quan tâm đến chúng
Nomad từng là sản phẩm mà HashiCorp rất kỳ vọng trong một thời gian, nhưng có vẻ đã bị bỏ lại bên đường trong quá trình họ theo đuổi việc chiếm lĩnh thị trường doanh nghiệp. Có lẽ là sau khi họ nhận ra hầu hết doanh nghiệp đã đặt cược tất cả vào Kubernetes, còn Nomad hữu ích hơn cho các startup di chuyển nhanh
Vault từng là một công cụ tuyệt vời, đặc biệt trong mảng mã nguồn mở. Nhưng vài năm qua họ đã tách biệt rất mạnh phiên bản mã nguồn mở và phiên bản có giấy phép của Vault, và phiên bản mã nguồn mở bắt đầu có cảm giác như một gánh nặng đối với HashiCorp. Năm ngoái khi công ty tôi nghiêm túc cân nhắc chuyển sang Vault và nói chuyện với HashiCorp, họ đối xử với giải pháp mã nguồn mở tự host như thể đó là bản dùng thử của “Vault thật”, và thực tế cũng có cảm giác như vậy. Với gần như mọi vấn đề gặp phải trong quá trình thiết lập, câu trả lời đều kiểu “bản Enterprise thì ổn”
Nhìn chung họ đã lùi lại, chỉ còn giữ mức nỗ lực tối thiểu cần thiết để hỗ trợ phiên bản mã nguồn mở của sản phẩm, và trong một thời gian đã hoàn toàn là một công ty hướng doanh nghiệp. Họ phải kiếm tiền nên không thể chỉ trách móc, nhưng tôi không thể không nghĩ đến Red Hat và Canonical như những ví dụ về điều HashiCorp lẽ ra đã có thể trở thành
Bây giờ cảm giác như một bậc cha mẹ nhìn con mình không phát huy hết tiềm năng. Phần lớn có vẻ là do lòng tham hoặc tham vọng quá mức. Khi nghĩ về HashiCorp, tôi nhớ đến câu “không giận, chỉ thất vọng thôi”. Hy vọng OpenTofu sẽ lấp đầy khoảng trống của Terraform. Vault thì tôi đã bỏ qua rồi và đang dùng công cụ quản lý bí mật của nhà cung cấp cloud lớn. Tôi thích nó ít hơn nhiều, nhưng nó rẻ hơn và ít phức tạp hơn. Thay cho Nomad tôi dùng Kubernetes, mà dù sao nó cũng đã thành chuẩn nên ổn. Tôi sẽ vẫn ổn thôi, nhưng tôi thất vọng về HashiCorp
HashiCorp duy trì tap riêng của họ
https://github.com/hashicorp/homebrew-tap
https://www.hashicorp.com/blog/announcing-hashicorp-homebrew...
Trong hệ sinh thái đóng gói của Linux thì thường cũng làm theo cách này, nhưng thường cũng xử lý rõ ràng việc đóng gói các phụ thuộc. Có lẽ vì vậy mà ngay cả trước khi đổi giấy phép, Vault và các công cụ tương tự cũng không được đưa vào bộ gói của các bản phân phối
Biến thể phía HashiCorp thì sao chép bản build phát hành: https://github.com/hashicorp/homebrew-tap/blob/master/Formul...
Tại sao lại vậy? Homebrew chẳng phải chỉ là trình quản lý gói sao? Không rõ vì sao giấy phép không tự do lại phải hạn chế việc đưa các công cụ HashiCorp vào
Hay là có chính sách chỉ bao gồm phần mềm tự do?
Sửa: thực ra có hướng dẫn khá nghiêm ngặt: https://docs.brew.sh/License-Guidelines
“Chỉ những formula dùng giấy phép theo Debian Free Software Guidelines, hoặc được phát hành vào phạm vi công cộng theo hướng dẫn của DFSG về phần mềm phạm vi công cộng, mới được nhận vào homebrew/core”
[1]: https://docs.brew.sh/License-Guidelines
Nó vừa là phần mềm tên
brew, tức trình quản lý gói, vừa là kho gói homebrew-core được kết nối mặc định. Kho gói này được quản lý cẩn thận và chỉ nhận giấy phép nguồn mởBạn có thể thoải mái tap bất kỳ kho nào mình muốn bằng
brew, nhưng PR này chỉ nói đến kho coreTheo mặc định, Homebrew hỗ trợ, tức theo thuật ngữ Homebrew là tap, hai kho homebrew/core và homebrew/casks
Core chỉ nhận phần mềm tự do, do các nhà phát triển Homebrew tự build và được cài vào những nơi như
/opt/homebrew. Casks nhận gần như mọi thứ, kể cả phần mềm thương mại và phần mềm không có mã nguồn. Những phần mềm như vậy thường được tải trực tiếp từ phía nhà phát triển và cài vào vị trí mong muốn, thường là/ApplicationsTôi thích dịch vụ Homebrew cung cấp, nhưng Terraform là một trong những trường hợp ngoại lệ nên quản lý bên ngoài brew thì hơn. Hiện giờ tôi nghĩ tf-switch là lựa chọn phổ biến nhất
Với Terraform, nếu lỡ cập nhật file trạng thái thì có thể nguy hiểm, nên thường phải ghim một phiên bản cụ thể. Dĩ nhiên đúng là việc cập nhật Terraform đã đỡ đau đầu hơn nhiều so với thời trước 1.0
Thay vào đó đưa vào cask là được. Về mặt thực tế thì không ảnh hưởng lớn lắm
Ảnh hưởng lớn hơn là đến các công cụ khác phụ thuộc vào Terraform như thấy ở đây: https://github.com/Homebrew/homebrew-core/pull/139538#pullre...
Các công cụ như atlantis và infracost cũng phụ thuộc vào Terraform nên đang bị gỡ bỏ. Vì vậy việc phân phối những công cụ nhỏ đó sẽ khó hơn một chút. May là trong thread đó có nói sẽ tạm giữ để khi OpenTofu ổn định thì có thể đổi dependency sang lựa chọn thay thế hoặc loại bỏ hẳn. Nhưng tôi cho rằng tác động thực sự nằm ở các công cụ xung quanh này
Homebrew thật sự hữu ích nhưng cũng có những lựa chọn thiết kế kỳ lạ. Tại sao lại cài một Python riêng mới? Và tại sao Python đó phải là bản mới nhất?
Nhưng mỗi formula lại phải chỉ định phiên bản Python nên thực tế cũng không phải lúc nào cũng là bản mới nhất, rồi sinh ra các formula chỉ định đủ loại phiên bản. Không rõ vì sao không dùng Python hệ thống như các trình quản lý gói khác. Đã có quá nhiều Python được cài rồi, không cần thêm một cái nữa. Đặc biệt càng rối hơn khi phải cài gói pip để làm thứ gì đó hoạt động cho đúng
Có thể dùng như thế này:
pythonX.Y -m pip install fooNếu muốn tránh mơ hồ thì có thể dùng alias. Với dự án công việc thì nên dùng pyenv và môi trường ảo
Trông giống một quyết định mang tính chính trị. Homebrew có rất nhiều gói sẽ không còn nhận cập nhật nữa nhưng không bị deprecated
Phần không phải Cask của Homebrew yêu cầu giấy phép nguồn mở, và trường hợp này là vế sau
Ngược lại, nếu bản cập nhật có tồn tại nhưng Homebrew không thể phân phối hợp pháp, khiến người dùng có thể cài phải phiên bản cũ và dễ tổn thương, thì đáng để cảnh báo họ
https://wiki.debian.org/DFSGLicenses#DFSG-compatible_License...