การแจกจ่ายซอฟต์แวร์บน Mac กำลังทำให้ระดับคอร์ติซอลของฉันสูงขึ้น
(blog.kronis.dev)- ประสบการณ์ของนักพัฒนาอิสระที่พยายามแจกจ่ายยูทิลิตีเล็ก ๆ สำหรับนักพัฒนาที่สร้างด้วย Go บน macOS แต่ต้องชนกับกำแพงของ การเซ็นโค้ดและ Apple Developer Program
- บน Linux และ Windows สามารถแจกจ่ายได้ค่อนข้างง่าย แต่บน macOS ไบนารีที่ไม่ได้เซ็นจะถูกบล็อกเพราะ นโยบายกักกัน (quarantine)
- ค่าสมาชิกรายปี ของ Apple Developer Program อยู่ในระดับที่รายได้จากยูทิลิตีขนาดเล็กไม่อาจรองรับได้ และกระบวนการยืนยันตัวตนก็ล้มเหลวซ้ำแล้วซ้ำเล่าเพราะคุณภาพเว็บแคม MacBook ต่ำ
- บริการลายเซ็นอิเล็กทรอนิกส์ที่อิงกับภาครัฐ อย่าง SmartID และ eParaksts ในภูมิภาคทะเลบอลติก จัดการงานนี้ได้ภายในไม่กี่สิบวินาทีถึง 1 นาที แต่ระบบของบริษัทมูลค่าหลายแสนล้านดอลลาร์กลับทำได้ไม่ดี
- แม้แต่การเซ็นโค้ดบน Windows ก็มีค่าใช้จ่ายตั้งแต่ 209 EUR ต่อปีขึ้นไป ทำให้ ระบบนิเวศการเซ็นโค้ดทั้งหมดมีราคาแพงอย่างไร้เหตุผลพอ ๆ กับใบรับรอง TLS ก่อนการมาของ Let's Encrypt
อุปสรรคที่ปรากฏในการแจกจ่ายซอฟต์แวร์บน Mac
- ระหว่างสร้างยูทิลิตีเล็ก ๆ สำหรับนักพัฒนาเพื่อให้จัดการโปรไฟล์ Claude Code ได้ง่ายขึ้น ผู้เขียนพบว่าสามารถใช้ Go toolchain สร้างไฟล์รันแบบสแตติกสำหรับหลายแพลตฟอร์มได้อย่างง่ายดาย
- รีลีสแรกดูได้ที่ ccode.kronis.dev และ หน้า Itch.io ซึ่งสามารถดาวน์โหลดหรือซื้อไบนารีที่บิลด์ไว้ล่วงหน้าและดูซอร์สโค้ดได้
- ตอนนี้โค้ดยังอยู่ในสถานะ ไม่ได้เซ็น และเนื่องจากยูทิลิตียังอยู่ในระยะแรก จึงแนะนำให้ลองใช้ฟรีก่อน ถ้ามีประโยชน์ค่อยจ่ายทีหลัง
- การแจกจ่ายบน Linux ใช้งานได้ไม่มีปัญหาหลัง
chmod +xส่วนบน Windows สามารถสร้าง.exeได้ แต่คำเตือน SmartScreen ยังสามารถข้ามได้จากป๊อปอัปเดียวกัน - บน macOS ซอฟต์แวร์ที่ดาวน์โหลดมาจะถูกใช้ การกักกัน (quarantine) ทำให้รันไม่ได้ และปัญหาเดียวกันก็เกิดกับไฟล์ที่แชร์ให้ตัวเองผ่าน Nextcloud
- แม้จะสามารถแนะนำให้ผู้ใช้ปลด quarantine เองผ่านเทอร์มินัลได้ แต่ถึงนักพัฒนาจะยอมรับได้ มันก็ไม่ใช่ประสบการณ์ใช้งานที่ดีและอาจชวนให้ระแวง
ค่าใช้จ่ายและความคุ้มค่าของการเข้าร่วม Apple Developer Program
- เพื่อแก้ปัญหา ผู้เขียนพยายามสมัคร Apple Developer Program เพื่อเซ็นไฟล์รัน แต่ค่าสมาชิกรายปีกลับไม่สอดคล้องกับขนาดการแจกจ่ายของยูทิลิตีเล็ก ๆ
- ยูทิลิตีที่จะเผยแพร่นี้ตั้งใจจะวางบน Itch.io ด้วยโมเดล จ่ายเท่าไหร่ก็ได้ (pay-what-you-want) ที่ราว 7 ดอลลาร์ และคาดว่าจำนวนดาวน์โหลดอย่างมากคงอยู่ที่ 12–24 คน
- คนส่วนใหญ่อาจเลือกจ่าย 0 ดอลลาร์ และหลังหัก VAT กับค่าธรรมเนียมของ Itch.io จากรายได้ประมาณ 50 ดอลลาร์ ก็อาจเหลือเพียงราว 25 ดอลลาร์ ซึ่งพอจ่ายค่า Apple Developer Program ได้แค่ประมาณ 3 เดือน
- โครงสร้างที่ต้องเสียเงินเพียงเพื่อให้สามารถแจกจ่ายไบนารีต่อสาธารณะได้ เป็นสิ่งที่เสียเปรียบสำหรับนักพัฒนาสายงานอดิเรก และผลักเศรษฐศาสตร์ซอฟต์แวร์ไปสู่การเน้นหารายได้มากขึ้น
- แม้ซอฟต์แวร์เดสก์ท็อปจะมี Homebrew แต่ถ้าใช้เส้นทางนี้ก็ยากจะเรียกเก็บเงินแม้เพียงไม่กี่ดอลลาร์ หรือไม่ก็ต้องใส่คำแนะนำแยกอย่าง
mac-homebrew-install-instructions.txtในหน้าดาวน์โหลด Itch.io ซึ่งดูแปลก ๆ - ผู้เขียนยอมรับว่าหากไม่มีต้นทุนเลยก็อาจเกิดปัญหาอื่น เช่น สแปม แต่แม้จะเป็นซอฟต์แวร์ที่เผยแพร่แบบปิดหรือเปิดซอร์สเพียงบางระดับ โครงสร้างที่คิดเงินกับการแจกจ่ายไบนารีก็ยังเป็นภาระ
- แอป macOS/iOS ยังไม่สามารถคอมไพล์ได้เลยบน Windows หรือ Linux ทำให้มีปัญหา vendor lock-in ที่ต้องซื้อ MacBook ราคาแพงอยู่แล้ว
ความฝืดในกระบวนการยืนยันตัวตน
- ผู้เขียนเข้าใจได้ว่ากระบวนการสมัคร Apple Developer Program ต้องมีการยืนยันตัวตน แต่ปัญหาใหญ่คือระบบบังคับให้ใช้เว็บแคมของ MacBook ถ่ายรูปบัตรประจำตัว
- กล้องในตัวของ M1 MacBook Air ให้คุณภาพภาพบัตรไม่ดีพอ แม้จะปรับแสงแล้วก็ยังไม่สามารถทำให้ระบบรู้จำเอกสารได้ถูกต้อง แม้ลองหลายครั้ง
- แม้จะมี iPhone เชื่อมต่ออยู่ในเครือข่ายท้องถิ่นเดียวกัน ระบบก็ไม่ได้แนะนำให้ใช้เป็นกล้อง และตลอดการพยายามราว 10 ครั้งก็ยังล้มเหลวต่อเนื่อง
- หลังจากนั้นผู้เขียนลองต่อเว็บแคมหลัก แต่เพราะไม่มีออโต้โฟกัสสำหรับถ่ายเอกสารในระยะใกล้ จึงยังไม่เพียงพออยู่ดี
- ไม่มีตัวเลือกให้อัปโหลดเอกสารที่สแกนไว้ และทุกครั้งที่ล้มเหลวก็ขึ้นเพียงข้อผิดพลาดทั่วไป บางครั้งต้องเริ่มขั้นตอนสมัครใหม่ตั้งแต่ต้นซ้ำแล้วซ้ำเล่า
- เมื่อลงแอปบน iPhone โดยตรง การยืนยันกลับสำเร็จตั้งแต่ครั้งแรก แต่สำหรับผู้ใช้ที่ไม่มี iPhone หรือเว็บแคมคุณภาพสูง เรื่องนี้อาจเป็นอุปสรรคที่ใหญ่กว่าเดิม
- การชำระเงินดำเนินไปตามปกติ และดูเหมือนว่าบัญชีนักพัฒนาจะถูกเปิดใช้งานในไม่ช้า แต่แอประบุให้รออีเมล ขณะที่แอปเดสก์ท็อปกลับไม่รับรู้ความพยายามสมัครนั้นและยังแสดงให้เริ่มขั้นตอนใหม่
- อาจเป็นปัญหาจากการประมวลผลเบื้องหลังหรือ eventual consistency แต่จากมุมผู้ใช้ มันคือประสบการณ์ที่น่าหงุดหงิดเพราะสถานะการสมัครแสดงไม่ตรงกันในแต่ละแอป
ความไม่พอใจที่สะสมต่อระบบนิเวศของ Apple
- ผู้เขียนชื่นชมคุณภาพงานประกอบของฮาร์ดแวร์ Apple และชิปตระกูล M อย่างมาก และสำหรับคนที่ซื้อรุ่นสเปกสูงได้ มันก็เป็นเครื่องสำหรับพัฒนาที่ดีเยี่ยม
- แม้จะพอใจกับ iPhone SE 2022 แต่ Apple ยกเลิกซีรีส์ราคาย่อมเยา ไปแล้ว ซีรีส์ e ใหม่ก็แพงขึ้น และการถอด สวิตช์ปิดเสียงด้านข้าง กับ TouchID ออก ก็เป็นเหตุผลที่ทำให้โทรศัพท์เครื่องถัดไปอาจกลับไปใช้ Android
- หากต้องการใช้ macOS ในแบบที่ต้องการ ก็จำเป็นต้องพึ่งเครื่องมืออย่าง AutoRaise, Rectangle, DiscreteScroll
- เวลาย้ายโฟกัสหน้าต่างระหว่างหลายจอจำเป็นต้องคลิกเพิ่ม และแม้ AutoRaise จะมีประโยชน์ แต่มันก็อาจทำงานค่อนข้างก้าวร้าว
- Finder ไม่มีตัวเลือก “Cut”, คีย์ลัดแป้นพิมพ์ก็ไม่คุ้นเคย และการจัดวางปุ่ม Control/Command ยังทำให้ซอฟต์แวร์รีโมตเดสก์ท็อปมีปัญหา
- แนวทางที่ปิดโปรแกรมแล้วแต่ยังไม่ออกจริงก็ทำให้ไม่สะดวก และเมื่อรวมกับการต้องพัฒนาอยู่ในระบบนิเวศปิดของ Apple ด้วย MacBook RAM 8GB ก็ยิ่งเพิ่มภาระ
- ความไม่พอใจหลักคือการที่การพัฒนาแอปถูกผูกไว้กับระบบนิเวศของ Apple, ต้องเสียเงินเพื่อเซ็นซอฟต์แวร์, การส่งเอกสารถูกขัดขวางเพราะคุณภาพกล้องฮาร์ดแวร์, และแม้ใช้แอปบน iPhone แล้วสถานะการสมัครก็ยังไม่สะท้อนอย่างชัดเจน
ตัวอย่างที่ดีกว่าของการยืนยันตัวตนและลายเซ็นอิเล็กทรอนิกส์
- เวลาซื้อเครื่องดื่มชูกำลังที่ร้านขายของชำแถวบ้าน สามารถใช้ SmartID เพื่อตรวจสอบตัวตนและอายุได้ในราว 20 วินาที
- หากใช้ eParaksts ก็สามารถลงลายเซ็นดิจิทัลในเอกสารได้ภายในประมาณ 1 นาที ทั้งจากพีซีที่มีบัตรประชาชนที่รัฐออกให้กับเครื่องอ่านบัตร หรือจากแอปบนมือถือ
- ผลลัพธ์คือลายเซ็นเชิงเข้ารหัสที่เหมาะสม ซึ่งแนบมากับ คอนเทนเนอร์ EDOC (ASIC-E) หรือฝังลงในไฟล์ PDF โดยตรง
- ในประเทศอื่น ๆ ก็อาจมีบริการลักษณะใกล้เคียงกันสำหรับการยืนยันตัวตน ยืนยันอายุ เซ็นเอกสาร และบริการดิจิทัล แม้ไม่ใช่ทุกประเทศจะเหมือนกัน และโครงสร้างพื้นฐานด้านการชำระเงินก็มีข้อจำกัด
- ถึงอย่างนั้นก็ยังยากจะยอมรับว่าซอฟต์แวร์จากภูมิภาคบอลติกหลายชุดกลับทำงานได้ดีกว่ากระบวนการของบริษัทยักษ์ใหญ่ด้านเทคโนโลยี
การเซ็นโค้ดบน Windows และปัญหาต้นทุนในภาพกว้าง
- นี่ไม่ใช่ปัญหาเฉพาะของ Apple เพราะการเซ็นโค้ดบน Windows ก็มีภาระค่าใช้จ่ายสูงเช่นกัน
- Certum code signing ดูเหมือนจะเป็นตัวเลือกที่ค่อนข้างถูก แต่ก็ยังต้องจ่ายราว 209 ยูโรต่อปี
- Azure Artifact Signing ดูดีกว่าด้วย Basic tier ราคา 8.54 ยูโรต่อเดือน แต่เมื่อลองตั้งค่าบัญชี Azure กลับพบว่าบุคคลทั่วไปนอกสหรัฐฯ และแคนาดาไม่สามารถเซ็นใบรับรองได้ และในสหภาพยุโรปมีเพียงองค์กรเท่านั้นที่ทำ code signing ได้
- ปัจจุบันพื้นที่ของการเซ็นโค้ดมีราคาสูงเกินจริงมาก และให้ความรู้สึกคล้ายกับยุคก่อน Let’s Encrypt ที่ใบรับรอง TLS มีค่าใช้จ่ายระดับ 100 ยูโรต่อปี
- แม้ Let’s Encrypt จะเข้ามาแทนที่โครงสร้างแบบแสวงหาค่าเช่าจำนวนมาก แต่ก็ยังมีความเสี่ยงที่จะมุ่งไปสู่ single point of failure ขนาดใหญ่ เพราะมีทางเลือกและคู่แข่งไม่มากนัก
- ควรสามารถใช้บัตรประชาชนที่ภาครัฐออกให้ในการเซ็นโค้ดได้ และ วงการการเซ็นโค้ดก็ต้องการนวัตกรรมแบบ Let's Encrypt เช่นกัน
1 ความคิดเห็น
ความคิดเห็นจาก Hacker News
ผู้ใช้ที่ไม่ชอบ Gatekeeper สามารถปิดได้ใน 10 วินาที ด้วยการรัน
sudo spctl —-master-disableในเทอร์มินัลจะบอกว่ามันเป็นค้อนอันใหญ่เกินไปหรือไม่ปลอดภัยก็ได้ แต่สุดท้ายต้องเลือกให้ได้ว่าต้องการอะไร ถ้าอยากได้แรงเสียดทานที่ Gatekeeper สร้างขึ้นก็เปิดไว้ ถ้าไม่ชอบก็ปิด นักพัฒนาไม่ควรเป็นคนตัดสินใจแทนผู้ใช้ และผู้ใช้ควรเป็นคนตัดสินใจเองว่าจะรันโค้ดอะไรบนอุปกรณ์ของตัวเอง การที่ค่าปริยายค่อนข้างจำกัดก็สมเหตุสมผล เพราะคนที่รู้ว่ากำลังทำอะไรอยู่สามารถเปลี่ยนมันได้ง่าย
บน iOS ไม่มีวิธีติดตั้งซอฟต์แวร์ที่ไม่ได้เซ็นเลยแม้แต่น้อย และได้ยินมาว่าบน Android กระบวนการนั้นก็กำลังจะเปลี่ยนจาก 10 วินาทีเป็น 24 ชั่วโมง ซึ่งเป็นการพราก สิทธิ์ในการเลือกของผู้ใช้ ไปอย่างน่าขัน
แต่ใน macOS รุ่นใหม่ก็มีข้อจำกัดอื่นอีกมากที่ปิดไม่ได้ และนั่นน่ารำคาญจริง ๆ ผมไม่คิดว่า Gatekeeper เป็นหนึ่งในนั้น ตั้งแต่ Sequoia เป็นต้นมาอาจต้องกดช่องทำเครื่องหมายใน Settings ต่อจากคำสั่งเทอร์มินัล เลยอาจใช้เวลาประมาณ 30 วินาที แต่ก็ยังไม่ใช่เรื่องใหญ่
แนวคิดแบบ “เชื่อเฉพาะ Apple และอย่าเชื่อใครเลยแม้แต่ตัวเอง หรือไม่ก็เชื่อทุกคนไปเลย” ไม่ใช่การออกแบบที่มีเจตนาดี Apple เก่งมากในการผลักเรื่องเล่าด้วยการเปรียบเทียบเท็จและทางเลือกเทียม สมัยก่อนในการถกเถียงเรื่อง secure boot ก็เหมือนกัน Apple ทำให้มันกลายเป็น “ให้ Apple ถือกุญแจเข้ารหัส หรือไม่ก็ไม่ต้องเข้ารหัสเลย” จนผู้คนลืมถามไปว่า “ทำไมผมถึงถือกุญแจของอุปกรณ์ตัวเองไม่ได้?”
และทำได้โดยไม่ต้องปิดฟีเจอร์ความปลอดภัย แรงเสียดทานที่เพิ่มมานี้ดูเหมือนมีเป้าหมายเพื่อบังคับให้นักพัฒนาจ่ายค่าสมาชิกรายปีให้ Apple เพื่อการแจกจ่าย มากกว่าจะมีไว้เพื่อความปลอดภัยของผม ไม่ได้หมายความว่ามันไม่มีประโยชน์ด้านความปลอดภัยเลย แต่ผมคิดว่าน้ำหนักเอนมาทางอย่างแรกมากกว่า
เมื่อก่อนทำแบบนี้ได้ แต่ Apple เอาออกแล้วเปลี่ยนเป็นขั้นตอนที่น่าหงุดหงิดมากซึ่งต้องเข้าไปที่ System Settings ทุกครั้ง
แบบนี้จะยังรักษาแนวทางการแจกจ่ายที่ดีไว้ได้ และยังได้ภาพลักษณ์ที่ดีโดยรวมด้วย
น่าจะแค่แสดงคำเตือนแล้วให้รันได้ครั้งนี้ครั้งเดียว หรืออนุญาตให้รันได้ตามปกติในครั้งต่อ ๆ ไปก็พอ
ผมพัฒนาซอฟต์แวร์อินดี้สำหรับ Mac และ PC มา 20 ปี และเข้าใจความรู้สึกของผู้เขียนมาก
Apple ให้ความรู้สึกเหมือนคิดว่านักพัฒนาควร “สำนึกบุญคุณที่เราอนุญาตให้คุณสร้างแอปบนแพลตฟอร์มของเรา” ในบทความไม่ได้พูดถึง การไม่ให้ความสำคัญกับ backward compatibility ของ Apple แต่ Apple ชอบรื้อระบบนักพัฒนาทั้งก้อนเป็นประจำเหมือนทิ้งระเบิดพรม แอปที่สร้างเมื่อ 10 ปีก่อน ถ้าลองเอามารันบน macOS รุ่นล่าสุด มีโอกาสสูงว่าจะไม่ทำงาน
Microsoft ทำเรื่อง backward compatibility ได้ดีกว่ามาก และไม่ได้บังคับให้เข้าร่วมโปรแกรมนักพัฒนา แต่ทุกครั้งที่ต้องต่ออายุใบรับรองดิจิทัล Authenticode สำหรับ Windows ก็โดนรีดจนเกลี้ยง แค่ใบรับรองดิจิทัลอย่างเดียวก็แพงกว่า 99 ดอลลาร์ต่อปีแล้ว มันเป็นธุรกิจขายของกันชัด ๆ
Azure Artifact Signing ของ Microsoft ราคาใกล้เคียงค่าสมาชิกรายปีของ Apple แต่ตั้งแต่เดือนก่อน ตัวติดตั้งที่เซ็นด้วยวิธีนี้กลับขึ้นคำเตือน SmartScreen บ่อย ทั้งที่ทั้งสองอย่าง Microsoft ควบคุมเอง
ตัวเลือก Store ก็ไม่ฟรีสำหรับองค์กร และมีค่าลงทะเบียนครั้งเดียว ที่แย่กว่านั้นคือมันบังคับโมเดลไลเซนส์/เวอร์ชันทดลองแบบเรียบง่าย ซึ่งปกติไม่เข้ากับซอฟต์แวร์ B2B ที่ใช้ paid upgrade, สัญญาซัพพอร์ตแบบรายปี, การอัปเดตแบบควบคุม, และเวอร์ชันทดลองแบบขยายเวลา
https://github.com/Azure/artifact-signing-action/issues/128#...
แทนที่ Apple จะรักษาเสถียรภาพของ ABI และ API เอาไว้ กลับผลักภาระการดูแลรักษาต่อเนื่องไปให้นักพัฒนาหลายพันคนทุกปี เพื่อให้แน่ใจว่าแอปเดิมจะไม่พังบน iOS เวอร์ชันใหม่ เวลานี้ควรถูกนำไปใช้กับงานที่มีประสิทธิผลกว่า เช่น แก้บั๊ก เพิ่มฟีเจอร์ หรือพัฒนาแอปใหม่ เมื่อคิดถึงข้อดีแบบทวีคูณที่เสถียรภาพมอบให้ทั้งระบบนิเวศ มันดูเป็นการแลกเปลี่ยนที่ผิดพลาด
Apple ดูเหมือนอยากให้แอปตายไปเพื่อลดปริมาณแอปคุณภาพต่ำที่ล้น App Store แต่ต้องมีวิธีที่ดีกว่านี้ การคัดสรรโดยมนุษย์ยังดูเป็นวิธีเดียวที่เชื่อถือได้จริงสำหรับเรื่องการมองเห็นและการค้นพบแอป
แอป iOS ส่วนใหญ่เป็นเกม แต่ไม่เหมือนแพลตฟอร์มเกมอื่น นักพัฒนา iOS ต้องอัปเดตทุกปีเพื่อให้เกมยังทำงานได้ Apple ยินดีฆ่าเกม 32-bit ทั้งบน iOS และ macOS และหลายเกมก็ย้ายไป 64-bit ไม่สำเร็จ ตรงข้ามกับ Nintendo DS/DSi/3DS ที่ตลอดช่วงปี 2004~2020 แม้จะมีการปรับฮาร์ดแวร์ใหญ่เล็กและอัปเดตเฟิร์มแวร์หลายสิบครั้ง เกมส่วนใหญ่ก็ยังเล่นได้ต่อเนื่อง หรือ Switch ที่ตั้งแต่ปี 2017 เกมก็ยังใช้งานได้เป็นส่วนใหญ่ทั้งบน Switch 1 และ 2
แอปองค์กรขนาดใหญ่หลายตัวที่ผมใช้ยังเป็น Intel อยู่เลย ทำให้เสียประสิทธิภาพไปมาก พอ Rosetta ถูกยกเลิกไป สุดท้ายก็ต้องเปลี่ยน แอปโอเพนซอร์สทั้งหมดเป็น native กันหมดแล้ว
ในฐานะผู้เขียน ผมได้อัปเดตบทความอย่างรวดเร็วแล้ว
เพื่อความเป็นธรรม ถ้าดูราคาผู้ให้บริการอย่าง Certum เวลาอยากเซ็นอะไรสักอย่างสำหรับ Windows ก็อาจไม่ใช่ว่า Apple แพงผิดปกติ ทุกเจ้าก็ดูเป็นแบบนั้น: https://www.certum.eu/en/code-signing-certificates/
พอดูฝั่ง Windows ต่อก็พบ Azure Artifact Signing ซึ่งราคาถูกที่ 8.54 ยูโรต่อเดือน แต่ไม่รองรับผู้ใช้บุคคลทั่วไปใน EU รองรับเฉพาะบุคคลในสหรัฐฯ และแคนาดา ส่วน EU รองรับเฉพาะองค์กร ซึ่งแปลว่าต้องไปตั้งบริษัทแบบ SIA หรือเทียบเท่า Ltd. ก่อน นั่นเป็นแผนในอนาคตอยู่แล้ว แต่กลายเป็นอุปสรรคต่อการใช้ Azure: https://azure.microsoft.com/en-us/products/artifact-signing
น้ำเสียงอาจจะฟังอึดอัดไปหน่อย แต่ผมอยากยืนยันจริง ๆ ว่า อุตสาหกรรม code signing ต้องการช่วงเวลาแบบ Let’s Encrypt ไม่ทางใดก็ทางหนึ่ง อย่างน้อยก็ควรทำให้เป็นของสามัญเหมือนที่ Azure Artifact Signing พยายาม และควรเปิดให้นักพัฒนารายบุคคลใช้ได้ในทุกแพลตฟอร์ม แต่ดูไม่น่าเป็นไปได้ เพราะแพลตฟอร์มต่าง ๆ ตั้งใจทำตัวเป็น walled garden ผมไม่ได้เกลียด code signing เอง ถ้าทำให้ดี มันเป็นแนวคิดที่ดีเหมือน TLS บนเว็บไซต์จำนวนมาก
แม้แต่ในกระทู้ Stack Overflow เมื่อ 8 ปีก่อน ก็ยังบอกว่าวิธีเดียวที่ชัดเจนในการทำให้คำเตือน Microsoft SmartScreen หายไปทันทีและถาวร คือซื้อ EV code signing certificate จากหน่วยงานออกใบรับรองที่ Microsoft อนุมัติ แล้วใช้ใบนี้เซ็นแอป
ใบรับรอง EV แบบนี้ปกติอยู่ราว 300~700 ดอลลาร์ต่อปี ควรเทียบราคา และออกให้เฉพาะธุรกิจที่จดทะเบียนแล้ว ถ้าเป็นนักพัฒนาเดี่ยวก็ต้องเป็นผู้ประกอบการรายบุคคลและมีทะเบียนธุรกิจที่ยังใช้งานได้
https://stackoverflow.com/questions/48946680/how-to-avoid-th...
จากนั้นผมย้ายขั้นตอนสมัครไปทำบนแล็ปท็อป Apple แล้วกลับตกหลุมลึกกว่าเดิม ใช้บัตรประชาชนที่รัฐออกใบเดิมแท้ ๆ แต่ somehow มันแยกเป็นใบสมัครสองชุดที่เหมือนแข่งกันเอง ชุดหนึ่งเหมือนจะสำเร็จ อีกชุดเหมือนจะล้มเหลว ข้อดีคือพวกเขาเก็บเงินไปแล้ว ข้อเสียคือไม่ได้ให้สิ่งที่ผมซื้อ สุดท้ายผมต้องอัปโหลดข้อมูลส่วนตัวใหม่อยู่หลายสัปดาห์ ซึ่งคงไม่มีทางก่อปัญหาในอนาคตแน่นอน ทั้งหมดนี้ก็แค่เพื่อเอางานกองพะเนินที่ทำด้วย vibe-coded ของผมลงโทรศัพท์ตัวเอง
ผมก็เคยเจอความอึดอัดแบบเดียวกับผู้เขียนตอนหาวิธีแจกจ่ายไบนารีแบบนี้ให้ผู้ใช้ปลายทาง และได้เขียน ไกด์ อธิบายไว้อย่างละเอียดว่าต้องทำอย่างไร
เอกสารของ Apple แย่อย่างน่าตกใจ และแทบหาโพสต์บล็อกที่เกี่ยวข้องไม่ได้เลย เลยต้องลองผิดลองถูกและดูโปรเจ็กต์โอเพนซอร์สชื่อดังบน GitHub เพื่อ reverse engineer ว่าของที่ใช้ได้จริงเขาทำกันอย่างไร
https://ofek.dev/words/guides/2025-05-13-distributing-comman...
https://successfulsoftware.net/2018/11/16/how-to-notarize-yo...
https://successfulsoftware.net/2023/04/28/moving-from-altool...
ประมาณ 1 ปีก่อน เหตุผลที่ใหญ่ที่สุดที่ทำให้ผม ย้ายไป Linux เต็มตัว ก็น่าจะเป็นเรื่องนี้
ผมเบื่อที่จะสร้างซอฟต์แวร์แล้วกลับทำให้คนใช้งานไม่ได้ วิธีแก้อาจเป็นกล่องโต้ตอบแบบ “ผมเชื่อถือผู้เผยแพร่นี้” สไตล์ VS Code แต่ถึงอย่างนั้นก็ดูยังไม่ค่อยตรงจุด การพัฒนาบน Linux สนุกจริง ๆ และแทบไม่มีอะไรใน macOS ที่ผมคิดถึง ของที่คิดถึงผมก็เขียนโปรแกรมขึ้นมาเองแล้วแจกให้คนอื่น [1][2] ใครจะไปคิดว่ามันจะยากขนาดนี้
https://github.com/zackb/tether
https://github.com/zackb/hyprwat
ผมไม่แน่ใจว่าคนที่แคร์โอเพนซอร์สหรือการพัฒนาในความหมายกว้างกว่านั้นจะมองสิ่งนี้แล้วพูดว่า “ใช่เลย นี่แหละระบบปฏิบัติการที่ฉันอยากใช้” ได้หรือเปล่า
ผมเข้าใจจากใจจริงได้ยากมากว่าทำไมนักพัฒนาหลายคนยอมประนีประนอมอะไรตั้งมากมายเพียงเพราะโน้ตบุ๊กบางเครื่องหนึ่ง
ผมใช้ Mac เป็นเครื่องพัฒนาหลักมาตั้งแต่ยุค G4 PowerBook และก็พยายามย้ายไป Linux หลายครั้ง แต่ทุกครั้งประสบการณ์แย่กว่าเดิม พอมาเห็นเรื่องแบบนี้ก็ยิ่งตระหนักว่าเราใช้คอมพิวเตอร์กันต่างกันมากจริง ๆ
ฮาร์ดแวร์แปลก ๆ ที่เข้ากันไม่ได้ อาการสะดุด และใช้เวลาบำรุงรักษาเครื่องมากเกินไปแทนที่จะได้ทำงาน การต้องรัน
xattr -d com.apple.quarantineเป็นครั้งคราวเพื่อดาวน์โหลดแอป FOSS สุ่ม ๆ ที่มีคนใช้น้อย ยังเทียบไม่ได้เลยกับสิ่งที่ผู้ใช้ Linux ต้องเจอผมเป็นคนดื้อเรื่องนี้เป็นอันดับสองในกลุ่มเพื่อน ช่วงโควิดผมใช้แต่เดสก์ท็อปอยู่หลายปี แล้วหลังจากนั้นก็เลี่ยงแล็ปท็อป Mac มาอีก 5 ปี แต่มันแย่มาก สุดท้ายก็ยอมแพ้เมื่อรู้ว่า MacBook Air M5 ใหม่อาจเร็วกว่าในการท่องเว็บ และยังแข่งกับเครื่อง Xeon สัตว์ประหลาดตัวล่าสุดที่เพิ่งประกอบเรื่องคอมไพล์โค้ดได้แบบน่าประหลาด ทั้งที่ไม่มีพัดลมด้วยซ้ำ
สำหรับผม เกมจบแล้ว Apple ชนะทุกด้านยกเว้นคุณภาพจอ ผมเสพติด OLED ไปแล้ว น่าเสียดาย และผมก็ไม่เห็นด้วยในระดับหลักการกับจุดยืนของ Apple ที่ไม่ใส่หน้าจอสัมผัสในแล็ปท็อป ยิ่งพอใช้เวลากับลูก ๆ เยอะขึ้นก็ยิ่งคิดแบบนั้น
บน Linux ถ้าต้อง
chmod +xเพื่อรันเครื่องมือก็ถือเป็นเรื่องปกติ แต่บน macOS แค่ต้องรันxattrถึงกับต้องเขียนบล็อกมาบ่นเลยหรือผมสงสัยจริง ๆ นะว่า Windows 11 ปล่อยให้รันไฟล์
.exeที่ไม่น่าเชื่อถือโดยไม่มีคำเตือนได้จริงหรือเปล่า?นี่เป็นเครื่องมือ Claude Code สำหรับนักพัฒนา ผู้ใช้ที่เป็นไปได้ควรจะรันคำสั่ง
xattrได้สบาย ๆ ถ้าทำไม่ได้ อาจไม่ควรไปยุ่งกับ Claude Code ตั้งแต่แรก ตรงนี้ฝั่งผมเองก็มีความเป็น “คนเฝ้าประตู” เพิ่มอยู่เหมือนกันสำหรับผู้ใช้แบบนี้ คุณอาจทำสคริปต์
curl -sL [https://github.com/myrepo/installme.sh](<https://github.com/myrepo/installme.sh>) | bashที่จัดการคำสั่งxattrให้ด้วยก็ได้ผู้ใช้ macOS ทั่วไปมักไม่ใช้เครื่องมือ command line หรือไม่ก็ใช้ Homebrew วิธีแจกจ่ายไบนารีที่ถูกต้องน่าจะเป็น pkg installer มากกว่า
.exe/PE ที่ไม่น่าเชื่อถือMicrosoft Defender SmartScreen เป็นคนจัดการ และมันขึ้นป๊อปอัปขู่คนได้ดีมาก ถ้าไม่เคยทำมาก่อน ขั้นตอนการคลิกผ่านเพื่อให้โปรแกรมรันได้ก็ไม่ได้ใช้งานง่ายนัก
มากพอจะทำให้คนที่ไม่มีความรู้ลึก ๆ กลัวได้แน่นอน แน่นอนว่าปิดทั้งหมดนี้ได้
การอธิบายและเกลี้ยกล่อมผู้ใช้ให้กดช่อง “Allow executing file as program” นั้นง่ายกว่าการสอนคำสั่ง command line ที่ทึบอย่าง
xattrมากเมื่อวานผมเพิ่งผ่าน ขั้นตอนยืนยันตัวตน นี้มา และน่าจะสำเร็จตอนรอบที่ 8
มันออกแบบมาแย่มาก ตอนนี้กำลังแลกเอกสารกับบุคคลที่สามเจ้าหนึ่งเพื่อเชื่อม LLC เข้ากับบัญชี ถ้าแค่เขียนซอฟต์แวร์แล้วแจกจ่ายได้เลยก็คงดี แต่ในเมื่อ iOS monopoly มีเจ้าเดียว ก็ต้องเล่นตามเกม
ถ้าเป็นเมื่อ 1 ปีก่อนผมคงเห็นด้วย แต่ตอนนี้ผมอยู่คนละฝั่งแล้ว
ปริมาณ มัลแวร์ ที่เข้าไปอยู่ในซอฟต์แวร์ทุกวันนี้เพิ่มขึ้นแบบทวีคูณ จริงอยู่ มันเป็นภาษีความเจ็บปวดที่โยนใส่ซอฟต์แวร์ทุกตัว ไม่ว่าจะเป็นอันตรายหรือไม่ แต่จนกว่าจะหาวิธีที่ดีกว่านี้ได้ วิธีนี้ก็จะทำให้ผู้ไม่หวังดีบางส่วนถอดใจไปเอง โดยเฉพาะเพราะต้องเสียค่าธรรมเนียม
ในฐานะผู้ใช้ Mac ผมอยากรู้ว่านักพัฒนาจ่ายต้นทุนมากพอสมควรเพื่อส่งซอฟต์แวร์นี้มาให้ผมหรือไม่ สำหรับผมมันเป็นสัญญาณที่มีประโยชน์ ถ้ายังไม่ได้จ่ายเงินและยังไม่ได้อัปโหลดพาสปอร์ต ผมก็อยากคิดให้รอบคอบมาก ๆ ถึงความเสี่ยงที่ต้องรับถ้าจะรันมัน
อย่าอัปโหลดเอกสารยืนยันตัวตน เด็ดขาด
ถ้านั่นหมายถึงจะไม่พัฒนาสำหรับแพลตฟอร์มนั้น ก็แค่ไม่ต้องพัฒนาสำหรับมัน