समुदाय कठिन हैं. उन्हें बनाना कठिन है, बनाए रखना कठिन है, और विकसित करना कठिन है। लेकिन, समुदायों का निर्माण करना मेरे करियर में सबसे फायदेमंद चीजों में से एक रहा है, क्योंकि मैं बहुत सारे अद्भुत लोगों से मिला और मुझे अपने आराम क्षेत्र से बाहर निकलकर चीजें सीखने और करने के लिए मजबूर होना पड़ा।
मुझे याद है कि 10 साल पहले मैंने बर्लिन में अपने पहले छोटे तकनीकी सम्मेलन - काउचकॉन्फ़ में भाग लिया था। सौभाग्य से लगभग उसी समय बर्लिनजेएस मीटअप हो रहा था और समुदाय और लोगों ने मुझे आश्चर्यचकित कर दिया। उनके पास वेबसाइट के लिए एक GitHub रिपॉजिटरी स्थापित है और बातचीत GitHub मुद्दों के रूप में प्रस्तुत की जाती है। मैं प्रक्रिया की सरलता और पारदर्शिता से चकित था, इसलिए मैंने रेपो को तोड़ दिया और कुछ सप्ताह बाद बार्सिलोनाजेएस की स्थापना की। यह मेरी अपनी आयोजकों की यात्रा की शुरुआत थी।
एक नियमित और बहुत निराशाजनक अनुभव का एक छोटा सा किस्सा: आपने एक शानदार कार्यक्रम आयोजित करने के लिए तैयारी करने, संचार करने, वक्ताओं को ढूंढने और आमंत्रित करने, एक तिथि और स्थान ढूंढने और सुरक्षित करने, भोजन और पेय के लिए प्रायोजकों से बात करने में घंटों बिताए। और जब समय आता है तो आप वहां अकेले या उन कुछ लोगों के साथ बैठे होते हैं जिनके बारे में आपने सोचा था कि वे आएंगे, क्योंकि मीटअप कहता है "150 लोगों ने हां में उत्तर दिया"। और एक दुर्लभ अवसर पर यह मौसम के साथ दुर्भाग्य था, लेकिन अक्सर जब मैंने बाद में लोगों से बात की तो मैंने यह सुना:
यह आश्चर्यजनक है, काश मैं वहां होता, लेकिन मुझे नहीं पता था!
यह वाक्यांश मेरे लिए एक सामुदायिक उपकरण के रूप में GitHub की खोज शुरू करने के लिए प्रेरणा थी क्योंकि GitHub स्वचालन के लिए सबसे अद्भुत प्लेटफार्मों में से एक है और एक आयोजक के रूप में आपको यही करने की आवश्यकता है: इवेंटब्राइट पर ईवेंट प्रकाशित करने के लिए हर चीज में से बकवास को स्वचालित करें, मीटअप, ट्विटर, फेसबुक, टेलीग्राम समूह, व्हाट्सएप, ईमेल, कैलेंडर, आदि आदि और ऐसा 2 सप्ताह पहले, 1 सप्ताह पहले, 3 दिन पहले, 1 दिन पहले, 1 घंटा पहले करें ताकि बाद में कोई कुछ न कह सके। : "मुझे इस बारे में पता नहीं था"। क्योंकि अंततः, आप यह अपने लिए नहीं बल्कि समुदाय के लिए कर रहे हैं।
अपनी यात्रा के दौरान, मैं मीटअप पर हजारों सदस्यों वाले Node.js और जावास्क्रिप्ट समुदायों से मिला, लेकिन एक भी आगामी या हालिया कार्यक्रम नहीं मिला। ऐसा कई कारणों से हो सकता है, लेकिन अक्सर ऐसा इसलिए होता है क्योंकि आयोजकों के पास समय नहीं होता है या वे अन्य चीजों पर चले जाते हैं, और चीजों को चालू रखने के लिए उत्तराधिकारी ढूंढना मुश्किल होता है। मीटअप और अन्य प्लेटफ़ॉर्म समुदायों और घटनाओं की खोज के लिए बहुत अच्छे हैं, लेकिन यदि कोई आयोजक सक्रिय नहीं है तो वे सदस्यों के लिए समुदाय तक पहुंचना और समुदाय को अपने कब्जे में लेना/पुनर्जीवित करना कठिन बना देते हैं।
एक डेवलपर के रूप में, मैं GitHub पर बहुत समय बिताता हूं और टूल और वर्कफ़्लो से परिचित हूं, इसलिए मैंने GitHub को एक सामुदायिक प्लेटफ़ॉर्म के रूप में उपयोग करने का तरीका तलाशना शुरू कर दिया।
पहला और सबसे स्पष्ट लाभ यह है कि GitHub पर सार्वजनिक रिपॉजिटरी ओपन सोर्स हैं। इसका मतलब है कि सभी सामग्री, मुद्दे और चर्चाएँ सार्वजनिक हैं और इन्हें किसी के द्वारा फोर्क, कॉपी और पुन: उपयोग किया जा सकता है। यह समुदायों के लिए बहुत अच्छा है क्योंकि इसका मतलब है कि यदि समुदाय को छोड़ दिया जाता है, तो कोई भी इसे छोड़ सकता है और काम जारी रख सकता है। इसका मतलब यह भी है कि यदि आप एक नया समुदाय शुरू करना चाहते हैं, तो आप मौजूदा समुदाय को छोड़ सकते हैं और उसे अपनी आवश्यकताओं के अनुसार अनुकूलित कर सकते हैं।
GitHub में उपयोगकर्ता/टीम/संगठन प्रबंधन अंतर्निहित है, इसलिए आपको स्वयं कुछ भी बनाने की आवश्यकता नहीं है। किसी को संगठन में आमंत्रित करना या संगठन की विभिन्न अनुमतियों के साथ टीमों को जोड़ना आसान है।
हममें से अधिकांश लोग GitHub का उपयोग करना जानते हैं और दैनिक आधार पर साइट पर जाते हैं, इसलिए डेटाबेस प्रशासन, सामग्री प्रबंधन या अन्य टूल के लिए अतिरिक्त साइटों को बुकमार्क करने की कोई आवश्यकता नहीं है। GitHub क्रियाओं के साथ, हम शेड्यूल पर या मांग पर स्वचालित कार्य चला सकते हैं, और GitHub Pages के साथ हम अपनी सामुदायिक वेबसाइट को निःशुल्क होस्ट कर सकते हैं।
मेरे लिए, GitHub पर एक समुदाय बनाने का सबसे महत्वपूर्ण लाभ पूर्ण पारदर्शिता और खुला संचार है। सब कुछ[1] सार्वजनिक है, इसलिए इस बारे में चिंता करने की कोई ज़रूरत नहीं है कि किसके पास किस चीज़ तक पहुंच है। इसका मतलब यह है कि कोई भी समुदाय में योगदान दे सकता है, और कोई भी देख सकता है कि क्या हो रहा है। यह विश्वास कायम करने और एक ऐसे समुदाय के निर्माण के लिए बहुत अच्छा है जो समावेशी हो और सभी का स्वागत करता हो।
बार्सिलोनाजेएस, सीडीसी आदि जैसे समुदायों के साथ मेरा उद्देश्य डेवलपर्स के लिए साझा करने और जुड़ने के लिए स्वतंत्र और खुली जगह बनाना था/है। और "मुक्त" वह जगह है जहां पारदर्शिता आती है। अतीत में, मैं हमेशा वित्तीय योगदान से दूर रहता था। यदि कोई कंपनी प्रायोजित करना चाहती है, तो वे सीधे आयोजन स्थल पर भोजन या पेय का ऑर्डर दे सकती हैं, लेकिन मैं सुविधा नहीं दूंगा। ओपन कलेक्टिव के लिए धन्यवाद, यह बहुत आसान हो गया है और अब हम वित्तीय योगदान स्वीकार करने और उन्हें समुदाय के लिए पारदर्शी बनाने में सक्षम हैं। उदाहरण के लिए इनका उपयोग डोमेन के लिए भुगतान करने, भोजन और पेय प्राप्त करने, विज्ञापन अभियान चलाने आदि के लिए किया जाता है।
[1] बेशक, आप आंतरिक आयोजकों की चर्चा आदि के लिए एक निजी रेपो भी बना सकते हैं।
GitHub मीटअप की तरह एक समुदाय/इवेंट प्लेटफ़ॉर्म नहीं है, इसलिए कुछ चेतावनियाँ हैं। मैं मुद्दों को "इवेंट" या "टॉक प्रपोजल" के रूप में मानने और सबमिशन की संरचना के लिए गिटहब इश्यू फॉर्म का उपयोग करने का आदी हो गया हूं। लेकिन यह आदर्श नहीं है और नए लोगों को "बातचीत प्रस्तुत करने के लिए एक मुद्दा बनाएं" को समझने में समय लगता है। किसी तिथि, मानचित्र पर स्थान आदि चुनने और सैकड़ों लोगों के लिए एक साधारण ईमेल अधिसूचना ट्रिगर करने के लिए कोई "आरामदायक सुविधाएँ" नहीं हैं।
यह संपूर्ण अवधारणा मुख्य रूप से डेवलपर्स और इंजीनियरों पर केंद्रित है, क्योंकि यह GitHub और इश्यूऑप्स के आसपास विकसित होती है। मेरे पिछले अनुभव का अंदाजा देने के लिए, यहां कुछ समुदाय और सम्मेलन हैं जिन्हें बनाने में मैंने मदद की है:
इनका निर्माण करते समय, मैंने आयोजकों के जीवन को आसान बनाने के लिए टूल, वर्कफ़्लो और स्वचालन के एक सेट पर लगातार काम किया है, क्योंकि यह बहुत कठिन और अक्सर धन्यवाद रहित काम है। तो यहाँ मेरी ओपन कम्युनिटी अवधारणा है कि मैं GitHub पर एक सार्वजनिक समुदाय का निर्माण कैसे करता हूँ।
पहला कदम GitHub संगठन स्थापित करना और दो रिपॉजिटरी बनाना है:
नाम स्पष्ट हैं: इवेंट रिपॉजिटरी में नए इवेंट बनाने के लिए टेम्पलेट हैं, और वार्ता रिपॉजिटरी में टॉक प्रस्ताव प्रस्तुत करने के लिए टेम्पलेट हैं। एजेंडा बनाने के लिए बातचीत को घटनाओं से जोड़ा जा सकता है और, यदि आप समुदाय से जुड़ाव प्राप्त करने में कामयाब होते हैं (याद रखें: यह कठिन है!), तो 👍 या ❤️ जैसी टिप्पणियों और प्रतिक्रियाओं का उपयोग बातचीत पर वोट करने के लिए किया जा सकता है।
आप प्रस्ताव, शेड्यूलिंग और घोषणा चरणों के माध्यम से ईवेंट जीवनचक्र को प्रबंधित करने के लिए GitHub प्रोजेक्ट का भी उपयोग कर सकते हैं:
साइप्रस में, हमने द्वीप पर विभिन्न क्षेत्रों के लिए लेबल जोड़े, लेकिन सबसे महत्वपूर्ण बात यह है कि एक "स्वीकृत" लेबल की आवश्यकता है। सभी नए मुद्दे "इवेंट" लेबल के साथ बनाए जाते हैं, लेकिन केवल "ट्राएज" अनुमति वाला कोई व्यक्ति (आयोजकों की टीम) ही इवेंट को "अनुमोदन" दे सकता है। स्पैम से बचने और यह सुनिश्चित करने के लिए कि ईवेंट प्रासंगिक है, यह महत्वपूर्ण है।
अब जब एक संगठन है, मुद्दों के साथ कुछ रेपो और जगह में कुछ संरचना है, तो इसे स्वचालित करने का समय आ गया है।
GitHub पर GitEvents / GitEvents काफी पुराना (2014) है और इसकी शुरुआत लंदन नोड यूजर ग्रुप (LNUG) और बार्सेलोना Node.js ग्रुप के बीच सहयोग "हैक वीकेंड" के रूप में gitup
नाम से हुई थी। उस समय, GitHub क्रियाएँ मौजूद नहीं थीं और हमने meetup.com डेटा के आधार पर GitHub होस्ट की गई वेबसाइटों के लिए संरचित डेटा बनाने के मुद्दों के लिए Webhooks का उपयोग करने का प्रयास किया। सेटअप बोझिल था और परियोजना को कुछ समय के लिए छोड़ दिया गया था।
आज, GitEvents समस्या वर्कफ़्लो को स्वचालित करने के लिए GitHub क्रियाओं का एक सरल सेट है। मीटअप और इवेंट के लिए "गिट ऑप्स"। बस एक GitHub संगठन और एक GitHub ऐप की आवश्यकता है। कुछ विशेषताएं इस प्रकार हैं:
iCal
कैलेंडर ईवेंट के लिए एक मानक है। सामुदायिक आयोजनों से अपडेट रहने के लिए लोग इसे अपने कैलेंडर में सदस्यता के रूप में जोड़ सकते हैं। हमने जीथब फ़ाइल पर रीडायरेक्ट बनाया है, ताकि लोग एक साधारण लिंक के साथ कैलेंडर की सदस्यता ले सकें: https://calendar.cdc.cy ।
सब कुछ "प्लग एंड प्ले" है, इसलिए आप अपनी पसंद के कार्य चुन सकते हैं और उन्हें वर्कफ़्लो में संयोजित करना अपेक्षाकृत आसान है। उदाहरण के लिए, साइप्रस डेवलपर कम्युनिटी वर्कफ़्लोज़ देखें।
यदि आप GitEvents के साथ शुरुआत करना चाहते हैं और आपको कुछ सहायता की आवश्यकता है, तो कृपया हमारे Discord सर्वर GitEvents पर संपर्क करें, इस पर कार्य प्रगति पर है और विशेष रूप से अन्य प्लेटफार्मों आदि के साथ एकीकरण के लिए हमेशा बहुत कुछ करना होता है। यदि आप सहायता करना चाहते हैं, तो कृपया संपर्क में रहो।
इश्यू फॉर्म अभी भी GitHub पर अपेक्षाकृत कम ज्ञात सुविधा है। नियमित मार्कडाउन टेम्प्लेट के बजाय, एक YAML फ़ाइल को फॉर्म कॉन्फ़िगरेशन के साथ प्रदान किया जा सकता है ।
संरचित इनपुट प्राप्त करने के लिए यह बहुत अच्छा है, लेकिन एक बार "समस्या" के रूप में सहेजे जाने के बाद, डेटा शब्दार्थ रूप से बेकार है क्योंकि यह सिर्फ मार्कडाउन है। मैंने किसी मुद्दे पर दिनांक, स्थान आदि जैसी अर्थ संबंधी जानकारी जोड़ने के लिए माइलस्टोन, मार्कडाउन हेडर, लेबल आदि के साथ प्रयोग किया है, लेकिन कुछ भी अच्छा काम नहीं आया। इसलिए मैंने GitHub इश्यू फॉर्म बॉडी पार्सर का निर्माण शुरू किया। यह उस समस्या को पार्स करने में मदद करता है जो दिनांक, लिंक, छवियों, सूचियों आदि को निकालने और उन्हें संरचित JSON डेटा में परिवर्तित करने के लिए एक फॉर्म के माध्यम से बनाई गई थी। इसे सीधे अन्य प्लेटफार्मों जैसे डिस्कॉर्ड, इवेंटब्राइट, मीटअप आदि पर भेजा जा सकता है या मेलिंग, ट्वीट्स आदि में उपयोग किया जा सकता है।
इश्यू फॉर्म बॉडी पार्सर किसी भी मार्कडाउन टेक्स्ट को पार्स करने के लिए लाइब्रेरी के रूप में npm
पर भी उपलब्ध है। हाल ही में मुझे एहसास हुआ कि किसी वेबसाइट के डेटा को संरचित करने के लिए संपूर्ण README.md
फ़ाइलों को पार्स किया जा सकता है:
query ($organization: String!, $repository: String!) { repository(owner: $organization, name: $repository) { id name object(expression: "main:README.md") { ... on Blob { text } } } }
यह रिपॉजिटरी की main
शाखा से फ़ाइल सामग्री को पुनः प्राप्त करने की क्वेरी है, और आप इसे "बॉडी पार्सर" में पास कर सकते हैं:
const structuredData = await bodyParser(readmeFile()?.repository.object.text)
अपने समुदाय विवरण की एक और प्रति रखने के बजाय, अब आप README.md
फ़ाइल से About
अनुभाग प्राप्त कर सकते हैं और इसे अपनी वेबसाइट पर उपयोग कर सकते हैं।
नवीनतम https://cdc.cy वेबसाइट के साथ मैं मुद्दों, README.md
फ़ाइलों और संरचित JSON डेटा के साथ जो संभव है उसकी सीमाओं का पता लगाना और आगे बढ़ाना चाहता था और मैं परिणाम से काफी खुश हूं:
README.md
या .json
फ़ाइलों से प्राप्त की जाती है; हर कोई संपादित कर सकता है, किसी सीएमएस या खाते आदि की आवश्यकता नहीं हैevents
रेपो पर अनुमोदित और इवेंट-लेबल वाले मुद्दे)
ये सभी सुविधाएँ ग्राफक्यूएल एपीआई के माध्यम से और बॉडी पार्सर के साथ मार्कडाउन फ़ाइलों को पार्स करके संभव थीं।
मैं इस अवधारणा पर कुछ समय से काम कर रहा हूं और यह अभी भी समय-समय पर आकार बदल रहा है। लेकिन जो बुनियादी विचार मैंने बर्लिनजेएस से अपनाए हैं वे नहीं बदले हैं:
यह सब बनाने में बहुत समय और ऊर्जा लगी है और अभी भी बहुत सी चीजें गायब हैं जिनके लिए मेरे पास समय नहीं है:
यदि आपको लगता है कि इससे आपको और आपके समुदाय को मदद मिल सकती है और आप पहेली को एक साथ जोड़ने में शामिल होना चाहते हैं, तो कृपया गिटइवेंट्स डिस्कॉर्ड सर्वर , गिटहब चर्चाओं पर या सीधे गिटहब मुद्दों में से किसी एक पर संपर्क करें।
यदि आप साइप्रस या बार्सिलोना में हैं, तो कृपया स्थानीय डेवलपर समूहों से जुड़ें और उनका समर्थन करें।