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