คำถามที่พบบ่อย

หากมีข้อสงสัยหรือต้องการความช่วยเหลือ โปรดดูหัวข้อ รับความช่วยเหลือ

Bazel คืออะไร

Bazel เป็นเครื่องมือที่ทำให้การสร้างและทดสอบซอฟต์แวร์เป็นแบบอัตโนมัติ งานบิลด์ที่รองรับ ได้แก่ การเรียกใช้คอมไพเลอร์และลิงเกอร์เพื่อสร้างโปรแกรมและไลบรารีที่ปฏิบัติการได้ รวมถึงการประกอบแพ็กเกจที่ทำให้ใช้งานได้สำหรับ Android, iOS และสภาพแวดล้อมเป้าหมายอื่นๆ Bazel มีลักษณะคล้ายกับเครื่องมืออื่นๆ เช่น Make, Ant, Gradle, Buck, Pants และ Maven

Bazel มีอะไรพิเศษ

Bazel ได้รับการออกแบบมาให้เหมาะกับวิธีพัฒนาซอฟต์แวร์ที่ Google โดยมีฟีเจอร์ดังนี้

  • การรองรับหลายภาษา: Bazel รองรับ หลายภาษา และสามารถขยายเพื่อรองรับภาษาโปรแกรมที่กำหนดเองได้
  • ภาษาการสร้างระดับสูง: โปรเจ็กต์อธิบายไว้ในภาษา BUILD ซึ่งเป็นรูปแบบข้อความที่กระชับซึ่งอธิบายโปรเจ็กต์เป็นชุดของไลบรารี ไบนารี และการทดสอบขนาดเล็กที่เชื่อมต่อกัน ในทางตรงกันข้าม เครื่องมืออย่าง Make กำหนดให้คุณต้องอธิบายไฟล์แต่ละไฟล์และการเรียกใช้คอมไพเลอร์
  • การรองรับหลายแพลตฟอร์ม: คุณสามารถใช้เครื่องมือและไฟล์ BUILD เดียวกันเพื่อสร้างซอฟต์แวร์สำหรับสถาปัตยกรรมต่างๆ และแม้แต่แพลตฟอร์มต่างๆ ที่ Google เราใช้ Bazel เพื่อสร้างทุกอย่างตั้งแต่แอปพลิเคชันเซิร์ฟเวอร์ที่ทำงานบนระบบในศูนย์ข้อมูลไปจนถึงแอปของไคลเอ็นต์ที่ทำงานบนโทรศัพท์มือถือ
  • ความสามารถในการสร้างซ้ำ: ในไฟล์ BUILD ไลบรารี การทดสอบ และไบนารีแต่ละรายการต้องระบุการขึ้นต่อกันโดยตรงอย่างครบถ้วน Bazel ใช้ข้อมูลทรัพยากร Dependency นี้เพื่อทราบว่าต้องสร้างใหม่เมื่อใดที่คุณทำการเปลี่ยนแปลงไฟล์ต้นฉบับ และงานใดที่สามารถทำงานแบบขนานกันได้ ซึ่งหมายความว่าการสร้างทั้งหมดจะเป็นแบบเพิ่มขึ้นและจะให้ผลลัพธ์เดียวกันเสมอ
  • ความสามารถในการปรับขนาด: Bazel สามารถจัดการบิลด์ขนาดใหญ่ได้ ที่ Google ไบนารีเซิร์ฟเวอร์มักจะมีไฟล์ต้นฉบับ 100,000 ไฟล์ และบิลด์ที่ไม่มีการเปลี่ยนแปลงไฟล์จะใช้เวลาประมาณ 200 มิลลิวินาที

