ชุมชนนักพัฒนาเปิดเผยข้อบกพร่องร้ายแรงของ Xcode และสภาพแวดล้อมการพัฒนาแบบผูกขาดของ Apple

ทีมชุมชน BigGo
ชุมชนนักพัฒนาเปิดเผยข้อบกพร่องร้ายแรงของ Xcode และสภาพแวดล้อมการพัฒนาแบบผูกขาดของ Apple

สภาพแวดล้อมการพัฒนา Xcode ของ Apple กลายเป็นแหล่งความหงุดหงิดอย่างกว้างขวางในหมู่นักพัฒนา iOS โดยการอภิปรายในชุมชนเผยให้เห็นปัญหาที่ฝังรากลึกซึ่งไปไกลกว่าข้อบกพร่องของซอฟต์แวร์ทั่วไป ปัญหาเหล่านี้มีตั้งแต่ข้อผิดพลาดของคอมไพเลอร์ที่เข้าใจยากไปจนถึงระบบนิเวศแบบปิดของ Apple ที่บังคับให้นักพัฒนาต้องใช้เครื่องมือที่มีคุณภาพต่ำกว่ามาตรฐาน

ความล้มเหลวของคอมไพเลอร์ทำให้นักพัฒนาติดอยู่

หนึ่งในปัญหาที่น่าสะพรึงกลัวที่สุดที่รบกวน Xcode คือข้อผิดพลาดที่มีชื่อเสียงในทางที่ไม่ดี unable to type-check this expression in reasonable time ข้อความนี้ปรากฏขึ้นเมื่อคอมไพเลอร์ Swift ยอมแพ้ในการวิเคราะห์โค้ด ทำให้นักพัฒนาต้องค้นหาทั่วทั้งโค้ดเบสโดยไม่มีคำแนะนำที่มีความหมาย ข้อผิดพลาดนี้ไม่ให้ตำแหน่งหรือสาเหตุที่เฉพาะเจาะจง ทำให้สิ่งที่ควรจะเป็นเครื่องมือพัฒนาที่มีประโยชน์กลายเป็นเพียงโปรแกรมแก้ไขข้อความจนกว่าปัญหาลึกลับนี้จะได้รับการแก้ไข

ชุมชนได้ระบุว่านี่เป็นอาการของปัญหาใหญ่กว่าที่เครื่องมือพัฒนาของ Apple แสร้งทำเป็นว่าทุกอย่างทำงานได้ดีในขณะที่จริงๆ แล้วมันกำลังล้มเหลว ไม่เหมือนกับข้อผิดพลาดของคอมไพเลอร์แบบดั้งเดิมที่ชี้ไปที่ปัญหาเฉพาะ ความล้มเหลวเหล่านี้บังคับให้นักพัฒนาต้องเดาเอาเปลี่ยนเอาแบบเสียเวลา

ปัญหาหลักของ Xcode ที่นักพัฒนาระบุ

หมวดหมู่ปัญหา ปัญหาเฉพาะ ผลกระทบ
ข้อผิดพลาดของ Compiler "Unable to type-check expression" โดยไม่มีตำแหน่งที่เฉพาะเจาะจง การพัฒนาหยุดชะงักจนกว่าจะค้นพบปัญหาด้วยตนเอง
ไฟล์โปรเจกต์ ไฟล์ project.pbxproj ที่อ่านไม่ได้ทำให้เกิด merge conflicts การทำงานร่วมกันในทีมกลายเป็นเรื่องยาก
เครื่องมือ Debugging กล่องโต้ตอบรหัสผ่านซ้อนทับกัน ปัญหาการเชื่อมต่อกับอุปกรณ์ iOS การทดสอบและการ deployment ล่าช้า
เครื่องมือทางเลือก AppCode ถูกยกเลิก เอกสารเครื่องมือ CLI มีจำกัด ไม่มีทางเลือกที่เหมาะสมแทน Xcode
การรายงานบั๊ก bug tracker ส่วนตัวป้องกันการทำงานร่วมกันของชุมชน นักพัฒนาเสียเวลาค้นพบปัญหาที่รู้จักแล้วซ้ำ

