หากมีข้อสงสัยหรือต้องการความช่วยเหลือ โปรดดูหัวข้อ รับความช่วยเหลือ
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/