अक्सर पूछे जाने वाले सवाल

अगर आपको कुछ पूछना है या मदद चाहिए, तो मदद पाना लेख पढ़ें.

Bazel क्या है?

Bazel एक ऐसा टूल है जो सॉफ़्टवेयर बनाने और उनकी जांच करने की प्रोसेस को ऑटोमेट करता है. बिल्ड टास्क में, एक्ज़ीक्यूटेबल प्रोग्राम और लाइब्रेरी बनाने के लिए कंपाइलर और लिंकर्स को चलाना शामिल है. साथ ही, Android, iOS, और अन्य टारगेट एनवायरमेंट के लिए डिप्लॉय किए जा सकने वाले पैकेज को असेंबल करना भी शामिल है. Bazel, Make, Ant, Gradle, Buck, Pants, और Maven जैसे अन्य टूल की तरह ही है.

Bazel की क्या खासियत है?

Bazel को Google में सॉफ़्टवेयर डेवलपमेंट के तरीके के हिसाब से डिज़ाइन किया गया है. इसमें ये सुविधाएं मिलती हैं:

  • कई भाषाओं में उपलब्ध: Bazel कई भाषाओं के साथ काम करता है. साथ ही, इसे किसी भी प्रोग्रामिंग भाषा के साथ काम करने के लिए बढ़ाया जा सकता है.
  • बिल्ड की भाषा: प्रोजेक्ट के बारे में BUILD भाषा में बताया जाता है. यह एक छोटा टेक्स्ट फ़ॉर्मैट है. इसमें प्रोजेक्ट को आपस में जुड़ी छोटी-छोटी लाइब्रेरी, बाइनरी, और टेस्ट के सेट के तौर पर बताया जाता है. इसके उलट, Make जैसे टूल में आपको हर फ़ाइल और कंपाइलर इनवोकेशन के बारे में बताना होता है.
  • एक से ज़्यादा प्लैटफ़ॉर्म पर काम करता है: एक ही टूल और एक ही BUILD फ़ाइलों का इस्तेमाल, अलग-अलग आर्किटेक्चर और अलग-अलग प्लैटफ़ॉर्म के लिए सॉफ़्टवेयर बनाने के लिए किया जा सकता है. Google में, हम Bazel का इस्तेमाल करके, डेटा सेंटर के सिस्टम पर चलने वाले सर्वर ऐप्लिकेशन से लेकर मोबाइल फ़ोन पर चलने वाले क्लाइंट ऐप्लिकेशन तक, हर चीज़ बनाते हैं.
  • दोहराने की क्षमता: BUILD फ़ाइलों में, हर लाइब्रेरी, टेस्ट, और बाइनरी को अपनी सीधी डिपेंडेंसी के बारे में पूरी जानकारी देनी होगी. Bazel इस डिपेंडेंसी की जानकारी का इस्तेमाल यह जानने के लिए करता है कि सोर्स फ़ाइल में बदलाव करने पर, किन फ़ाइलों को फिर से बनाना होगा. साथ ही, किन टास्क को एक साथ चलाया जा सकता है. इसका मतलब है कि सभी बिल्ड, इंक्रीमेंटल होते हैं और हमेशा एक जैसा नतीजा देते हैं.
  • स्केल करने की सुविधा: Bazel, बड़े बिल्ड को मैनेज कर सकता है. Google में, सर्वर बाइनरी में 1,00,000 सोर्स फ़ाइलें होना आम बात है. साथ ही, जिन बिल्ड में कोई फ़ाइल नहीं बदली गई है उन्हें बनाने में करीब 200 मि॰से॰ लगते हैं.

