अगर आपका कोई सवाल है या आपको मदद चाहिए, तो मदद पाना लेख पढ़ें.
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 के पूर्व कर्मचारियों ने बनाया और विकसित किया था. ये दोनों कंपनियां, Google की प्रतिस्पर्धी हैं. इन्हें Bazel के आधार पर बनाया गया है, लेकिन इनकी सुविधाएं अलग-अलग हैं. इसलिए, ये हमारे लिए सही विकल्प नहीं हैं.
Bazel कहां से आया?
Bazel, टूल का एक वर्शन है. Google इसका इस्तेमाल, सर्वर सॉफ़्टवेयर को इंटरनल तौर पर बनाने के लिए करता है. अब यह अन्य सॉफ़्टवेयर भी बनाता है. जैसे, मोबाइल ऐप्लिकेशन (iOS, Android), जो हमारे सर्वर से कनेक्ट होते हैं.
क्या आपने अपने इंटरनल टूल को ओपन-सोर्स के तौर पर फिर से लिखा है? क्या यह फ़ोर्क है?
Bazel, अपने ज़्यादातर कोड को इंटरनल टूल के साथ शेयर करता है. साथ ही, इसके नियमों का इस्तेमाल हर दिन लाखों बिल्ड के लिए किया जाता है.
Google ने Bazel क्यों बनाया?
बहुत समय पहले, Google ने अपने सॉफ़्टवेयर को बनाने के लिए, जनरेट की गई बड़ी मेकफ़ाइलों का इस्तेमाल किया था. इस वजह से, बिल्ड बनाने की प्रोसेस धीमी हो गई और बिल्ड भरोसेमंद नहीं रहे. इससे डेवलपर की प्रॉडक्टिविटी और कंपनी की तेज़ी से काम करने की क्षमता पर असर पड़ने लगा. Bazel, इन समस्याओं को हल करने का एक तरीका था.
क्या Bazel को बिल्ड क्लस्टर की ज़रूरत होती है?
Bazel, डिफ़ॉल्ट रूप से बिल्ड ऑपरेशन को स्थानीय तौर पर चलाता है. हालांकि, Bazel को बिल्ड क्लस्टर से भी कनेक्ट किया जा सकता है, ताकि बिल्ड और टेस्ट और भी तेज़ी से किए जा सकें. ज़्यादा जानकारी के लिए, रिमोट एक्ज़ीक्यूशन और कैश मेमोरी और रिमोट कैश मेमोरी के बारे में हमारा दस्तावेज़ देखें.
Google की डेवलपमेंट प्रोसेस कैसे काम करती है?
हम अपने सर्वर कोडबेस के लिए, डेवलपमेंट का यह वर्कफ़्लो इस्तेमाल करते हैं:
- हमारा पूरा सर्वर कोड, एक ही वर्शन कंट्रोल सिस्टम में होता है.
- सभी लोग Bazel की मदद से अपना सॉफ़्टवेयर बनाते हैं.
- अलग-अलग टीमें, सोर्स ट्री के अलग-अलग हिस्सों की मालिक होती हैं. साथ ही, वे अपने कॉम्पोनेंट को
BUILDटारगेट के तौर पर उपलब्ध कराती हैं. - ब्रांचिंग का इस्तेमाल मुख्य रूप से रिलीज़ को मैनेज करने के लिए किया जाता है. इसलिए, हर व्यक्ति अपने सॉफ़्टवेयर को हेड रिविज़न पर डेवलप करता है.
Bazel इस सिद्धांत का मुख्य आधार है: Bazel को सभी डिपेंडेंसी के बारे में पूरी जानकारी की ज़रूरत होती है. इसलिए, हम यह अनुमान लगा सकते हैं कि किसी बदलाव से कौनसे प्रोग्राम और टेस्ट प्रभावित हुए हैं. साथ ही, सबमिट करने से पहले उनकी जांच कर सकते हैं.
Google में डेवलपमेंट प्रोसेस के बारे में ज़्यादा जानकारी के लिए, eng tools blog पर जाएं.
आपने 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 प्लगिन देखें.
अन्य आईडीई के लिए, इन प्लगिन के काम करने के तरीके के बारे में ब्लॉग पोस्ट देखें.
मैं 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 ओपन सोर्स प्रोजेक्ट, Bazel पर माइग्रेट करने की प्रोसेस में है.
"Bazel" को कैसे बोला जाता है?
अमेरिकी अंग्रेज़ी में "basil" (जड़ी-बूटी) को जिस तरह से बोला जाता है उसी तरह से: "BAY-zel". यह "hazel" से मिलता-जुलता है. आईपीए: /ˈbeɪzˌəl/