अगर आपको कोई सवाल पूछना है या मदद चाहिए, तो सहायता पाने का तरीका देखें.
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 लाख सोर्स फ़ाइलें होना आम बात है. साथ ही, जिन बिल्ड में कोई फ़ाइल नहीं बदली गई है उन्हें बनाने में करीब 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 कर्मचारियों और Facebook ने बनाया और डेवलप किया है. इन्हें Bazel के मॉडल पर बनाया गया है. हालांकि, इनके फ़ीचर सेट अलग-अलग हैं. इसलिए, ये हमारे लिए सही विकल्प नहीं हैं.
Bazel कहां से आया?
Bazel, उस टूल का एक वर्शन है जिसका इस्तेमाल Google, अपने सर्वर सॉफ़्टवेयर को इंटरनली बनाने के लिए करता है. इसका इस्तेमाल, अन्य सॉफ़्टवेयर बनाने के लिए भी किया जाता है. जैसे, हमारे सर्वर से कनेक्ट होने वाले मोबाइल ऐप्लिकेशन (iOS, Android).
क्या आपने अपने इंटरनल टूल को ओपन सोर्स के तौर पर फिर से लिखा है? क्या यह फ़ोर्क है?
Bazel, अपने ज़्यादातर कोड को इंटरनल टूल के साथ शेयर करता है. इसके नियमों का इस्तेमाल, हर दिन लाखों बिल्ड के लिए किया जाता है.
Google ने Bazel क्यों बनाया?
काफ़ी समय पहले, Google अपने सॉफ़्टवेयर को बड़े-बड़े, जनरेट किए गए Makefiles का इस्तेमाल करके बनाता था. इससे बिल्ड की प्रोसेस धीमी और भरोसेमंद नहीं होती थी. इससे हमारे डेवलपर की प्रॉडक्टिविटी और कंपनी की तेज़ी से काम करने की क्षमता पर असर पड़ने लगा. 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 पर चलता है.
अन्य UNIX प्लैटफ़ॉर्म पर पोर्ट करना अपेक्षाकृत आसान होना चाहिए, बशर्ते प्लैटफ़ॉर्म के लिए JDK उपलब्ध हो.
मुझे Bazel का इस्तेमाल किन कामों के लिए नहीं करना चाहिए?
- Bazel, कैश मेमोरी में सेव करने के लिए स्मार्ट तरीके अपनाता है. इसका मतलब है कि यह उन बिल्ड ऑपरेशन को चलाने के लिए सही नहीं है जिनके आउटपुट को कैश मेमोरी में सेव नहीं किया जाना चाहिए. उदाहरण के लिए, इन चरणों को Bazel से नहीं चलाया जाना चाहिए:
- कंपाइलेशन का ऐसा चरण जो इंटरनेट से डेटा फ़ेच करता है.
- टेस्ट का ऐसा चरण जो आपकी साइट के क्यूए इंस्टेंस से कनेक्ट होता है.
- डिप्लॉयमेंट का ऐसा चरण जो आपकी साइट के क्लाउड कॉन्फ़िगरेशन में बदलाव करता है.
- अगर आपके बिल्ड में कुछ लंबे, सीक्वेंशियल चरण शामिल हैं, तो Bazel ज़्यादा मदद नहीं कर पाएगा. लंबे चरणों को छोटे-छोटे, अलग-अलग टारगेट में बांटकर, आपको ज़्यादा स्पीड मिलेगी. Bazel इन टारगेट को एक साथ चला सकता है.
Bazel के फ़ीचर सेट की स्टेबिलिटी कितनी है?
कोर फ़ीचर (C++, Java, और शेल के नियम) का इस्तेमाल Google में बड़े पैमाने पर किया जाता है. इसलिए, इन्हें अच्छी तरह से टेस्ट किया जाता है. साथ ही, इनमें बहुत कम बदलाव होते हैं. इसी तरह, हम रिग्रेशन ढूंढने के लिए, हर दिन लाखों टारगेट पर Bazel के नए वर्शन को टेस्ट करते हैं. साथ ही, हर महीने कई बार नए वर्शन रिलीज़ करते हैं.
संक्षेप में, एक्सपेरिमेंटल के तौर पर मार्क किए गए फ़ीचर को छोड़कर, Bazel को सही तरीके से काम करना चाहिए. एक्सपेरिमेंटल के तौर पर मार्क नहीं किए गए नियमों में किए गए बदलाव, मौजूदा नियमों के साथ काम करने वाले होंगे. फ़ीचर के सपोर्ट स्टेटस की ज़्यादा जानकारी वाली सूची, हमारे सहायता दस्तावेज़ में देखी जा सकती है.
बाइनरी के तौर पर Bazel की स्टेबिलिटी कितनी है?
Google में, हम यह पक्का करते हैं कि Bazel के क्रैश होने की घटनाएं बहुत कम हों. ओपन सोर्स कोडबेस के लिए भी ऐसा ही होना चाहिए.
मैं Bazel का इस्तेमाल कैसे शुरू करूं?
क्या Docker, रिप्रोड्यूसिबिलिटी की समस्याओं को हल नहीं करता?
Docker की मदद से, ओएस रिलीज़ को फ़िक्स करके सैंडबॉक्स आसानी से बनाए जा सकते हैं. उदाहरण के लिए, Ubuntu 12.04, Fedora 21. इससे सिस्टम एनवायरमेंट के लिए रिप्रोड्यूसिबिलिटी की समस्या हल हो जाती है. जैसे, “मुझे /usr/bin/c++ का कौनसा वर्शन चाहिए?”
Docker, सोर्स कोड में किए गए बदलावों के मामले में रिप्रोड्यूसिबिलिटी की समस्या को हल नहीं करता. Docker कंटेनर में, सही तरीके से नहीं लिखे गए Makefile के साथ Make चलाने पर भी, अनप्रेडिक्टेबल नतीजे मिल सकते हैं.
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 पर) से, एलान नहीं की गई डिपेंडेंसी ढूंढने में मदद मिल सकती है.
- जनरेट की गई फ़ाइलों में, टाइमस्टैंप और उपयोगकर्ता आईडी सेव करने से बचें. ज़िप फ़ाइलें और अन्य आर्काइव, खास तौर पर इसके लिए संवेदनशील होते हैं.
- नेटवर्क से कनेक्ट होने से बचें. सैंडबॉक्स में एक्ज़ीक्यूशन से यहां भी मदद मिल सकती है.
- ऐसी प्रोसेस से बचें जिनमें रैंडम नंबर का इस्तेमाल किया जाता है. खास तौर पर, कई प्रोग्रामिंग लैंग्वेज में डिक्शनरी ट्रैवर्सल रैंडमाइज़ किया जाता है.
क्या आपके पास बाइनरी रिलीज़ हैं?
हां, रिलीज़ की गई नई बाइनरी देखी जा सकती हैं. साथ ही, हमारी रिलीज़ नीति की समीक्षा की जा सकती है
मैं Eclipse/IntelliJ/XCode का इस्तेमाल करता/करती हूं. Bazel, आईडीई के साथ कैसे इंटरऑपरेट करता है?
IntelliJ के लिए, Bazel प्लगइन के साथ IntelliJ देखें.
XCode के लिए, Tulsi देखें.
Eclipse के लिए, E4B प्लगइन देखें.
अन्य आईडीई के लिए, इन प्लगइन के काम करने के तरीके के बारे में ब्लॉग पोस्ट देखें.
मैं Jenkins/CircleCI/TravisCI का इस्तेमाल करता/करती हूं. Bazel, सीआई सिस्टम के साथ कैसे इंटरऑपरेट करता है?
अगर बिल्ड या टेस्ट का इस्तेमाल करने में गड़बड़ी होती है, तो Bazel, नॉन-ज़ीरो एक्ज़िट कोड दिखाता है. यह बुनियादी सीआई इंटिग्रेशन के लिए काफ़ी है. Bazel को सही तरीके से काम करने के लिए, क्लीन बिल्ड की ज़रूरत नहीं होती. इसलिए, सीआई सिस्टम को बिल्ड/टेस्ट रन शुरू करने से पहले, क्लीन करने के लिए कॉन्फ़िगर नहीं किया जाना चाहिए.
एक्ज़िट कोड के बारे में ज़्यादा जानकारी, उपयोगकर्ता के लिए बनी गाइड में दी गई है.
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/