Google, ... का इस्तेमाल क्यों नहीं करता?

  • Make, Ninja: ये टूल, फ़ाइलें बनाने के लिए इस्तेमाल किए जाने वाले निर्देशों को बहुत सटीक तरीके से कंट्रोल करते हैं. हालांकि, सही नियम लिखने की ज़िम्मेदारी उपयोगकर्ता की होती है.
    • उपयोगकर्ता, Bazel के साथ ज़्यादा इंटरैक्ट करते हैं. उदाहरण के लिए, Bazel में "Java test", "C++ binary" के लिए पहले से मौजूद नियम हैं. साथ ही, "target platform" और "host platform" जैसी धारणाएं भी हैं. इन नियमों को कई बार आज़माया गया है, ताकि यह पक्का किया जा सके कि ये पूरी तरह से सही हैं.
  • Ant और Maven: Ant और Maven मुख्य रूप से Java के लिए बनाए गए हैं. वहीं, Bazel कई भाषाओं को हैंडल करता है. Bazel, कोडबेस को छोटे-छोटे ऐसे हिस्सों में बांटने का सुझाव देता है जिनका फिर से इस्तेमाल किया जा सकता है. साथ ही, यह सिर्फ़ उन हिस्सों को फिर से बनाता है जिन्हें फिर से बनाने की ज़रूरत होती है. इससे बड़े कोडबेस के साथ काम करते समय, डेवलपमेंट की प्रोसेस तेज़ हो जाती है.
  • Gradle: Bazel की कॉन्फ़िगरेशन फ़ाइलें, Gradle की तुलना में ज़्यादा स्ट्रक्चर्ड होती हैं. इससे Bazel को यह समझने में मदद मिलती है कि हर कार्रवाई क्या करती है. इससे ज़्यादा पैरललिज़्म और बेहतर रिप्रोड्यूसिबिलिटी मिलती है.
  • Pants, Buck: इन दोनों टूल को Twitter, Foursquare, और Facebook के पूर्व कर्मचारियों ने बनाया और डेवलप किया है. इन्हें Bazel के आधार पर बनाया गया है, लेकिन इनकी सुविधाओं के सेट अलग-अलग हैं. इसलिए, ये हमारे लिए सही विकल्प नहीं हैं.

Bazel कहां से आया?

Bazel, Google के टूल का एक वर्शन है. Google इसका इस्तेमाल, सर्वर सॉफ़्टवेयर को इंटरनल तौर पर बनाने के लिए करता है. अब इसका इस्तेमाल, अन्य सॉफ़्टवेयर बनाने के लिए भी किया जाता है. जैसे, मोबाइल ऐप्लिकेशन (iOS, Android), जो हमारे सर्वर से कनेक्ट होते हैं.

क्या आपने अपने इंटरनल टूल को ओपन-सोर्स के तौर पर फिर से लिखा है? क्या यह फ़ोर्क है?

Bazel, अपने ज़्यादातर कोड को इंटरनल टूल के साथ शेयर करता है. साथ ही, इसके नियमों का इस्तेमाल हर दिन लाखों बिल्ड के लिए किया जाता है.

Google ने Bazel क्यों बनाया?

बहुत समय पहले, Google ने अपने सॉफ़्टवेयर को बनाने के लिए, जनरेट की गई बड़ी मेकफ़ाइलों का इस्तेमाल किया था. इस वजह से, बिल्ड धीरे-धीरे और भरोसेमंद तरीके से तैयार नहीं हो पाते थे. इससे हमारे डेवलपर की काम करने की क्षमता और कंपनी की तेज़ी से काम करने की क्षमता पर असर पड़ने लगा. Bazel की मदद से, इन समस्याओं को हल किया जा सकता है.

क्या Bazel को बिल्ड क्लस्टर की ज़रूरत होती है?

Bazel, डिफ़ॉल्ट रूप से बिल्ड ऑपरेशन को स्थानीय तौर पर चलाता है. हालांकि, Bazel को बिल्ड क्लस्टर से भी कनेक्ट किया जा सकता है, ताकि बिल्ड और टेस्ट और भी तेज़ी से किए जा सकें. ज़्यादा जानकारी के लिए, रिमोट एक्ज़ीक्यूशन और कैश मेमोरी और रिमोट कैश मेमोरी के बारे में हमारा दस्तावेज़ देखें.

Google की डेवलपमेंट प्रोसेस कैसे काम करती है?

हम अपने सर्वर कोडबेस के लिए, डेवलपमेंट का यह वर्कफ़्लो इस्तेमाल करते हैं:

  • हमारा पूरा सर्वर कोड, एक ही बड़े वर्शन कंट्रोल सिस्टम में होता है.
  • सभी लोग Bazel की मदद से अपना सॉफ़्टवेयर बनाते हैं.
  • अलग-अलग टीमें, सोर्स ट्री के अलग-अलग हिस्सों की मालिक होती हैं. साथ ही, वे अपने कॉम्पोनेंट को BUILD टारगेट के तौर पर उपलब्ध कराती हैं.
  • ब्रांचिंग का इस्तेमाल मुख्य रूप से रिलीज़ को मैनेज करने के लिए किया जाता है. इसलिए, सभी लोग हेड रिविज़न पर अपना सॉफ़्टवेयर डेवलप करते हैं.