เหตุใด Google จึงไม่ใช้...

  • Make, Ninja: เครื่องมือเหล่านี้ให้การควบคุมที่แม่นยำมากเกี่ยวกับคำสั่งที่จะเรียกใช้เพื่อสร้างไฟล์ แต่ผู้ใช้ต้องเป็นผู้เขียนกฎที่ถูกต้อง
    • ผู้ใช้โต้ตอบกับ Bazel ในระดับที่สูงขึ้น ตัวอย่างเช่น Bazel มีกฎในตัวสำหรับ "การทดสอบ Java", "ไบนารี C++" และแนวคิดต่างๆ เช่น "แพลตฟอร์มเป้าหมาย" และ "แพลตฟอร์มโฮสต์" กฎเหล่านี้ได้รับการทดสอบอย่างเข้มงวดแล้วว่าใช้งานได้แน่นอน
  • Ant และ Maven: Ant และ Maven มุ่งเน้นไปที่ Java เป็นหลัก ขณะที่ Bazel จัดการได้หลายภาษา Bazel สนับสนุนให้แบ่งฐานของโค้ดออกเป็นหน่วยเล็กๆ ที่นำกลับมาใช้ใหม่ได้ และสามารถสร้างใหม่เฉพาะหน่วยที่ต้องสร้างใหม่เท่านั้น ซึ่งจะช่วยเร่งการพัฒนาเมื่อทำงานกับฐานของโค้ดขนาดใหญ่
  • Gradle: ไฟล์การกำหนดค่าของ Bazel มีโครงสร้างมากกว่าของ Gradle มาก ซึ่งช่วยให้ Bazel เข้าใจได้อย่างชัดเจนว่าการดำเนินการแต่ละอย่างทำอะไร ซึ่งช่วยให้สามารถทำงานแบบขนานได้มากขึ้นและสร้างซ้ำได้ดีขึ้น
  • Pants, Buck: เครื่องมือทั้ง 2 รายการนี้สร้างและพัฒนาโดยอดีตพนักงานของ Google ที่ Twitter และ Foursquare รวมถึง Facebook ตามลำดับ โดยมีต้นแบบมาจาก Bazel แต่ชุดฟีเจอร์แตกต่างกัน จึงไม่ใช่ทางเลือกที่เหมาะสมสำหรับเรา

Bazel มาจากไหน

Bazel เป็นเครื่องมือเวอร์ชันหนึ่งที่ Google ใช้เพื่อสร้างซอฟต์แวร์เซิร์ฟเวอร์ภายใน และได้ขยายขอบเขตไปสร้างซอฟต์แวร์อื่นๆ ด้วย เช่น แอปบนอุปกรณ์เคลื่อนที่ (iOS, Android) ที่เชื่อมต่อกับเซิร์ฟเวอร์ของเรา

คุณได้เขียนเครื่องมือภายในใหม่เป็นโอเพนซอร์สไหม หรือเป็น Fork

Bazel แชร์โค้ดส่วนใหญ่กับเครื่องมือภายใน และกฎของเครื่องมือนี้ใช้สำหรับการสร้างนับล้านรายการทุกวัน

เหตุใด Google จึงสร้าง Bazel

เมื่อนานมาแล้ว Google สร้างซอฟต์แวร์โดยใช้ Makefiles ขนาดใหญ่ที่สร้างขึ้น ซึ่งทำให้การสร้างช้าและไม่น่าเชื่อถือ และเริ่มส่งผลต่อประสิทธิภาพการทำงานของนักพัฒนาแอปและความคล่องตัวของบริษัท Bazel จึงเป็นวิธีแก้ปัญหาเหล่านี้

Bazel ต้องใช้คลัสเตอร์การสร้างไหม

Bazel เรียกใช้การดำเนินการบิลด์ในเครื่องโดยค่าเริ่มต้น อย่างไรก็ตาม Bazel ยังเชื่อมต่อกับคลัสเตอร์การสร้างเพื่อการสร้างและการทดสอบที่เร็วยิ่งขึ้นได้ด้วย ดูรายละเอียดเพิ่มเติมได้ในเอกสารประกอบเกี่ยวกับการดำเนินการและการแคชระยะไกล รวมถึงการแคชระยะไกล

กระบวนการพัฒนาของ Google ทำงานอย่างไร

สำหรับฐานของโค้ดเซิร์ฟเวอร์ เราใช้เวิร์กโฟลว์การพัฒนาต่อไปนี้

  • โค้ดเซิร์ฟเวอร์ทั้งหมดของเราอยู่ในระบบควบคุมเวอร์ชันขนาดใหญ่เพียงระบบเดียว
  • ทุกคนสร้างซอฟต์แวร์ด้วย Bazel
  • ทีมต่างๆ เป็นเจ้าของส่วนต่างๆ ของแผนผังต้นฉบับ และทำให้คอมโพเนนต์ของตนพร้อมใช้งานเป็นเป้าหมาย BUILD
  • การแยกสาขาใช้เพื่อจัดการการเผยแพร่เป็นหลัก ดังนั้นทุกคนจึงพัฒนาซอฟต์แวร์ในเวอร์ชันล่าสุด

