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

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

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" ในโค้ดเบสคืออะไร

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

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

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

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

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