अगर आपको कोई सवाल पूछना है या मदद चाहिए, तो मदद पाना लेख पढ़ें.
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 के सर्वर सॉफ़्टवेयर को इंटरनल तौर पर बनाने के लिए इस्तेमाल किए जाने वाले टूल का एक वर्शन है. अब इसका इस्तेमाल, अन्य सॉफ़्टवेयर बनाने के लिए भी किया जाता है. जैसे, मोबाइल ऐप्लिकेशन (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 प्लगिन देखें.
अन्य आईडीई के लिए, इन प्लगिन के काम करने के तरीके के बारे में ब्लॉग पोस्ट देखें.
मैं 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 की टेक्नोलॉजी के साथ इंटिग्रेट किया जाता है. इसके अलावा, हम कुछ कोडबेस को हटाने का कोई बहाना ढूंढ रहे हैं या हो सकता है कि हम इन दोनों को एक साथ इस्तेमाल कर रहे हों. कोडबेस के ये हिस्से, GitHub पर उपलब्ध नहीं हैं. ऐसा हो सकता है कि ये कभी उपलब्ध न हों.
मैं टीम से कैसे संपर्क करूं?
हमसे bazel-discuss@googlegroups.com पर संपर्क किया जा सकता है.
मैं गड़बड़ियों की शिकायत कहां करूं?
GitHub पर कोई समस्या खोलें.
कोडबेस में "Blaze" शब्द का क्या मतलब है?
यह टूल का इंटरनल नाम है. कृपया Blaze को Bazel के तौर पर देखें.
Google के अन्य प्रोजेक्ट (Android, Chrome) अन्य बिल्ड टूल का इस्तेमाल क्यों करते हैं?
पहली (अल्फ़ा) रिलीज़ तक, Bazel बाहरी तौर पर उपलब्ध नहीं था. इसलिए, Chromium और Android जैसे ओपन सोर्स प्रोजेक्ट इसका इस्तेमाल नहीं कर सके. इसके अलावा, Windows के लिए सहायता उपलब्ध न होने की वजह से, Chrome जैसे Windows ऐप्लिकेशन बनाने में समस्या आ रही थी. प्रोजेक्ट के बेहतर और ज़्यादा स्टेबल होने की वजह से, Android ओपन सोर्स प्रोजेक्ट, Bazel पर माइग्रेट करने की प्रोसेस में है.
"Bazel" को कैसे बोला जाता है?
इसे अमेरिकी अंग्रेज़ी में "बेज़ल" (जड़ी-बूटी) की तरह बोला जाता है: "बे-ज़ल". इसका उच्चारण "हेज़ल" से मिलता-जुलता है. आईपीए: /ˈbeɪzˌəl/