ไฟล์โปรเจกต์สร้างฝันร้ายในการรวมโค้ด

ระบบการกำหนดค่าโปรเจกต์ของ Xcode นำเสนออุปสรรคสำคัญอีกประการหนึ่งสำหรับทีมพัฒนา ไฟล์ project.pbxproj ซึ่งมีการตั้งค่าและการกำหนดค่าโปรเจกต์ทั้งหมด เป็นโค้ดที่อ่านไม่ออกหลายพันบรรทัดซึ่งกลายเป็นฝันร้ายในระหว่างการทำงานร่วมกันของทีม เมื่อเกิดความขัดแย้งในการรวมโค้ดในไฟล์นี้ นักพัฒนามักพบว่าตัวเองไม่สามารถเปิดโปรเจกต์ได้เลย

การตอบสนองของชุมชนคือการละทิ้งระบบของ Apple ทั้งหมด โดยนักพัฒนาหลายคนหันไปใช้เครื่องมือของบุคคลที่สามอย่าง xcodegen เพื่อจัดการไฟล์โปรเจกต์ในรูปแบบที่มนุษย์อ่านได้อย่าง YAML จากนั้นจึงสร้างไฟล์ Xcode ตามต้องการ

ระบบนิเวศการพัฒนาแบบปิดของ Apple ขัดขวางนวัตกรรม

บางทีแง่มุมที่น่ากังวลที่สุดที่เผยออกมาในการอภิปรายของชุมชนคือการควบคุมแบบผูกขาดของ Apple เหนือเครื่องมือพัฒนา iOS บริษัทรักษาระบบติดตามข้อบกพร่องแบบส่วนตัว ทำให้นักพัฒนาไม่สามารถค้นคว้าปัญหาที่ทราบแล้วหรือร่วมมือกันหาทางแก้ไขได้ ความไม่โปร่งใสนี้บังคับให้นักพัฒนาหลายพันคนต้องเสียเวลาค้นพบปัญหาเดิมๆ ซ้ำแล้วซ้ำเล่าอย่างอิสระ

ระบบติดตามข้อบกพร่องของ Apple เป็นแบบส่วนตัว คุณสามารถส่งรายงานข้อบกพร่องได้ แต่ตัวรายงานข้อบกพร่องเป็นเหมือนหลุมดำ ข้อมูลเข้าไปแต่ไม่ออกมา

การขาดทางเลือกที่เป็นไปได้ทำให้ปัญหาซับซ้อนยิ่งขึ้น AppCode ของ JetBrains ซึ่งเสนอประสบการณ์แบบ IntelliJ สำหรับการพัฒนา iOS ถูกยกเลิกเนื่องจากความยุ่งยากในการยังคงต้องใช้ Xcode สำหรับการคอมไพล์และการปรับใช้ สิ่งนี้ทำให้นักพัฒนาติดอยู่ในระบบนิเวศของ Apple โดยไม่มีทางหนี

ชุมชนแสวงหาวิธีแก้ปัญหาและทางเลือก

นักพัฒนาได้พบวิธีต่างๆ ในการรับมือกับข้อจำกัดของ Xcode แม้ว่าจะไม่มีวิธีใดให้การแก้ไขที่สมบูรณ์ บางคนใช้เครื่องมือภายนอกสำหรับการจัดการโปรเจกต์ ในขณะที่คนอื่นๆ ได้พัฒนาแนวทางการแก้ไขปัญหาแบบพิธีกรรมที่เกี่ยวข้องกับการล้างแคช การรีสตาร์ตแอปพลิเคชัน และการสร้างโปรเจกต์ใหม่ อย่างไรก็ตาม วิธีแก้ปัญหาเหล่านี้เน้นย้ำว่าสภาพแวดล้อมการพัฒนาขัดขวางประสิทธิภาพการทำงานมากกว่าที่จะเสริมสร้าง

