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

หากคุณมีคำถามหรือต้องการความช่วยเหลือ โปรดดูที่การรับความช่วยเหลือ

บาเซลคืออะไร

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

บาเซลพิเศษอย่างไร

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

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

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

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

บาเซลมาจากไหน

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

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

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

ทำไม Google จึงสร้าง Bazel ขึ้นมา

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

Bazel ต้องใช้คลัสเตอร์บิลด์ไหม

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

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

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

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

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

ดูประวัติเพิ่มเติมเกี่ยวกับกระบวนการพัฒนาของ Google ได้ที่บล็อกเครื่องมือภาษาอังกฤษ

ทำไมถึงเปิด Bazel ขึ้นมา

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

ทำไมฉันจึงควรใช้ Bazel

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

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

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

บาเซิลอยู่ที่ไหนที่ดีที่สุด

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

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

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

Bazel ใช้งานได้ใน Linux, macOS (OS X) และ Windows

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

ฉันไม่ควรใช้ 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 ไม่ได้แก้ไขปัญหาการทำซ้ำที่เกี่ยวข้องกับการเปลี่ยนแปลงในซอร์สโค้ด การเรียกใช้ "สร้าง" ด้วย Makefile ที่เขียนไม่ถูกต้องภายในคอนเทนเนอร์ Docker อาจยังคงให้ผลลัพธ์ที่คาดเดาไม่ได้

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

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

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

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

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

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

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

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

  • อย่าใช้การอ้างอิงที่ไม่ได้ประกาศไว้ การดำเนินการแซนด์บ็อกซ์ (–spawn_strategy=sandboxed เฉพาะบน Linux) จะช่วยค้นหาทรัพยากร Dependency ที่ไม่ได้ประกาศได้
  • หลีกเลี่ยงการจัดเก็บการประทับเวลาและรหัสผู้ใช้ในไฟล์ที่สร้างขึ้น โดยเฉพาะไฟล์ 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 สําหรับโปรเจ็กต์ "แทรกภาษาที่นี่" ได้ไหม

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

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

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

ดูหลักเกณฑ์การสนับสนุน

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

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

Bazel ทำโอเพนซอร์สเรียบร้อยแล้วหรือยัง

Bazel สำหรับโอเพนซอร์สยังอยู่ระหว่างการพัฒนา โดยเฉพาะอย่างยิ่ง เรายังคงดำเนินการเกี่ยวกับการจัดหาแบบโอเพนซอร์สอยู่ ดังนี้

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

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

มีส่วนต่างๆ ของ Bazel ที่จะไม่มีการทำให้เป็นแบบโอเพนซอร์สหรือไม่

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

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

สามารถติดต่อได้ที่ bazel-discuss@googlegroups.com

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

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

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

นี่คือชื่อภายในสำหรับเครื่องมือนี้ โปรดเรียก Bazel ว่า Bazel

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

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

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

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