Bazel इस सिद्धांत का मुख्य आधार है: Bazel के लिए, सभी डिपेंडेंसी के बारे में पूरी जानकारी देना ज़रूरी है. इसलिए, हम यह अनुमान लगा सकते हैं कि किसी बदलाव से कौनसे प्रोग्राम और टेस्ट प्रभावित हुए हैं. साथ ही, सबमिट करने से पहले उनकी जांच कर सकते हैं.

Google में डेवलपमेंट प्रोसेस के बारे में ज़्यादा जानकारी, eng tools ब्लॉग पर मिल सकती है.

आपने Bazel क्यों खोला?

सॉफ़्टवेयर बनाना मज़ेदार और आसान होना चाहिए. बिल्ड के धीमे और अनुमान न लगाए जा सकने वाले समय की वजह से, प्रोग्रामिंग में मज़ा नहीं आता.

मुझे Bazel का इस्तेमाल क्यों करना चाहिए?

  • Bazel, बिल्ड करने में कम समय ले सकता है. ऐसा इसलिए, क्योंकि यह सिर्फ़ उन फ़ाइलों को फिर से कंपाइल करता है जिन्हें फिर से कंपाइल करने की ज़रूरत होती है. इसी तरह, यह उन टेस्ट को फिर से चलाने की प्रोसेस को छोड़ सकता है जिनमें कोई बदलाव नहीं हुआ है.
  • Bazel, तय किए गए नतीजे देता है. इससे इंक्रीमेंटल और क्लीन बिल्ड, लैपटॉप और सीआई सिस्टम वगैरह के बीच अंतर नहीं रहता.
  • Bazel, एक ही टूल का इस्तेमाल करके अलग-अलग क्लाइंट और सर्वर ऐप्लिकेशन बना सकता है. इसके लिए, उसे एक ही वर्कस्पेस से डेटा लेना होता है. उदाहरण के लिए, एक ही कमिट में क्लाइंट/सर्वर प्रोटोकॉल को बदला जा सकता है. साथ ही, यह टेस्ट किया जा सकता है कि अपडेट किया गया मोबाइल ऐप्लिकेशन, अपडेट किए गए सर्वर के साथ काम करता है या नहीं. इसके लिए, दोनों को एक ही टूल से बनाया जाता है. इससे, Bazel के ऊपर बताए गए सभी फ़ायदे मिलते हैं.

क्या मुझे उदाहरण दिख सकते हैं?

हां; आसान उदाहरण देखें

इसके अलावा, ज़्यादा मुश्किल उदाहरण के लिए, Bazel का सोर्स कोड पढ़ें.

Bazel किस काम के लिए सबसे अच्छा है?

Bazel, इन प्रॉपर्टी वाले प्रोजेक्ट बनाने और उनकी जांच करने के लिए सबसे अच्छा है:

  • बड़े कोडबेस वाले प्रोजेक्ट
  • कंपाइल की गई (कई) भाषाओं में लिखे गए प्रोजेक्ट
  • ऐसे प्रोजेक्ट जिन्हें कई प्लैटफ़ॉर्म पर डिप्लॉय किया जाता है
  • ऐसे प्रोजेक्ट जिनमें कई तरह के टेस्ट किए गए हों

Bazel को कहां चलाया जा सकता है?

Bazel, Linux, macOS (OS X), और Windows पर काम करता है.

अगर प्लैटफ़ॉर्म के लिए JDK उपलब्ध है, तो इसे अन्य UNIX प्लैटफ़ॉर्म पर पोर्ट करना आसान होना चाहिए.

मुझे Bazel का इस्तेमाल किन कामों के लिए नहीं करना चाहिए?

  • Bazel, कैश मेमोरी को मैनेज करने के लिए स्मार्ट तरीके अपनाता है. इसका मतलब है कि यह उन बिल्ड ऑपरेशन को चलाने के लिए सही नहीं है जिनके आउटपुट को कैश मेमोरी में सेव नहीं किया जाना चाहिए. उदाहरण के लिए, Bazel से ये चरण नहीं चलाने चाहिए:
    • यह कंपाइल करने का एक चरण है, जिसमें इंटरनेट से डेटा फ़ेच किया जाता है.
    • यह एक टेस्ट स्टेप है, जो आपकी साइट के QA इंस्टेंस से कनेक्ट होता है.
    • डिप्लॉयमेंट का एक ऐसा चरण जो आपकी साइट के क्लाउड कॉन्फ़िगरेशन को बदलता है.
  • अगर आपके बिल्ड में कुछ लंबे और क्रमवार चरण शामिल हैं, तो हो सकता है कि Bazel आपकी ज़्यादा मदद न कर पाए. बड़े चरणों को छोटे-छोटे अलग-अलग टारगेट में बांटने से, आपको ज़्यादा स्पीड मिलेगी. Bazel इन टारगेट को एक साथ चला सकता है.