Bazel เป็นรากฐานสำคัญของแนวคิดนี้ เนื่องจาก Bazel กำหนดให้ต้องระบุทรัพยากร Dependency ทั้งหมดอย่างครบถ้วน เราจึงคาดการณ์ได้ว่าโปรแกรมและการทดสอบใดบ้างที่จะได้รับผลกระทบจากการเปลี่ยนแปลง และตรวจสอบโปรแกรมและการทดสอบเหล่านั้นก่อนส่ง

ดูข้อมูลพื้นฐานเพิ่มเติมเกี่ยวกับกระบวนการพัฒนาที่ Google ได้ในบล็อก eng tools

เหตุใดคุณจึงเปิดตัว Bazel

การสร้างซอฟต์แวร์ควรเป็นเรื่องสนุกและง่าย การสร้างที่ช้าและคาดเดาไม่ได้ทำให้การเขียนโปรแกรมไม่สนุก

เหตุใดฉันจึงควรใช้ Bazel

  • Bazel อาจช่วยลดเวลาในการสร้างได้เนื่องจากสามารถคอมไพล์ไฟล์ที่ต้องคอมไพล์ใหม่เท่านั้น ในทำนองเดียวกัน เครื่องมือนี้สามารถข้ามการเรียกใช้การทดสอบซ้ำที่ทราบว่าไม่มีการเปลี่ยนแปลง
  • Bazel ให้ผลลัพธ์ที่แน่นอน ซึ่งจะช่วยขจัดความคลาดเคลื่อนระหว่างการสร้างแบบเพิ่มขึ้นและการสร้างใหม่ทั้งหมด แล็ปท็อปและระบบ CI เป็นต้น
  • Bazel สามารถสร้างแอปของไคลเอ็นต์และเซิร์ฟเวอร์ต่างๆ ด้วยเครื่องมือเดียวกันจากพื้นที่ทำงานเดียวกัน ตัวอย่างเช่น คุณสามารถเปลี่ยนโปรโตคอลของไคลเอ็นต์/เซิร์ฟเวอร์ในการคอมมิตครั้งเดียว และทดสอบว่าแอปบนอุปกรณ์เคลื่อนที่ที่อัปเดตแล้วทำงานร่วมกับเซิร์ฟเวอร์ที่อัปเดตแล้วได้หรือไม่ โดยสร้างทั้ง 2 อย่างด้วยเครื่องมือเดียวกัน และได้รับประโยชน์ทั้งหมดที่กล่าวถึงข้างต้นจาก Bazel

ฉันดูตัวอย่างได้ไหม

ได้ ดูตัวอย่างง่ายๆ หรืออ่านซอร์สโค้ดของ Bazel เพื่อดูตัวอย่างที่ซับซ้อนมากขึ้น

Bazel เหมาะกับงานใดมากที่สุด

Bazel เหมาะอย่างยิ่งสำหรับการสร้างและทดสอบโปรเจ็กต์ที่มีคุณสมบัติดังต่อไปนี้

  • โปรเจ็กต์ที่มีฐานของโค้ดขนาดใหญ่
  • โปรเจ็กต์ที่เขียนด้วยภาษาที่คอมไพล์แล้ว (หลายภาษา)
  • โปรเจ็กต์ที่ทำให้ใช้งานได้ในหลายแพลตฟอร์ม
  • โปรเจ็กต์ที่มีการทดสอบอย่างละเอียด

ฉันจะเรียกใช้ Bazel ได้ที่ใด

Bazel ทำงานบน Linux, macOS (OS X) และ Windows

การพอร์ตไปยังแพลตฟอร์ม UNIX อื่นๆ ควรทำได้ง่ายพอสมควร ตราบใดที่แพลตฟอร์มนั้นมี JDK

