इस पेज पर, तकनीकी लेखन वाले उस प्रोजेक्ट की जानकारी दी गई है जिसे Google Season of Docs के लिए स्वीकार किया गया है.
प्रोजेक्ट की खास जानकारी
- ओपन सोर्स संगठन:
- Linux फ़ाउंडेशन
- टेक्निकल राइटर:
- PIYUSHgoyal16
- प्रोजेक्ट का नाम:
- प्रिंटर ऐप्लिकेशन में प्रिंटर/स्कैनर ड्राइवर के लिए ट्यूटोरियल और डिज़ाइन से जुड़े दिशा-निर्देश
- प्रोजेक्ट की अवधि:
- स्टैंडर्ड अवधि (तीन महीने)
प्रोजेक्ट का विवरण
खास जानकारी
प्रिंटर के हिसाब से फ़िल्टर और पीपीडी (Postscript Printer Description, प्रिंटर की सुविधाओं और किन फ़िल्टर को कॉल करने के बारे में बताता है) फ़ाइलों वाले क्लासिक प्रिंटर ड्राइवर को, प्रिंटर ऐप्लिकेशन से बदल दिया गया है. ये ऐप्लिकेशन, आईपीपी नेटवर्क प्रिंटर का एमुलेटर होते हैं. इन्हें फ़ाइल सिस्टम की कुछ डायरेक्ट्री में डालना होता है.
ज़्यादातर आधुनिक सामान्य प्रिंटर, आईपीपी प्रिंटर होते हैं. इनसे ड्राइवर के बिना प्रिंट किया जा सकता है. ये DNS-SD के ज़रिए अपने विज्ञापन दिखाते हैं. क्लाइंट, IPP अनुरोधों के ज़रिए उनकी क्षमता की जानकारी को पोल कर सकते हैं. साथ ही, ये प्रिंट जॉब के लिए स्टैंडर्ड डेटा फ़ॉर्मैट का इस्तेमाल करते हैं. आम तौर पर, लेगसी या खास तरह के प्रिंटर में यह सुविधा नहीं देने वाले प्रिंटर के लिए, प्रिंटर ड्राइवर की ज़रूरत होती है.
प्रिंटर ऐप्लिकेशन एक डेमन है, जो काम करने वाले प्रिंटर का पता लगाता है और उन प्रिंटर का विज्ञापन, लोकलहोस्ट पर IPP Everywhere प्रिंटर के तौर पर करता है. प्रिंटर ऐप्लिकेशन में, प्रिंटर पर आने वाले जॉब को प्रिंट करने के लिए सॉफ़्टवेयर होता है. यह सॉफ़्टवेयर, डेटा को प्रिंटर की मूल भाषा में बदलता है. साथ ही, अनुरोध मिलने पर क्लाइंट को प्रिंटर की सुविधाओं के बारे में जानकारी देता है. प्रिंटर ऐप्लिकेशन में, किसी असली नेटवर्क प्रिंटर की तरह वेब एडमिनिस्ट्रेशन इंटरफ़ेस भी होता है.
जैसा कि हम जानते हैं कि Linux, सैंडबॉक्स की सुविधा वाली पैकेजिंग (उदाहरण के लिए, Snap) पर स्विच कर रहा है. साथ ही, प्रिंटिंग भी उसी दिशा में आगे बढ़ रही है. सैंडबॉक्स किए गए पैकेज में, बने जाने के बाद डायरेक्ट्री के कॉन्टेंट में बदलाव नहीं किया जा सकता. हमारा सिस्टम अब मॉड्यूलर नहीं है. हम यह नहीं चुन सकते कि प्रिंटर ड्राइवर का कौनसा पैकेज इंस्टॉल करना है. प्रिंटर ऐप्लिकेशन, मॉड्यूलरिटी की इस समस्या को हल करते हैं और हमें प्रिंटर ड्राइवर के मामले में मिलने वाली सुविधाएं देते हैं.
Snaps में प्रिंटर और स्कैनर ड्राइवर, स्नैप किए गए CUPS और स्नैप किए गए ऐप्लिकेशन के लिए ज़रूरी हैं. साथ ही, ये पूरी तरह से क्लासिक सिस्टम पर भी काम करते हैं. हालांकि, क्लासिक तरीके से पैकेज किए गए ड्राइवर के मुकाबले, ये ओएस-डिस्ट्रिब्यूशन पर निर्भर नहीं होते. आप प्रिंटर ड्राइवर Snap बनाते हैं और यह स्नैप किए गए सभी ओएस डिस्ट्रिब्यूशन पर काम करता है, आपको हर डिस्ट्रिब्यूशन (और उसके वर्शन) के लिए प्रिंटर ड्राइवर को अलग से पैकेज करने की ज़रूरत नहीं होती है और न ही यह निर्भरता को खत्म करता है. इसका एक और फ़ायदा यह है कि PostScript प्रिंटर से आने वाली पीपीडी फ़ाइलों का पुराना कॉन्सेप्ट बंद कर दिया गया है. इसके अलावा, CUPS सिस्टम में फ़ाइलें डालने के बजाय, आईपी कनेक्शन की मदद से CUPS सिस्टम और प्रिंटर ड्राइवर को जोड़कर, CUPS सिस्टम और प्रिंटर ऐप्लिकेशन, दोनों को अलग-अलग सैंडबॉक्स किए गए पैकेज में रखा जा सकता है.
मेरा काम यह बताना होगा कि इस तरह की पैकेजिंग के लिए, प्रिंटर और स्कैनर के ड्राइवर कैसे डिज़ाइन किए जाएं और Snaps में कैसे पैकेज किए जाएं. इसका मकसद, आने वाले समय में प्रिंटर या स्कैनर ड्राइवर लिखने वाले लोगों, खास तौर पर हार्डवेयर बनाने वाली कंपनियों को सही तरीके से ड्राइवर बनाने में मदद करना है.
प्रिंटर ऐप्लिकेशन के वर्कफ़्लो की खास जानकारी, इस फ़्लोचार्ट में दी गई है:
ऐसे प्रिंटर/स्कैनर ऐप्लिकेशन बनाने का आधार PAPPL है, एक लाइब्रेरी जो इसके लिए सबसे ज़्यादा काम की क्षमता उपलब्ध कराती है, लेकिन साथ ही प्रिंटर ऐप्लिकेशन के लिए इस्तेमाल किए जाने वाले कोड वाले कप-फ़िल्टर भी. इस कॉन्सेप्ट पर अब भी काम चल रहा है. मुख्य रूप से, इस साल के Google Summer of Code में इस पर काम किया जा रहा है. हालांकि, 14 सितंबर को दस्तावेज़ तैयार करने की अवधि शुरू होने के बाद, GSoC की कोडिंग अवधि खत्म हो जाएगी. इस दौरान, OpenPrinting को ट्यूटोरियल की ज़रूरत होगी.
प्रिंटर ड्राइवर के लिए टेंप्लेट JOB डेटा के लिए स्ट्रक्चर तय करना
मीडिया साइज़ के लिए कॉन्स्टेंट कलेक्शन तय करना
फ़ंक्शन का एलान करना i) कॉलबैक या init यह एक बूलियन फ़ंक्शन है, जो ड्राइवर का नाम, ड्राइवर का डेटा वगैरह स्वीकार करता है और ड्राइवर के एट्रिब्यूट को उसी हिसाब से सेट करता है. अगर दी गई जानकारी सही है, तो फ़ेल होने पर यह जानकारी, सही और गलत के तौर पर दिखती है.
ii) print बूलियन फ़ंक्शन, जो जॉब, जॉब के विकल्प, और डिवाइस को स्वीकार करता है. यह फ़ाइल को प्रिंट करता है और सही होने पर True और गलत होने पर False दिखाता है.
iii) रैंडजॉब बूलियन फ़ंक्शन, नौकरी स्वीकार करता है, नौकरी के विकल्प और डिवाइस. यह जॉब को खत्म करता है और काम पूरा होने पर 'सही' और काम पूरा न होने पर 'गलत' दिखाता है.
iv) rendpage बूलियन फ़ंक्शन, जो नौकरी, नौकरी के विकल्प, डिवाइस, और पेज नंबर स्वीकार करता है. यह पेज को बंद कर देता है और सफल होने पर 'सही' और न होने पर 'गलत' दिखाता है.
v) rstartjob बूलियन फ़ंक्शन, जो जॉब, जॉब के विकल्प, और डिवाइस को स्वीकार करता है. यह जॉब शुरू करता है और पूरा होने पर 'सही' और पूरा न होने पर 'गलत' दिखाता है.
vi) rstartpage बूलियन फ़ंक्शन, जो जॉब, जॉब के विकल्प, डिवाइस, और पेज नंबर स्वीकार करता है. यह पेज शुरू करता है और पेज खुलने पर 'सही' और पेज न खुलने पर 'गलत' दिखाता है.
vii) rwrite बूलियन फ़ंक्शन, जो जॉब, जॉब के विकल्प, डिवाइस, लाइन नंबर, और वर्ण ऐरे को स्वीकार करता है. यह लाइन लिखता है और सफल होने पर 'सही' और नतीजा न मिलने पर 'गलत' दिखाता है. viii) वैकल्पिक फ़ंक्शन, जैसे कि पहचान करना (प्रदान की गई कार्रवाई के आधार पर प्रिंटर की पहचान करने में मदद करता है), कंप्रेस करना(ग्राफ़िक की लाइन को कंप्रेस करना) वगैरह