बेज़ेल विज़न

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

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

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

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

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

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

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

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

Bazel कोर की क्षमता

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

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

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

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

Bazel, विस्तार से जानकारी देने और खुलकर नियमों का पालन करने के लिए प्रतिबद्ध है.

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

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

इनमें से हर एक आइटम ज़रूरी है और सिर्फ़ एक साथ ये मिलकर काम करते हैं और अपने खास नेटवर्क के लिए Bazel की क्षमता को पूरा करते हैं.

यह भी काफ़ी है कि यह काफ़ी है - सभी ज़रूरतें पूरी होने के बाद, Bazel उस भाषा समुदाय के सदस्यों को पूरी तरह से अपना फ़ायदा पहुंचाता है.