ฉันไม่ควรใช้ Bazel กับงานใด

  • Bazel พยายามแคชอย่างชาญฉลาด ซึ่งหมายความว่าเครื่องมือนี้ไม่เหมาะสำหรับการเรียกใช้การดำเนินการสร้างที่มีเอาต์พุตที่ไม่ควรแคช ตัวอย่างเช่น ไม่ควรเรียกใช้ขั้นตอนต่อไปนี้จาก Bazel
    • ขั้นตอนการคอมไพล์ที่ดึงข้อมูลจากอินเทอร์เน็ต
    • ขั้นตอนการทดสอบที่เชื่อมต่อกับอินสแตนซ์ QA ของเว็บไซต์
    • ขั้นตอนการทำให้ใช้งานได้ที่เปลี่ยนการกำหนดค่าระบบคลาวด์ของเว็บไซต์
  • หากบิลด์ของคุณประกอบด้วยขั้นตอนที่ยาวและต่อเนื่องกัน 2-3 ขั้นตอน Bazel อาจช่วยได้ไม่มากนัก คุณจะได้รับความเร็วมากขึ้นโดยการแบ่งขั้นตอนที่ยาวออกเป็นเป้าหมายที่แยกกันและเล็กลง ซึ่ง Bazel สามารถเรียกใช้แบบขนานได้

ชุดฟีเจอร์ของ Bazel มีความเสถียรเพียงใด

ฟีเจอร์หลัก (กฎ C++, Java และ Shell) มีการใช้งานอย่างกว้างขวางภายใน Google ดังนั้นจึงได้รับการทดสอบอย่างละเอียดและมีการเปลี่ยนแปลงน้อยมาก ในทำนองเดียวกัน เราทดสอบ Bazel เวอร์ชันใหม่กับเป้าหมายหลายแสนรายการทุกวันเพื่อค้นหาการถดถอย และเผยแพร่เวอร์ชันใหม่หลายครั้งทุกเดือน

กล่าวโดยสรุปคือ Bazel ควรทำงานได้ดี ยกเว้นฟีเจอร์ที่ทำเครื่องหมายว่าอยู่ในช่วงทดลอง การเปลี่ยนแปลงกฎที่ไม่ใช่ช่วงทดลองจะเข้ากันได้กับเวอร์ชันก่อนหน้า ดูรายการสถานะการรองรับฟีเจอร์โดยละเอียดได้ในเอกสารการสนับสนุน

Bazel มีความเสถียรเพียงใดในฐานะไบนารี

ภายใน Google เราตรวจสอบว่า Bazel ไม่ล่มบ่อย และควรเป็นเช่นเดียวกันกับฐานของโค้ดโอเพนซอร์สของเรา

ฉันจะเริ่มใช้ Bazel ได้อย่างไร

ดูหัวข้อ เริ่มต้นใช้งาน

Docker แก้ปัญหาความสามารถในการสร้างซ้ำได้ไหม

Docker ช่วยให้คุณสร้างแซนด์บ็อกซ์ที่มีการเผยแพร่ระบบปฏิบัติการแบบคงที่ได้ง่ายๆ เช่น Ubuntu 12.04, Fedora 21 ซึ่งจะแก้ปัญหาความสามารถในการสร้างซ้ำสำหรับสภาพแวดล้อมของระบบ นั่นคือ "ฉันต้องใช้ /usr/bin/c++ เวอร์ชันใด"

Docker ไม่ได้แก้ปัญหาความสามารถในการสร้างซ้ำที่เกี่ยวข้องกับการเปลี่ยนแปลงในซอร์สโค้ด การเรียกใช้ Make ด้วย Makefile ที่เขียนไม่สมบูรณ์ภายในคอนเทนเนอร์ Docker อาจยังให้ผลลัพธ์ที่คาดเดาไม่ได้

ภายใน Google เราตรวจสอบเครื่องมือในการควบคุมซอร์สโค้ดเพื่อความสามารถในการสร้างซ้ำ ด้วยวิธีนี้ เราจึงตรวจสอบการเปลี่ยนแปลงเครื่องมือ ("อัปเกรด GCC เป็น 4.6.1") ด้วยกลไกเดียวกับการเปลี่ยนแปลงไลบรารีพื้นฐาน ("แก้ไขการตรวจสอบขอบเขตใน OpenSSL")

ฉันสร้างไบนารีเพื่อทำให้ใช้งานได้ใน Docker ได้ไหม

