1 điểm bởi GN⁺ 2023-10-09 | 1 bình luận | Chia sẻ qua WhatsApp
  • PR Homebrew/homebrew-core #139538 là thay đổi thêm cảnh báo cho người dùng vào formula terraform do 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, terraform sẽ 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 master của Homebrew thông qua merge queue vào ngày 5/4/2024 dưới dạng commit 4782218, và PR ngừng hỗ trợ terraform liê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, terraform sẽ 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: deprecate tham chiếu đến PR này
    • Thông điệp commit đó cho biết cdktf sử dụng terraform, 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
  • 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 caveat 1c7b99b
  • p-linnane, MikeMcQuaid và chenrui333 phê duyệt thay đổi cuối cùng
  • Ngày 5/4/2024, PR được merge vào master của Homebrew thông qua merge queue bằng commit 4782218
  • 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

 
GN⁺ 2023-10-09
Ý 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

    • Nếu ai đó bắt đầu một bản fork công khai của Vault, tôi muốn đóng góp khi có thời gian
      Bổ sung: https://github.com/hashicorp/vault/graphs/contributors?from=...
    • Tôi khá thích Nomad. Nó còn nhẹ hơn k3s, và rất phù hợp với các dự án ngân sách thấp của tôi
      Thấy mọi chuyện diễn ra như vậy thì hơi tiếc
    • Mục tiêu chạy mọi thứ trên đời của Nomad là quá tham vọng. Cuối cùng nó không được sử dụng rộng rãi, và để thiết lập thì còn cần cả Consul
      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
    • Thành thật mà nói, nhìn chung các sản phẩm của HashiCorp thực sự rất tốt. Chỉ là tôi nghĩ họ mắc phải hội chứng di chuyển quá nhanh
      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
    • Nomad thật sự đã trở thành mã nguồn đóng rồi sao?
  • HashiCorp duy trì tap riêng của họ
    https://github.com/hashicorp/homebrew-tap
    https://www.hashicorp.com/blog/announcing-hashicorp-homebrew...

    • Để tham khảo, phiên bản do Homebrew sở hữu build lại từ mã nguồn các phần này: https://github.com/Homebrew/homebrew-core/pull/139538/files#...
      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

    • Homebrew có chính sách chỉ bao gồm phần mềm tự do [1]
      “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
    • Homebrew không chỉ đơn thuần là một trình quản lý gói
      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 core
    • Điều này chỉ đúng một phần
      Theo 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à /Applications
  • Tô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

    • Tôi dùng rtx, tức rust asdf https://github.com/jdx/rtx. Có thể cài các ngôn ngữ bằng một công cụ, và cũng xử lý được biến môi trường theo dự án như direnv
    • Đúng vậy. Tốt nhất là quản lý trong MacPorts, nơi có thể cài các gói theo phiên bản cụ thể và chuyển đổi dễ dàng
    • Nếu muốn cài nhiều phiên bản Terraform thì tfenv cũng dùng được qua Homebrew
  • 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

    • Đúng. Nếu HashiCorp muốn tiếp tục phân phối qua Homebrew thì cask cũng hoàn toàn đủ. Nhưng có lẽ họ sẽ không làm vậy. Trong vài năm qua họ đã khuyến nghị cài trực tiếp binary từ máy chủ, và tài liệu cài đặt Terraform cũng đã theo cách đó một thời gian
      Ả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

    • Tôi không định bênh mọi lựa chọn kỳ lạ nhất, nhưng dùng Python hệ thống thường gây nhiều vấn đề hơn. macOS giờ không còn Python hệ thống nữa
      Có thể dùng như thế này:
      pythonX.Y -m pip install foo
      Nế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

    • Một formula không được cập nhật vì upstream không phát hành phiên bản mới, và một formula không thể nhận cập nhật mới trên Homebrew vì giấy phép không còn là nguồn mở nữa, là hai chuyện khác nhau
      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
    • Chuyện này khác với việc một gói đã chết. Người dùng có thể dự đoán rằng Homebrew không thể kỳ diệu tạo ra bản cập nhật không tồn tại ở upstream
      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ọ
    • Homebrew Core chỉ chứa các ứng dụng có giấy phép nguồn mở, cụ thể là giấy phép tương thích với Debian Free Software Guidelines. GPL, Apache, BSD, MIT, v.v. thuộc nhóm này
      https://wiki.debian.org/DFSGLicenses#DFSG-compatible_License...