Bazel की सुविधाओं का सेट कितना स्थिर है?

Google में मुख्य सुविधाओं (C++, Java, और शेल के नियम) का बड़े पैमाने पर इस्तेमाल किया जाता है. इसलिए, इनकी अच्छी तरह से जांच की जाती है और इनमें बहुत कम बदलाव होता है. इसी तरह, हम हर दिन लाखों टारगेट पर Bazel के नए वर्शन की जांच करते हैं, ताकि रिग्रेशन का पता लगाया जा सके. साथ ही, हम हर महीने कई बार नए वर्शन रिलीज़ करते हैं.

संक्षेप में कहें, तो एक्सपेरिमेंट के तौर पर उपलब्ध सुविधाओं को छोड़कर, Bazel को ठीक से काम करना चाहिए. एक्सपेरिमेंट से जुड़े नियमों के अलावा अन्य नियमों में किए गए बदलाव, मौजूदा नियमों के साथ काम करेंगे. सुविधाओं के काम करने की स्थिति के बारे में ज़्यादा जानकारी, हमारे सहायता दस्तावेज़ में देखी जा सकती है.

बाइनरी के तौर पर Bazel कितना स्टेबल है?

Google में, हम यह पक्का करते हैं कि Bazel क्रैश होने की घटनाएं बहुत कम हों. यह हमारे ओपन सोर्स कोडबेस पर भी लागू होना चाहिए.

मैं Bazel का इस्तेमाल कैसे शुरू करूं?

शुरू करना लेख पढ़ें.

क्या Docker, नतीजों को दोहराने से जुड़ी समस्याओं को हल नहीं करता है?

Docker की मदद से, ओएस की तय की गई रिलीज़ के साथ आसानी से सैंडबॉक्स बनाए जा सकते हैं. उदाहरण के लिए, Ubuntu 12.04, Fedora 21. इससे सिस्टम एनवायरमेंट के लिए, फिर से बनाने की समस्या हल हो जाती है. इसका मतलब है कि "मुझे /usr/bin/c++ का कौनसा वर्शन चाहिए?"

Docker, सोर्स कोड में हुए बदलावों के हिसाब से, दोबारा बनाने की सुविधा नहीं देता है. Docker कंटेनर में, Make को ऐसे Makefile के साथ चलाने पर भी अनचाहे नतीजे मिल सकते हैं जिसे सही तरीके से नहीं लिखा गया है.

Google में, हम टूल को सोर्स कंट्रोल में शामिल करते हैं, ताकि उन्हें फिर से बनाया जा सके. इस तरह, हम टूल ("GCC को 4.6.1 पर अपग्रेड करें") में किए गए बदलावों की जांच, उसी तरीके से कर सकते हैं जिस तरीके से बुनियादी लाइब्रेरी ("OpenSSL में बाउंड्री की जांच से जुड़ी समस्या ठीक करें") में किए गए बदलावों की जांच की जाती है.

क्या Docker पर डिप्लॉय करने के लिए बाइनरी बनाई जा सकती हैं?

Bazel की मदद से, C/C++ में अलग से स्टैटिक तौर पर लिंक की गई बाइनरी और Java के लिए, खुद में शामिल जार फ़ाइलें बनाई जा सकती हैं. ये सामान्य UNIX सिस्टम पर कुछ डिपेंडेंसी के साथ काम करते हैं. इसलिए, इन्हें Docker कंटेनर में आसानी से इंस्टॉल किया जा सकता है.

Bazel में ज़्यादा जटिल प्रोग्राम को स्ट्रक्चर करने के लिए, कुछ नियम होते हैं. उदाहरण के लिए, एक Java प्रोग्राम जो डेटा फ़ाइलों के सेट का इस्तेमाल करता है या किसी अन्य प्रोग्राम को सबप्रोसेस के तौर पर चलाता है. ऐसे एनवायरमेंट को स्टैंडअलोन आर्काइव के तौर पर पैकेज किया जा सकता है, ताकि उन्हें Docker इमेज के साथ-साथ अलग-अलग सिस्टम पर डिप्लॉय किया जा सके.