Bazel ช่วยให้คุณสร้างไบนารีแบบสแตนด์อโลนที่ลิงก์แบบคงที่ใน C/C++ และไฟล์ JAR แบบรวมทุกอย่างไว้ในไฟล์เดียวสำหรับ Java ได้ ซึ่งจะทำงานโดยมีการขึ้นต่อกันน้อยมากในระบบ UNIX ปกติ และจึงควรติดตั้งภายในคอนเทนเนอร์ Docker ได้ง่าย

Bazel มีกฎสำหรับการจัดโครงสร้างโปรแกรมที่ซับซ้อนมากขึ้น เช่น โปรแกรม Java ที่ใช้ไฟล์ข้อมูลชุดหนึ่ง หรือเรียกใช้โปรแกรมอื่นเป็นกระบวนการย่อย คุณสามารถแพ็กเกจสภาพแวดล้อมดังกล่าวเป็นไฟล์เก็บถาวรแบบสแตนด์อโลน เพื่อให้สามารถทำให้ใช้งานได้ในระบบต่างๆ รวมถึงอิมเมจ Docker

ฉันสร้างอิมเมจ Docker ด้วย Bazel ได้ไหม

ได้ คุณสามารถใช้กฎ Docker ของเราเพื่อสร้างอิมเมจ Docker ที่สร้างซ้ำได้

Bazel จะทำให้การสร้างของฉันสร้างซ้ำได้โดยอัตโนมัติไหม

สำหรับไบนารี Java และ C++ จะเป็นเช่นนั้น หากคุณไม่เปลี่ยน Toolchain หากคุณมีขั้นตอนการบิลด์ที่เกี่ยวข้องกับสูตรที่กำหนดเอง (เช่น การเรียกใช้ไบนารีผ่านสคริปต์ของ Shell ภายในกฎ) คุณจะต้องระมัดระวังเป็นพิเศษดังนี้

  • อย่าใช้การขึ้นต่อกันที่ไม่ได้ประกาศ การดำเนินการแบบแซนด์บ็อกซ์ (--spawn_strategy=sandboxed ใน Linux เท่านั้น) สามารถช่วยค้นหาการขึ้นต่อกันที่ไม่ได้ประกาศ
  • หลีกเลี่ยงการจัดเก็บการประทับเวลาและรหัสผู้ใช้ในไฟล์ที่สร้างขึ้น ไฟล์ ZIP และไฟล์เก็บถาวรอื่นๆ มีแนวโน้มที่จะเกิดปัญหานี้เป็นพิเศษ
  • หลีกเลี่ยงการเชื่อมต่อกับเครือข่าย การดำเนินการแบบแซนด์บ็อกซ์ก็ช่วยได้เช่นกัน
  • หลีกเลี่ยงกระบวนการที่ใช้ตัวเลขสุ่ม โดยเฉพาะอย่างยิ่งการข้ามผ่านพจนานุกรมจะสุ่มในภาษาโปรแกรมหลายภาษา

คุณมีการเผยแพร่ไบนารีไหม

มี คุณดูไบนารีเวอร์ชันล่าสุด และอ่านนโยบายการเผยแพร่ ได้

ฉันใช้ Eclipse/IntelliJ/XCode Bazel ทำงานร่วมกับ IDE ได้อย่างไร

สำหรับ IntelliJ โปรดดูปลั๊กอิน IntelliJ with Bazel

สำหรับ XCode โปรดดู Tulsi

สำหรับ Eclipse โปรดดู ปลั๊กอิน E4B

สำหรับ IDE อื่นๆ โปรดดูที่ บล็อกโพสต์ เกี่ยวกับวิธีการทำงานของปลั๊กอินเหล่านี้

ฉันใช้ Jenkins/CircleCI/TravisCI Bazel ทำงานร่วมกับระบบ CI ได้อย่างไร

Bazel จะแสดงรหัสออกที่ไม่ใช่ 0 หากการเรียกใช้การสร้างหรือการทดสอบล้มเหลว ซึ่งควรเพียงพอสำหรับการผสานรวม CI ขั้นพื้นฐาน เนื่องจาก Bazel ไม่จำเป็นต้องสร้างใหม่ทั้งหมดเพื่อให้ถูกต้อง ระบบ CI จึงไม่ควรได้รับการกำหนดค่าให้สร้างใหม่ทั้งหมดก่อนเริ่มการเรียกใช้การสร้าง/การทดสอบ