ความแตกต่างกับแพลตฟอร์มอื่นๆ ชัดเจนมาก เครื่องมือพัฒนาของ Microsoft ได้รับคำชมจากชุมชนสำหรับความเปิดกว้าง ด้วยที่เก็บข้อมูลสาธารณะ ผู้ดูแลที่ตอบสนอง และกระบวนการพัฒนาที่โปร่งใส สิ่งนี้ทำให้แนวทางลับๆ ของ Apple ดูล้าสมัยและเป็นปฏิปักษ์ต่อนักพัฒนายิ่งขึ้น

วิธีแก้ปัญหาและโซลูชันของนักพัฒนา

  • การจัดการโปรเจกต์: ใช้ xcodegen ในการจัดการโปรเจกต์ในรูปแบบ YAML
  • สภาพแวดล้อมการพัฒนา: นักพัฒนาบางคนใช้ neovim ร่วมกับ xcode-build-server (แม้ว่าจะไม่เสถียร)
  • ระบบอัตโนมัติสำหรับ Build: Fastlane ช่วยในการเขียนสคริปต์และกระบวนการ CI/CD
  • พิธีกรรมแก้ไขปัญหา: ล้าง derived data → รีสตาร์ท Xcode → รีบูต Mac → ลองเวอร์ชัน beta → สร้างโปรเจกต์ใหม่
สถานีทำงานของนักพัฒนา iOS ที่แสดง Xcode และโค้ด Swift เพื่อแสดงให้เห็นถึงความท้าทายที่เผชิญในสภาพแวดล้อมการพัฒนา
สถานีทำงานของนักพัฒนา iOS ที่แสดง Xcode และโค้ด Swift เพื่อแสดงให้เห็นถึงความท้าทายที่เผชิญในสภาพแวดล้อมการพัฒนา

ต้นทุนของแนวทางของ Apple

การอภิปรายของชุมชนเผยให้เห็นว่าเครื่องมือพัฒนาที่ไม่ดีของ Apple อาจกำลังขัดขวางการเติบโตของนักพัฒนาใหม่ที่เรียนรู้การพัฒนา iOS เป็นประสบการณ์การเขียนโปรแกรมครั้งแรก ลักษณะที่คาดเดาไม่ได้ของปัญหาของ Xcode สอนให้นักพัฒนาพึ่งพาการแก้ไขปัญหาแบบงมงายมากกว่าทักษะการแก้ปัญหาอย่างเป็นระบบ

สำหรับนักพัฒนาที่มีประสบการณ์ ความหงุดหงิดเพิ่มขึ้นด้วยความเฉยเมยที่ชัดเจนของ Apple ต่อปัญหาเหล่านี้ ดูเหมือนว่าจุดสนใจของบริษัทจะอยู่ที่การรักษาการควบคุมเหนือไปป์ไลน์การพัฒนา iOS มากกว่าการให้เครื่องมือที่ดีที่สุดแก่นักพัฒนา แนวทางนี้ได้ผลเพราะตำแหน่งในตลาดสมาร์ทโฟนของ Apple แต่มาพร้อมกับต้นทุนของประสิทธิภาพการทำงานและความพึงพอใจของนักพัฒนา

ลักษณะที่แพร่หลายของข้อร้องเรียนเหล่านี้บ่งบอกว่าปัญหาของ Xcode ไม่ใช่เหตุการณ์ที่เกิดขึ้นแยกเดี่ยว แต่เป็นปัญหาการออกแบบและลำดับความสำคัญพื้นฐานที่สะท้อนความสัมพันธ์ที่กว้างขึ้นของ Apple กับชุมชนนักพัฒนา

อ้างอิง: Xcode is the Worst Piece of Professional Software I Have Ever Used