क्या Bazel की मदद से Docker इमेज बनाई जा सकती हैं?

हां, Docker के नियमों का इस्तेमाल करके, दोबारा बनाई जा सकने वाली Docker इमेज बनाई जा सकती हैं.

क्या Bazel, मेरी बिल्ड को अपने-आप फिर से जनरेट कर देगा?

हां, Java और C++ बाइनरी के लिए ऐसा किया जा सकता है. हालांकि, इसके लिए आपको टूलचेन में बदलाव नहीं करना होगा. अगर आपके पास कस्टम रेसिपी वाले बिल्ड स्टेप हैं (उदाहरण के लिए, किसी नियम के अंदर शेल स्क्रिप्ट के ज़रिए बाइनरी फ़ाइलें चलाना), तो आपको कुछ बातों का खास ध्यान रखना होगा:

  • ऐसी डिपेंडेंसी का इस्तेमाल न करें जिनके बारे में बताया नहीं गया है. सैंडबॉक्स में एक्ज़ीक्यूट करने की सुविधा (–spawn_strategy=sandboxed, सिर्फ़ Linux पर) से, ऐसी डिपेंडेंसी का पता लगाया जा सकता है जिनके बारे में बताया नहीं गया है.
  • जनरेट की गई फ़ाइलों में, टाइमस्टैंप और उपयोगकर्ता आईडी सेव न करें. ZIP फ़ाइलें और अन्य आर्काइव, खास तौर पर इस तरह के हमलों के शिकार होते हैं.
  • नेटवर्क से कनेक्ट न करें. सैंडबॉक्स किए गए एक्ज़ीक्यूशन से भी यहां मदद मिल सकती है.
  • ऐसी प्रोसेस से बचें जिनमें रैंडम नंबर का इस्तेमाल किया जाता है. खास तौर पर, कई प्रोग्रामिंग भाषाओं में डिक्शनरी ट्रैवर्सल को रैंडमाइज़ किया जाता है.

क्या आपके पास बाइनरी रिलीज़ हैं?

हां, आपको रिलीज़ किए गए नए बाइनरी मिल सकते हैं. साथ ही, रिलीज़ करने से जुड़ी हमारी नीति देखी जा सकती है

मैं Eclipse/IntelliJ/XCode का इस्तेमाल करता/करती हूं. Bazel, आईडीई के साथ कैसे काम करता है?

IntelliJ के लिए, IntelliJ with Bazel प्लगिन देखें.

XCode के लिए, Tulsi देखें.

Eclipse के लिए, E4B plugin देखें.

अन्य आईडीई के लिए, इन प्लगिन के काम करने के तरीके के बारे में जानने के लिए, ब्लॉग पोस्ट देखें.

मैं Jenkins/CircleCI/TravisCI का इस्तेमाल करता/करती हूं. Bazel, सीआई सिस्टम के साथ कैसे काम करता है?

अगर बिल्ड या टेस्ट इनवोकेशन पूरा नहीं होता है, तो Bazel एक नॉन-ज़ीरो एक्ज़िट कोड दिखाता है. यह बुनियादी सीआई इंटिग्रेशन के लिए काफ़ी है. Bazel को सही तरीके से काम करने के लिए, क्लीन बिल्ड की ज़रूरत नहीं होती. इसलिए, CI सिस्टम को इस तरह कॉन्फ़िगर नहीं किया जाना चाहिए कि वह बिल्ड या टेस्ट रन शुरू करने से पहले क्लीन करे.

एग्ज़िट कोड के बारे में ज़्यादा जानकारी, उपयोगकर्ता गाइड में दी गई है.

आने वाले समय में, Bazel में कौनसी सुविधाएं मिल सकती हैं?

हमारे रोडमैप देखें.

क्या मैं INSERT LANGUAGE HERE प्रोजेक्ट के लिए Bazel का इस्तेमाल कर सकता/सकती हूं?

Bazel में एक्सटेंशन जोड़े जा सकते हैं. कोई भी व्यक्ति नई भाषाओं के लिए सहायता जोड़ सकता है. कई भाषाओं में सुविधा उपलब्ध है: सुझावों की सूची के लिए, बिल्ड एनसाइक्लोपीडिया देखें. साथ ही, ज़्यादा जानकारी के लिए awesomebazel.com पर जाएं.

अगर आपको एक्सटेंशन डेवलप करने हैं या उनके काम करने के तरीके के बारे में जानना है, तो Bazel को एक्सटेंड करने से जुड़ा दस्तावेज़ देखें.

