Homebrew เพิ่มคำเตือนเกี่ยวกับ HashiCorp และเตรียมเลิกใช้งาน
(github.com/Homebrew)- Homebrew/homebrew-core PR #139538 เป็นการเปลี่ยนแปลงที่เพิ่มคำเตือนให้ผู้ใช้ใน formula
terraformเนื่องจาก การเปลี่ยนไลเซนส์ ของ HashiCorp และแจ้งว่าอาจปิดใช้งานในอนาคต - เหตุผลของการเปลี่ยนแปลงคือ หลังจากเปลี่ยนไลเซนส์แล้ว จะ ไม่มีการอัปเดตเวอร์ชันของ
terraformใน homebrew-core อีกต่อไป โดยเน้นให้ผู้ใช้รับทราบเรื่องนี้ตอนติดตั้ง - ระหว่างการรีวิวมีการพูดถึง ข้อยกเว้นด้านเวอร์ชัน ว่ารีลีสในอนาคตที่เก่ากว่า 1.6.0 อาจยังรับได้ แต่ก็มีโอกาสเช่นกันว่าจะไม่มีรีลีสลักษณะนั้น
- หลังจากจัดการ dependency แล้ว PR กลับมาอยู่ในสถานะพร้อมรีวิวอีกครั้งในวันที่ 4 เมษายน 2024 และอัปเดตด้วยคอมมิต
terraform: deprecate and add caveatโดยสะท้อนฟีดแบ็กที่ให้ลบข้อความแบบอนาคตกาลออก - การเปลี่ยนแปลงสุดท้ายถูกรวมเข้า Homebrew
masterผ่าน merge queue เมื่อวันที่ 5 เมษายน 2024 เป็น คอมมิต4782218และ PR เลิกใช้งานterraformที่เกี่ยวข้อง #168090 ก็ถูกรวมด้วย
การเลิกใช้งาน formula terraform และการเพิ่มคำเตือน
- จุดประสงค์ของ PR #139538 คือแจ้งผู้ใช้ว่า เนื่องจาก การเปลี่ยนไลเซนส์ ของ HashiCorp ทำให้จะไม่มีการอัปเดตเวอร์ชัน
terraformใน homebrew-core อีกต่อไป - คำอธิบายแรกเริ่มมีทิศทางเพื่อแจ้งผู้ใช้ว่า “formula นี้อาจถูกปิดใช้งานในอนาคต”
- เป้าหมายของการเปลี่ยนแปลงคือ
Formula/terraform.rbและภายหลังเส้นทางไฟล์ถูกแสดงเป็นFormula/t/terraform.rb - PR นี้ติดป้ายกำกับเช่น
formula deprecated,busl-license,go,maintainer feedback
การพูดคุยเรื่องเวอร์ชันและไลเซนส์
- ระหว่างการรีวิวมีความเห็นว่ารีลีสในอนาคตของ
terraformที่เป็น เวอร์ชันก่อน 1.6.0 อาจยังรับได้- อย่างไรก็ตาม ก็มีการระบุด้วยว่าอาจไม่มีรีลีสแบบนั้นเกิดขึ้นจริง
- คำอธิบายของ PR ใช้ประเด็นที่ว่าหลังการเปลี่ยนไลเซนส์จะไม่มีการอัปเดตเวอร์ชันใน homebrew-core อีก เป็นเหตุผลของการเปลี่ยนแปลง
- ต่อมาข้อความคอมมิตมีใจความว่า “เนื่องจากการเปลี่ยนไลเซนส์ จะไม่มีการอัปเดตเวอร์ชันใน homebrew-core อีก จึงจะเลิกใช้งาน formula นี้และเพิ่มคำเตือน”
ลำดับการรีวิวและการสะท้อนการเปลี่ยนแปลง
- PR ถูกเปิดเมื่อวันที่ 14 สิงหาคม 2023 และมี maintainer หลายคนรีวิวการเปลี่ยนแปลงใน
Formula/terraform.rb - วันที่ 6 กันยายน 2023 มีการ ping เพื่อขอให้สะท้อนฟีดแบ็กจากการรีวิว และผู้เขียนแจ้งว่าได้ดำเนินการแล้ว
- วันที่ 7 กันยายน 2023 MikeMcQuaid อนุมัติการเปลี่ยนแปลง แต่ถูกนำออกจาก merge queue เพราะการตรวจสอบสถานะล้มเหลว
- วันที่ 20 กันยายน 2023 chenrui333 ก็อนุมัติการเปลี่ยนแปลงเช่นกัน
- วันที่ 23 กุมภาพันธ์ 2024 PR ถูกทำเครื่องหมายเป็น draft
การจัดการ dependency และ PR ที่เกี่ยวข้อง
- วันที่ 13 มีนาคม 2024 มีคอมมิต
cdktf: deprecateที่อ้างถึง PR นี้- ข้อความคอมมิตนั้นระบุว่า
cdktfใช้terraformที่กำลังจะถูกเลิกใช้งาน - อธิบายว่าเป็นหนึ่งใน formula สุดท้ายที่ขัดขวางการเลิกใช้งาน
terraform - ระบุว่า
cdktfมียอดดาวน์โหลดมากกว่า 700 ครั้งต่อเดือน และแม้จะโฮสต์อยู่ใน HashiCorp GitHub org ก็ไม่ได้รับผลจากการเปลี่ยนไลเซนส์ BUSL
- ข้อความคอมมิตนั้นระบุว่า
- PR ที่เกี่ยวข้องคือ cdktf: deprecate #166001 ซึ่งถูกรวมแล้ว
- วันที่ 3 เมษายน 2024 atlantis: vendor terraform #167948 ก็อ้างถึง PR นี้และถูกรวมแล้ว
สรุปสุดท้ายและการรวมโค้ด
- วันที่ 4 เมษายน 2024 ผู้เขียนแจ้งว่า “จัดการ dependency ทั้งหมดแล้ว ตอนนี้โอเคแล้ว” และเปลี่ยน PR กลับเป็นสถานะพร้อมรีวิว
- p-linnane ให้ฟีดแบ็กว่าสถานการณ์ดังกล่าวเกิดขึ้นแล้ว จึงสามารถลบ ถ้อยคำแบบอนาคตกาล ออกได้
- ผู้เขียนสะท้อนฟีดแบ็กนั้น และอัปเดตสาขาด้วยคอมมิต
terraform: deprecate and add caveat1c7b99b - p-linnane, MikeMcQuaid และ chenrui333 อนุมัติการเปลี่ยนแปลงสุดท้าย
- วันที่ 5 เมษายน 2024 PR ถูกรวมเข้า Homebrew
masterผ่าน merge queue ด้วยคอมมิต4782218 - ในวันเดียวกัน terraform: deprecate and add caveat #168090 ก็ถูกอ้างถึงในฐานะ PR ที่ถูกรวมแล้ว
1 ความคิดเห็น
ความคิดเห็นใน Hacker News
จุดสำคัญคือยังพักไว้ก่อน ไม่ได้เลิกใช้แพ็กเกจที่พึ่งพาทันที เพื่อดูว่า สามารถเปลี่ยนไปใช้ตัวทดแทนได้หรือไม่
เช่น โปรแกรมที่พึ่งพา Terraform มีความเป็นไปได้สูงที่จะใช้ OpenTofu เป็นตัวทดแทนได้
น่าเสียดายที่ Vault, Consul, Nomad ดูไม่น่าจะมีทางเลือกโอเพนซอร์สเกิดขึ้น โดยเฉพาะ Nomad เคยเป็นผลิตภัณฑ์ที่ดีจนกว่า HashiCorp จะหยุดลงทุน แต่ตอนนี้เมื่อกลายเป็นซอร์สปิดแล้ว โอกาสที่จะมีคนนำไปใช้ก็ดูแทบไม่มี จนออกจะน่าขำด้วยซ้ำ
เพิ่มเติม: https://github.com/hashicorp/vault/graphs/contributors?from=...
เห็นทิศทางแบบนี้แล้วก็เสียดายนิดหน่อย
Docker Swarm เป็นทางออกที่เรียบง่ายกว่าและดีกว่า Nomad อีกทั้งยังฝังอยู่ใน Docker Engine เอง
บริษัทเร่งเข้าตลาดหุ้น และข้อบกพร่องส่วนใหญ่ในช่วงหลัง ๆ สามารถย้อนกลับไปถึงความพยายามผลักดันราคาหุ้นให้สูงขึ้นได้
HashiCorp ยุคแรกยอดเยี่ยมมาก เป็นผู้พิทักษ์โอเพนซอร์ส และดูเหมือน Red Hat หรือ Canonical หน้าใหม่ที่กำลังเติบโต ผลิตภัณฑ์ล้ำสมัยและเพิ่มคุณค่ามหาศาลให้กับระบบนิเวศโอเพนซอร์ส แต่เมื่อ Terraform ดังมาก ก็ทำให้ผลิตภัณฑ์อื่นได้รับความสนใจตามไปด้วย และบริษัทก็มีชื่อเสียงเกินไป
หลังเข้าตลาดหุ้น ภาพที่ชัดเจนคือพยายามเอาเงินและลูกค้าองค์กรให้ได้ไม่ว่าจะต้องแลกด้วยอะไรก็ตาม
Terraform เองหลังเวอร์ชัน 1 ก็รู้สึกเหมือนอยู่ในโหมดบำรุงรักษา Terraform provider พังบ่อย และผมคิดว่าในสภาพแวดล้อม production ควร pin provider ลงไปถึงระดับ patch version ช่วงไม่กี่ปีมานี้ แม้แต่การอัปเดต patch เล็ก ๆ ก็มีปัญหาหลายครั้ง พวกเขายังขึ้นชื่อว่าเริ่มปฏิเสธ contribution โอเพนซอร์สที่ไม่มีคุณค่าทางธุรกิจต่อ HashiCorp ด้วย หลัง Terraform ไปถึง v1 ดูเหมือนความสนใจแทบทั้งหมดจะถูกเทไปที่ Terraform Cloud และ Terraform Enterprise ใน HashiConf ทุก talk ให้ความรู้สึกเหมือนโฆษณาชวนเชื่อเพื่อดันผลิตภัณฑ์เหล่านี้ และตอนนี้ก็ดูเหมือนจะสนใจแค่นั้น
Nomad เคยเป็นผลิตภัณฑ์ที่ HashiCorp คาดหวังมากอยู่ช่วงหนึ่ง แต่ดูเหมือนถูกทิ้งไว้ข้างทางระหว่างการไล่ยึดตลาดองค์กร คงเป็นหลังจากพบว่าองค์กรส่วนใหญ่ทุ่มไปที่ Kubernetes และ Nomad มีประโยชน์กับสตาร์ทอัพที่เคลื่อนไหวเร็วมากกว่า
Vault เป็นเครื่องมือที่ยอดเยี่ยม โดยเฉพาะในฝั่งโอเพนซอร์ส แต่ช่วงไม่กี่ปีที่ผ่านมา พวกเขาแยก Vault เวอร์ชันโอเพนซอร์สกับเวอร์ชันมีไลเซนส์ออกจากกันอย่างมาก และเวอร์ชันโอเพนซอร์สก็เริ่มให้ความรู้สึกเหมือนเป็นภาระสำหรับ HashiCorp ปีที่แล้วตอนบริษัทผมพิจารณาย้ายมาใช้ Vault อย่างจริงจังและคุยกับ HashiCorp พวกเขาปฏิบัติต่อโซลูชันโอเพนซอร์สแบบ self-hosted เหมือนเป็นรุ่นทดลองของ “Vault ตัวจริง” และมันก็รู้สึกแบบนั้นจริง ๆ แทบทุกปัญหาที่เจอระหว่างตั้งค่า พวกเขาตอบทำนองว่า “ในเวอร์ชัน Enterprise จะไม่มีปัญหา”
โดยรวมแล้วพวกเขาถอยกลับไปเหลือแค่ความพยายามขั้นต่ำที่จำเป็นต่อการรองรับเวอร์ชันโอเพนซอร์สของผลิตภัณฑ์ และเป็นบริษัทที่มุ่งองค์กรเต็มตัวมาสักพักแล้ว ต้องหาเงินก็เลยจะโทษอย่างเดียวไม่ได้ แต่ก็อดนึกถึง Red Hat กับ Canonical ในฐานะตัวอย่างของสิ่งที่ HashiCorp อาจเป็นได้ไม่ได้
ตอนนี้รู้สึกเหมือนพ่อแม่ที่มองดูลูกไม่สามารถใช้ศักยภาพของตัวเองได้เต็มที่ ส่วนใหญ่ดูเหมือนเป็นเพราะความโลภหรือความทะเยอทะยานที่มากเกินไป เมื่อคิดถึง HashiCorp คำว่า “ไม่ได้โกรธ แค่ผิดหวัง” ก็ผุดขึ้นมา หวังว่า OpenTofu จะมาเติมช่องว่างของ Terraform ได้ ส่วน Vault นั้นเลยจุดนั้นไปแล้ว และเราใช้เครื่องมือจัดการ secret ของผู้ให้บริการคลาวด์รายใหญ่แทน ถูกใจน้อยกว่ามาก แต่ถูกกว่าและซับซ้อนน้อยกว่า ใช้ Kubernetes แทน Nomad ซึ่งก็โอเคเพราะมันกลายเป็นมาตรฐานไปแล้ว ผมคงอยู่ได้ดี แต่ผิดหวังกับ HashiCorp
HashiCorp ดูแล tap ของตัวเอง
https://github.com/hashicorp/homebrew-tap
https://www.hashicorp.com/blog/announcing-hashicorp-homebrew...
ใน ecosystem การทำแพ็กเกจของ Linux ก็มักใช้วิธีนี้เช่นกัน แต่โดยทั่วไปจะจัดการเรื่องการแพ็กเกจ dependency อย่างชัดเจนไปด้วย อาจเป็นเพราะเหตุนี้ Vault และตัวอื่น ๆ จึงอาจไม่ได้เข้าไปอยู่ในชุดแพ็กเกจของ distro แม้ก่อนการเปลี่ยนไลเซนส์
ส่วนแบบของ HashiCorp จะคัดลอก release build: https://github.com/hashicorp/homebrew-tap/blob/master/Formul...
ทำไมถึงเป็นแบบนั้น? Homebrew ก็เป็นแค่ ตัวจัดการแพ็กเกจ ไม่ใช่หรือ? ไม่เข้าใจว่าทำไมไลเซนส์ที่ไม่เสรีจึงต้องจำกัดการรวมเครื่องมือของ HashiCorp
หรือว่ามีนโยบายว่ารวมได้เฉพาะซอฟต์แวร์เสรีเท่านั้น
แก้ไข: จริง ๆ แล้วมีแนวทางที่ค่อนข้างเข้มงวด: https://docs.brew.sh/License-Guidelines
“จะรับเข้า homebrew/core เฉพาะ formula ที่ใช้ไลเซนส์ตาม Debian Free Software Guidelines หรือเผยแพร่เป็นสาธารณสมบัติตามแนวทางซอฟต์แวร์สาธารณสมบัติของ DFSG”
[1]: https://docs.brew.sh/License-Guidelines
มันเป็นทั้งซอฟต์แวร์ที่ชื่อ
brewหรือก็คือตัวจัดการแพ็กเกจ และยังเป็น คลังแพ็กเกจ homebrew-core ที่เชื่อมต่อให้โดยค่าเริ่มต้นด้วย คลังแพ็กเกจนี้ถูกดูแลอย่างรอบคอบและรับเฉพาะไลเซนส์โอเพนซอร์สเท่านั้นคุณมีอิสระที่จะ tap คลังที่ต้องการด้วย
brewแต่ PR นี้พูดถึงเฉพาะคลัง core เท่านั้นโดยค่าเริ่มต้น Homebrew รองรับสองคลังคือ homebrew/core และ homebrew/casks หรือในศัพท์ของ Homebrew คือ tap ไว้
Core รับเฉพาะซอฟต์แวร์เสรี โดยนักพัฒนา Homebrew จะ build เอง และติดตั้งไว้ในที่อย่าง
/opt/homebrewส่วน Casks รับแทบทุกอย่าง รวมถึงซอฟต์แวร์เชิงพาณิชย์และซอฟต์แวร์ที่ไม่มีซอร์สโค้ด ซอฟต์แวร์แบบนี้โดยมากจะดาวน์โหลดตรงจากฝั่งผู้พัฒนาและติดตั้งไปยังตำแหน่งที่ต้องการ ซึ่งมักเป็น/Applicationsผมชอบบริการที่ Homebrew มีให้ แต่ Terraform เป็นหนึ่งในกรณียกเว้นที่ ควรจัดการนอก brew มากกว่า ตอนนี้ผมมองว่า tf-switch เป็นตัวเลือกที่ได้รับความนิยมที่สุด
Terraform มักต้องตรึงเวอร์ชันเฉพาะ เพราะถ้าเผลออัปเดต state file อาจเป็นอันตรายได้ แน่นอนว่าการอัปเดต Terraform ปวดหัวน้อยลงกว่าเมื่อเทียบกับยุคก่อน 1.0 มากแล้ว
ย้ายไปอยู่ใน cask แทนก็ได้ ในทางปฏิบัติไม่ได้กระทบมากนัก
ผลกระทบที่ใหญ่กว่าคือกับเครื่องมืออื่น ๆ ที่พึ่งพา Terraform อย่างที่เห็นตรงนี้: https://github.com/Homebrew/homebrew-core/pull/139538#pullre...
เครื่องมืออย่าง atlantis และ infracost ก็พึ่งพา Terraform จึงกำลังถูกนำออกด้วย ดังนั้นการแจกจ่ายเครื่องมือเล็ก ๆ เหล่านั้นจะยากขึ้นอีกเล็กน้อย โชคดีที่ในเธรดนั้นบอกว่าจะระงับไว้ก่อน เพื่อให้เมื่อ OpenTofu เสถียรแล้วสามารถเปลี่ยน dependency ไปเป็นตัวแทนหรือเอาออกไปเลยได้ แต่ผมคิดว่าผลกระทบจริง ๆ อยู่ที่ เครื่องมือแวดล้อม เหล่านี้
Homebrew มีประโยชน์มากจริง ๆ แต่ก็มีการตัดสินใจด้านการออกแบบที่แปลกอยู่ ทำไมต้องติดตั้ง Python เฉพาะตัวใหม่? แล้วทำไม Python ตัวนั้นต้องเป็นเวอร์ชันล่าสุดด้วย?
แต่พอแต่ละ formula ต้องระบุเวอร์ชัน Python เอง ในความเป็นจริงมันก็ไม่ได้เป็นเวอร์ชันล่าสุดเสมอไป และก็เกิด formula ที่ระบุสารพัดเวอร์ชันขึ้นมา ไม่เข้าใจว่าทำไมไม่ใช้ Python ของระบบ เหมือนตัวจัดการแพ็กเกจอื่น ๆ ในเครื่องมี Python ที่ติดตั้งไว้เยอะเกินไปแล้ว ไม่ต้องการเพิ่มอีกตัว โดยเฉพาะเวลาต้องติดตั้งแพ็กเกจ pip เพื่อให้บางอย่างทำงานได้ถูกต้อง ยิ่งชวนสับสน
ใช้แบบนี้ได้:
pythonX.Y -m pip install fooถ้าอยากตัดความกำกวมก็ใช้ alias ได้ สำหรับโปรเจกต์งาน ใช้ pyenv กับ virtual environment จะดี
ดูเหมือนเป็นการตัดสินใจทางการเมือง ใน Homebrew มีแพ็กเกจจำนวนมากที่จะไม่ได้รับอัปเดตอีกแล้ว แต่ก็ไม่ได้ถูก deprecate
ส่วนของ Homebrew ที่ไม่ใช่ Cask ต้องการไลเซนส์โอเพนซอร์ส และกรณีนี้เป็นอย่างหลัง
ในทางกลับกัน ถ้ามีอัปเดตอยู่จริงแต่ Homebrew แจกจ่ายไม่ได้ตามกฎหมาย จนอาจทำให้ผู้ใช้ติดตั้งเวอร์ชันเก่าและมีช่องโหว่ได้ ก็ควรเตือนผู้ใช้
https://wiki.debian.org/DFSGLicenses#DFSG-compatible_License...