बैजल विज़न

किसी समस्या की शिकायत करें स्रोत देखें

कोई भी सॉफ़्टवेयर डेवलपर, ऐसे किसी भी साइज़ या जटिलता वाला प्रोजेक्ट बना सकता है, टेस्ट कर सकता है, और पैकेज कर सकता है.

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

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

  • प्रोजेक्ट किसी भी साइज़ कोडबेस, किसी भी साइज़ टीम के लिए स्केल किए जा सकते हैं. तेज़, वृद्धिशील परीक्षण से, टीम हर बदलाव को लागू करने से पहले उसकी पूरी तरह से पुष्टि कर पाती हैं. डेटा स्टोर करने के कई तरीके हैं. जैसे, डेटा स्टोर करने के प्लैटफ़ॉर्म को बेहतर बनाने के लिए कई बार प्रोसेस करने के बाद, उसे कई बार इस्तेमाल करना. इन्फ़्रास्ट्रक्चर, बिल्ड स्पीड के लिए डेवलपर को यह टेस्ट करने के लिए मजबूर नहीं करता.

हमारा मानना है कि बेज़ल के पास इस विज़न को पूरा करने की क्षमता है.

Bazel को शुरुआत से फिर से बनाया जा सकने वाले बिल्ड इस्तेमाल करने के लिए बनाया गया था (यानी इनपुट का एक सेट हमेशा एक जैसा आउटपुट देता है) और पोर्टेबल. इसका इस्तेमाल करके, किसी भी मशीन पर बनाया जा सकता है.

ये विशेषताएं सुरक्षित बढ़ोतरी (सिर्फ़ बदले गए इनपुट खराबी के जोखिम को नहीं बताती हैं) और डिस्ट्रिब्यूट करने की क्षमता के साथ काम करती हैं (बिल्ड की कार्रवाइयों को आइसोलेट किया जाता है और उन्हें बंद किया जा सकता है). सही तरीके से बिल्ड करने के लिए ज़रूरी काम को कम करके और उसके साथ-साथ कई कोर और रिमोट सिस्टम में काम करने से, बेज़ल किसी भी बिल्ड को तेज़ बना सकता है.

Bazel की ऐब्स्ट्रैक्शन लेयर आसानी से लागू की जा सकती है. इस एक्सटेंशन में, भाषा, प्लैटफ़ॉर्म, और टूलचेन की जानकारी शामिल होती है. इसे किसी भी संदर्भ में आसानी से लागू किया जा सकता है.

Bazel की मुख्य क्षमताएं

  1. Bazel में कई भाषाओं, कई प्लैटफ़ॉर्म पर वीडियो बनाने और उनकी जांच करने की सुविधा है. अपने पूरे सोर्स ट्री को बनाने और उसकी जांच करने के लिए, एक ही निर्देश दिया जा सकता है. इसमें, इस बात से कोई फ़र्क़ नहीं पड़ता कि टारगेट की गई भाषाओं और प्लैटफ़ॉर्म का कॉम्बिनेशन क्या है.
  2. बेज़ल बिल्ड तेज़ और सही होते हैं. हर बिल्ड और टेस्ट रन आपके डेवलपर की मशीन और सीआई पर बढ़ता जाता है.
  3. Bazel किसी भी भाषा या प्लैटफ़ॉर्म के लिए बिल्ड तय करने के लिए एक समान, एक्सटेंसिबल भाषा उपलब्ध कराता है.
  4. Bazel, रिमोट तरीके से एक्ज़ीक्यूशन और कैश मेमोरी में सेव की जाने वाली सेवाओं से कनेक्ट करके, आपके बिल्ड को स्केल करने की सुविधा देता है.
  5. Bazel, सभी मुख्य डेवलपमेंट प्लैटफ़ॉर्म (Linux, MacOS, और Windows) पर काम करता है.
  6. हम मानते हैं कि Bazel को अपनाने में मेहनत लगती है, लेकिन सिलसिलेवार तरीके से अपनाना भी मुमकिन है. बेज़ेल इंटरफ़ेस, जिनमें किसी भाषा/प्लैटफ़ॉर्म के लिए असल दुनिया के टूल होते हैं.

भाषा समुदाय की सेवा करना

सॉफ़्टवेयर इंजीनियरिंग भाषा समुदायों के संदर्भ में विकसित होती है — आम तौर पर, ऐसे लोगों के समूह को व्यवस्थित करना जो सामान्य टूल और तौर-तरीकों का इस्तेमाल करते हैं.

भाषा समुदाय के सदस्यों को इस्तेमाल करने के लिए, अच्छी क्वालिटी वाले बैजल नियम उपलब्ध होने चाहिए, जो उस समुदाय के वर्कफ़्लो और कन्वेंशन के साथ जुड़े हों.

Bazel का विस्तार और हर तरह से काम करने की आज़ादी के लिए प्रतिबद्ध है. साथ ही, यह किसी भी भाषा के लिए अच्छे नियमों का समर्थन करता है.

अच्छे नियमसेट की आवश्यकताएं

  1. नियमों को भाषा के लिए बिल्डिंग और जांच की सुविधा देने के साथ-साथ कोड कवरेज की सुविधा देने की ज़रूरत है.
  2. नियमों को उस भाषा (जैसे कि Java के लिए Maven) के लिए, बड़े पैमाने पर इस्तेमाल किए जाने वाले "पैकेज मैनेजर" के साथ इंटरैक्ट करना ज़रूरी है. साथ ही, बड़े पैमाने पर इस्तेमाल किए जाने वाले अन्य बिल्ड सिस्टम से इंक्रीमेंटल माइग्रेशन पाथ के साथ काम करना चाहिए.
  3. नियम एक्सटेंसिबल और इंटरोऑपरेबल होने चाहिए, "Bazel sandwich" नियमों का पालन करना ज़रूरी है.
  4. नियमों को कहीं से भी लागू किए जाने के लिए तैयार होना चाहिए. इसका मतलब है कि इसे टूलचेन तकनीक का इस्तेमाल करके कॉन्फ़िगर किया जा सकता है.
  5. नियमों (और Bazel) को भाषा के लिए, बड़े पैमाने पर इस्तेमाल किए जाने वाले आईडीई के साथ इंटरफ़ेस करना ज़रूरी है.
  6. नए उपयोगकर्ताओं के लिए शुरुआती शर्तों वाली सामग्री, विशेषज्ञों के काम के दस्तावेज़ के साथ-साथ, विशेषज्ञों के लिए काम के दस्तावेज़ होने चाहिए.

इनमें से हर सामान बहुत ज़रूरी होता है. साथ ही, ये सभी साथ मिलकर बेज़ेल की क्षमता को पूरा करते हैं, ताकि वे अपने खास नेटवर्क के लिए काम कर सकें.

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