क्या Bazel के कोडबेस में योगदान दिया जा सकता है?

योगदान करने से जुड़े हमारे दिशा-निर्देश देखें.

सभी डेवलपमेंट को ओपन सोर्स क्यों नहीं किया जाता?

हमें अब भी Bazel में मौजूद सार्वजनिक कोड और अपने इंटरनल एक्सटेंशन के बीच के इंटरफ़ेस को बार-बार रीफ़ैक्टर करना पड़ता है. इससे ओपन सोर्स में ज़्यादा डेवलपमेंट करना मुश्किल हो जाता है.

क्या आपने Bazel को ओपन सोर्स कर दिया है?

Bazel को ओपन सोर्स करने पर काम जारी है. खास तौर पर, हम अब भी ओपन सोर्सिंग पर काम कर रहे हैं:

  • हमारी कई यूनिट और इंटिग्रेशन टेस्ट (जिनसे पैच में योगदान देना आसान हो जाता है).
  • आईडीई के साथ पूरी तरह से इंटिग्रेट किया गया है.

हम चाहते हैं कि कोड के अलावा, कोड की समीक्षा, बग ट्रैकिंग, और डिज़ाइन से जुड़े फ़ैसले भी सार्वजनिक तौर पर लिए जाएं. साथ ही, इनमें Bazel कम्यूनिटी भी शामिल हो. हम अभी इस प्रोसेस को पूरा नहीं कर पाए हैं. इसलिए, कुछ बदलावों के बारे में साफ़ तौर पर बताए बिना, उन्हें Bazel रिपॉज़िटरी में दिखा दिया जाएगा. पारदर्शिता की कमी के बावजूद, हम बाहरी डेवलपर की मदद करना चाहते हैं और उनके साथ मिलकर काम करना चाहते हैं. इसलिए, हम कोड को ओपन सोर्स कर रहे हैं. भले ही, अब भी Google के अंदर कुछ डेवलपमेंट हो रहा हो. अगर आपको कुछ समझ नहीं आ रहा है या आपको लगता है कि कोई फ़ैसला सही नहीं है, तो हमें बताएं. हम ओपन मॉडल पर स्विच कर रहे हैं.

क्या Bazel के कुछ ऐसे हिस्से हैं जिन्हें कभी ओपन सोर्स नहीं किया जाएगा?

हां, कुछ कोडबेस को Google की टेक्नोलॉजी के साथ इंटिग्रेट किया गया है. इसके अलावा, हम कुछ कोडबेस को हटाने का बहाना ढूंढ रहे हैं. ऐसा हो सकता है कि कुछ कोडबेस को Google की टेक्नोलॉजी के साथ इंटिग्रेट किया गया हो और हम उन्हें हटाने का बहाना ढूंढ रहे हों. कोडबेस के ये हिस्से GitHub पर उपलब्ध नहीं हैं. ऐसा हो सकता है कि ये कभी उपलब्ध न हों.

मैं टीम से कैसे संपर्क करूं?

हमसे bazel-discuss@googlegroups.com पर संपर्क किया जा सकता है.

मैं गड़बड़ियों की शिकायत कहां करूं?

GitHub पर कोई समस्या सबमिट करें.

कोडबेस में "Blaze" शब्द का क्या मतलब है?

यह टूल का इंटरनल नाम है. कृपया Blaze को Bazel के तौर पर देखें.

Google के अन्य प्रोजेक्ट (Android, Chrome) अन्य बिल्ड टूल का इस्तेमाल क्यों करते हैं?

पहली (अल्फ़ा) रिलीज़ तक, Bazel बाहरी तौर पर उपलब्ध नहीं था. इसलिए, Chromium और Android जैसे ओपन सोर्स प्रोजेक्ट इसका इस्तेमाल नहीं कर सके. इसके अलावा, Windows के लिए सहायता उपलब्ध न होने की वजह से, Chrome जैसे Windows ऐप्लिकेशन बनाने में समस्या आ रही थी. प्रोजेक्ट के बेहतर और ज़्यादा स्टेबल होने की वजह से, Android Open Source Project, Bazel पर माइग्रेट करने की प्रोसेस में है.

"Bazel" को कैसे बोला जाता है?

इसे अमेरिकी अंग्रेज़ी में "बेज़ल" (जड़ी-बूटी) की तरह बोला जाता है: "बे-ज़ल". इसका उच्चारण "हेज़ल" से मिलता-जुलता है. आईपीए: /ˈbeɪzˌəl/