การแจกจ่ายซอฟต์แวร์บน Mac กำลังทำให้ระดับคอร์ติซอลของฉันสูงขึ้น
(blog.kronis.dev)- ยูทิลิตี Go ขนาดเล็กสำหรับจัดการโปรไฟล์ Claude Code สามารถแจกจ่ายไฟล์รันแบบสแตติกสำหรับ Linux และ Windows ได้ง่าย แต่บน macOS ถูกบล็อกไม่ให้รันเพราะ quarantine ที่ถูกใส่ให้ไฟล์ดาวน์โหลด และการต้องอธิบายวิธีปลดล็อกด้วยตนเองก็ทำลายประสบการณ์ผู้ใช้
- ผู้เขียนพยายามสมัคร Apple Developer Program เพื่อเซ็นไบนารีบน macOS แต่ด้วยโมเดล จ่ายเท่าที่ต้องการ ประมาณ 7 ดอลลาร์ และคาดว่ายอดดาวน์โหลดจะมีเพียงราว 12–24 คน จึงยากจะรับภาระ ค่าสมาชิกรายปี ได้
- ขั้นตอน ยืนยันตัวตน ของ Apple Developer Program มีปัญหาเพราะเว็บแคม MacBook ไม่สามารถอ่านบัตรประชาชน/เอกสารได้ดีพอ ล้มเหลวซ้ำ ๆ โดยไม่มีตัวเลือกอัปโหลดไฟล์สแกนหรือแนะนำให้ใช้กล้อง iPhone แต่เมื่อใช้แอปบน iPhone กลับสำเร็จในครั้งแรก สะท้อนการพึ่งพาอุปกรณ์อย่างชัดเจน
- แม้ Apple Hardware และชิปตระกูล M จะได้รับการยกย่องสูง แต่การใช้งาน macOS ให้ลื่นไหลยังต้องพึ่งเครื่องมือเสริมอย่าง AutoRaise, Rectangle, DiscreteScroll และ Finder, คีย์ลัด, การโฟกัสหน้าต่าง, รวมถึงวิธีปิดแอป ก็ยังทำให้เวิร์กโฟลว์นักพัฒนาไม่สะดวก
- ฝั่ง Windows ก็มีต้นทุนการเซ็นโค้ดเช่นกัน โดย Certum code signing อยู่ที่ราว 209 ยูโรต่อปี และ Azure Artifact Signing ก็มีข้อจำกัดด้านภูมิภาคและบัญชีบุคคล ทำให้ระบบนิเวศของ code signing โดยรวมดูแพงและเข้าถึงยาก คล้ายยุค ใบรับรอง 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 ซึ่งดูแปลก ๆ - ผู้เขียนยอมรับว่าถ้าทำให้ไม่มีต้นทุนเลยก็อาจก่อปัญหาอื่นอย่างสแปมได้ แต่แม้จะเป็นซอฟต์แวร์แบบส่วนตัวหรือเพียงเปิดเผยซอร์ส การที่การแจกจ่ายไบนารีมีต้นทุนแฝงอยู่ก็ยังเป็นภาระ
ความฝืดในขั้นตอนยืนยันตัวตน
- ในขั้นตอนสมัคร Apple Developer Program ผู้เขียนเข้าใจได้ว่าต้องมีการยืนยันตัวตน แต่ปัญหาใหญ่คือระบบบังคับให้ถ่ายรูปเอกสารด้วยเว็บแคมของ MacBook
- กล้องในตัวของ M1 MacBook Air ให้คุณภาพภาพของเอกสารไม่ดีพอแม้จะเปลี่ยนแสงแล้ว และต่อให้พยายามหลายครั้งก็ยังตรวจจับเอกสารได้ไม่ถูกต้อง
- แม้จะมี iPhone เชื่อมต่ออยู่ในเครือข่ายภายในเดียวกัน ระบบก็ไม่ได้แนะนำให้ใช้เป็นกล้อง และตลอดประมาณ 10 ครั้งที่ลองก็ยังล้มเหลวซ้ำ ๆ
- หลังจากนั้นผู้เขียนลองต่อเว็บแคมหลัก แต่ก็ยังไม่เพียงพอเพราะไม่มีออโต้โฟกัสสำหรับการถ่ายเอกสารระยะใกล้
- ระบบไม่มีตัวเลือกให้อัปโหลดเอกสารที่สแกนไว้ และทุกครั้งที่ล้มเหลวก็จะขึ้นข้อผิดพลาดแบบกว้าง ๆ บางครั้งถึงขั้นต้องเริ่มกระบวนการสมัครใหม่ตั้งแต่ต้น
- เมื่อติดตั้งแอปบน iPhone โดยตรง กลับสำเร็จในครั้งแรก แต่สำหรับผู้ใช้ที่ไม่มี iPhone หรือเว็บแคมคุณภาพสูง สิ่งนี้อาจเป็นกำแพงที่หนักกว่าเดิม
- การชำระเงินผ่านไปได้ตามปกติ และดูเหมือนว่าบัญชีนักพัฒนาจะใกล้เปิดใช้งานแล้ว แต่แอปกลับแสดงให้รออีเมล ขณะที่แอปเดสก์ท็อปก็ไม่รับรู้ว่ามีการพยายามสมัครไปแล้วและแสดงให้เริ่มกระบวนการใหม่
- มันอาจเป็นปัญหาจากการประมวลผลเบื้องหลังหรือ eventual consistency แต่จากมุมผู้ใช้แล้ว นี่คือประสบการณ์ที่น่าหงุดหงิดเพราะสถานะการสมัครแสดงไม่ตรงกันในแต่ละแอป
ความไม่พอใจที่สะสมต่อระบบนิเวศของ Apple
- ผู้เขียนชื่นชมคุณภาพงานประกอบของ Apple Hardware และชิปตระกูล 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 container (ASIC-E) หรือฝังลงในไฟล์ PDF โดยตรง
- ในประเทศอื่น ๆ ก็น่าจะมีบริการคล้ายกันสำหรับยืนยันตัวตน ยืนยันอายุ เซ็นเอกสาร และใช้บริการดิจิทัล แม้ไม่ใช่ทุกประเทศจะเหมือนกัน และยังมีข้อจำกัดด้านโครงสร้างพื้นฐานการชำระเงินอยู่
- ถึงอย่างนั้น การที่ซอฟต์แวร์จากภูมิภาคบอลติกหลายตัวกลับทำงานได้ดีกว่ากระบวนการของบริษัทยักษ์ใหญ่ด้านเทคโนโลยีก็ยังเป็นสิ่งที่ยากจะยอมรับ
การเซ็นโค้ดบน Windows และปัญหาต้นทุนในภาพกว้าง
- ปัญหานี้ไม่ได้มีแค่ Apple เพราะการเซ็นโค้ดบน Windows ก็มีต้นทุนสูงเช่นกัน
- Certum code signing ดูเป็นหนึ่งในตัวเลือกที่ถูกกว่า แต่ก็ยังต้องจ่ายประมาณ 209 ยูโรต่อปี
- Azure Artifact Signing ดูดีกว่าเพราะ Basic tier อยู่ที่ 8.54 ยูโรต่อเดือน แต่เมื่อเข้าไปตั้งค่าบัญชี Azure กลับพบว่าบุคคลธรรมดานอกสหรัฐฯ และแคนาดาไม่สามารถเซ็นใบรับรองได้ และในสหภาพยุโรปมีเพียงองค์กรเท่านั้นที่ทำ code signing ได้
- ปัจจุบันพื้นที่ของ code signing ยังมีราคาสูงเกินจริง และให้ความรู้สึกคล้ายช่วงก่อน Let’s Encrypt ที่ใบรับรอง TLS เคยมีค่าใช้จ่ายระดับ 100 ยูโรต่อปี
- แม้ 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 ผมอยากรู้ว่านักพัฒนาจ่ายต้นทุนมากพอสมควรเพื่อส่งซอฟต์แวร์นี้มาให้ผมหรือไม่ สำหรับผมมันเป็นสัญญาณที่มีประโยชน์ ถ้ายังไม่ได้จ่ายเงินและยังไม่ได้อัปโหลดพาสปอร์ต ผมก็อยากคิดให้รอบคอบมาก ๆ ถึงความเสี่ยงที่ต้องรับถ้าจะรันมัน
อย่าอัปโหลดเอกสารยืนยันตัวตน เด็ดขาด
ถ้านั่นหมายถึงจะไม่พัฒนาสำหรับแพลตฟอร์มนั้น ก็แค่ไม่ต้องพัฒนาสำหรับมัน