ดูรายละเอียดเพิ่มเติมเกี่ยวกับรหัสออกได้ใน คู่มือผู้ใช้

เราคาดหวังฟีเจอร์ใดได้บ้างในอนาคตจาก Bazel

ดูแผนงานของเรา

ฉันใช้ Bazel กับโปรเจ็กต์ INSERT LANGUAGE HERE ได้ไหม

Bazel สามารถขยายได้ ทุกคนสามารถเพิ่มการรองรับภาษาใหม่ได้ Bazel รองรับหลายภาษา โปรดดูรายการคำแนะนำในสารานุกรมการสร้าง และดูรายการที่ครอบคลุมมากขึ้นได้ที่ awesomebazel.com

หากต้องการพัฒนาส่วนขยายหรือดูวิธีการทำงาน โปรดดูเอกสารประกอบสำหรับการขยาย Bazel

ฉันร่วมสร้างฐานของโค้ด Bazel ได้ไหม

โปรดดูหลักเกณฑ์การร่วมสร้าง

เหตุใดการพัฒนาทั้งหมดจึงไม่ดำเนินการแบบเปิด

เรายังต้องปรับโครงสร้างอินเทอร์เฟซระหว่างโค้ดสาธารณะใน Bazel กับส่วนขยายภายในของเราบ่อยๆ ซึ่งทำให้การพัฒนาแบบเปิดทำได้ยาก

คุณเปิดซอร์สโค้ด Bazel เสร็จแล้วใช่ไหม

การเปิดซอร์สโค้ด Bazel ยังอยู่ระหว่างดำเนินการ โดยเฉพาะอย่างยิ่ง เรายังคงดำเนินการเปิดซอร์สโค้ดต่อไปนี้

  • การทดสอบหน่วยและการทดสอบการผสานรวมหลายรายการ (ซึ่งจะช่วยให้การร่วมสร้างแพตช์ง่ายขึ้น)
  • การผสานรวม IDE แบบเต็ม

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

มีส่วนใดของ Bazel ที่จะไม่มีการเปิดซอร์สโค้ดไหม

มี ฐานของโค้ดบางส่วนผสานรวมกับเทคโนโลยีเฉพาะของ Google หรือเรากำลังหาเหตุผลที่จะกำจัด (หรือเป็นส่วนผสมของทั้ง 2 อย่าง) ฐานของโค้ดส่วนเหล่านี้ไม่พร้อมใช้งานใน GitHub และอาจไม่มีให้ใช้งานเลย

ฉันจะติดต่อทีมได้อย่างไร

คุณติดต่อเราได้ที่ bazel-discuss@googlegroups.com

ฉันจะรายงานข้อบกพร่องได้ที่ใด

เปิดปัญหา ใน GitHub

คำว่า "Blaze" ในฐานของโค้ดคืออะไร

นี่เป็นชื่อภายในของเครื่องมือ โปรดเรียกเครื่องมือนี้ว่า Bazel

เหตุใดโปรเจ็กต์อื่นๆ ของ Google (Android, Chrome) จึงใช้เครื่องมือสร้างอื่นๆ

จนกว่าจะมีการเผยแพร่ครั้งแรก (อัลฟ่า) Bazel ยังไม่พร้อมใช้งานภายนอก ดังนั้นโปรเจ็กต์โอเพนซอร์ส เช่น Chromium และ Android จึงใช้เครื่องมือนี้ไม่ได้ นอกจากนี้ การไม่รองรับ Windows ในตอนแรกยังเป็นปัญหาสำหรับการสร้างแอปพลิเคชัน Windows เช่น Chrome เนื่องจากโครงการมีความสมบูรณ์และเสถียรมากขึ้น โครงการโอเพนซอร์ส Android จึงอยู่ระหว่างการย้ายข้อมูลไปยัง Bazel

คำว่า "Bazel" ออกเสียงอย่างไร

ออกเสียงเหมือนคำว่า "basil" (สมุนไพร) ในภาษาอังกฤษแบบสหรัฐอเมริกาว่า "BAY-zel" ซึ่งคล้องจองกับคำว่า "hazel" IPA: /ˈbeɪzˌəl/