मेरे द्वारा बनाए गए ओपन सोर्स प्रोजेक्ट के पहचानकर्ता, पैकेज, या नामस्थान में अपने नाम का उपयोग करने से मैं कैसे बच सकता हूं?


15

मैं अपने समय में बहुत विकास करता हूं। मैं जिन परियोजनाओं पर काम करता हूं वे सभी केवल मनोरंजन और सीखने (अभी तक) के लिए हैं। मैं आमतौर पर मावेन के साथ जावा विकास करता हूं, लेकिन मुझे .NET और पायथन में डब करने के लिए भी जाना जाता है। मैं जिन परियोजनाओं पर काम करता हूं, वे सभी खुले स्रोत लाइसेंस का उपयोग करते हैं, हालांकि उनमें से अधिकांश किसी भी सार्वजनिक कोड रिपॉजिटरी पर नहीं हैं।

जावा / मावेन विकास के लिए मुझे एक अद्वितीय groupId(जैसे "com.mydomain") और एक अद्वितीय package(निर्देशिका) संरचना का उपयोग करने की आवश्यकता होती है , जिसमें आमतौर पर groupId.NET विकास शामिल होता namespacesहै जो अद्वितीय को प्रोत्साहित करता है जिसमें मैं जावा packageअवधारणा के समान सम्मेलनों का उपयोग करता हूं । विशिष्टता सुनिश्चित करने के लिए, मैं आमतौर पर अपने डोमेन नामों में से एक का उपयोग उल्टे भागों के साथ करता हूं (जैसे "ca.jessewebb"); मेरा मानना ​​है कि यह एक बहुत ही आम बात है।

मैं एक नया, खुला स्रोत, जावा / मावेन परियोजना (चलो इसे "न्यूप्रोज" कहता हूं) बनाने के प्रारंभिक चरणों में हूं और मैं इसे गीथहब पर रखना चाहूंगा। GitHub पर मेरा उपयोगकर्ता नाम "jessewebb" है, इसलिए यह इसे एक URL देगा जैसे https://github.com/jessewebb/newproj:। मैं "newproj.com" डोमेन नाम दर्ज तो मैं के रूप में "ca.jessewebb" और "ca.jessewebb.newproj" का उपयोग करने का फैसला किया परेशान करने के लिए नहीं चाहते हैं groupIdऔर packageक्रमश:।

यह मेरे साथ हुआ कि कोड में मेरी व्यक्तिगत पहचान की उपस्थिति और परियोजना के घर के हिस्से के रूप में (GitHub URL में) संभावित रूप से मेरे प्रोजेक्ट के साथ जुड़ने के बारे में दो बार सोचने के लिए संभावित योगदानकर्ता का कारण होगा। यह एक समस्या है, मैं नहीं चाहता कि यह मेरी परियोजना हो। मैं पसंद करूंगा अगर मैं कर सकता / सकती हूं, इसके बजाय, संदेश दें कि मेरे पास परियोजना नहीं है। अब, सभी ईमानदारी में, यह वास्तव में नहीं है कि एक समझौते के बड़ा क्योंकि मुझे शक है अपनी परियोजनाओं ज्यादा सामुदायिक भागीदारी जुटाने होगा लेकिन मैं यह भी भी रूप में देखते है और अधिक एक कारण के भयभीत योगदानकर्ताओं होने की किसी भी संभावना से बचने के लिए।

एक अन्य उदाहरण के लिए, मैंने कुछ साल पहले एक Google कोड परियोजना बनाई थी (चलो इसे "ओल्डप्रोज" कहते हैं)। जब मैंने प्रोजेक्ट बनाया, तो मुझे पता था कि मैं इसे Google कोड पर होस्ट करने जा रहा हूं, इसलिए मैंने groupId"com.googlecode.oldproj" के पैकेज नाम और पैकेज का उपयोग किया , जो कि डिफ़ॉल्ट डोमेन नाम के विपरीत है Google कोड हर नई परियोजना प्रदान करता है। यह एक महान विचार नहीं था; एक या एक साल बाद, मैंने कोड को एक अलग रेपो में स्थानांतरित कर दिया और मुझे इन पहचानकर्ताओं का नाम बदलना पड़ा (अच्छी तरह से मेरे पास नहीं थालेकिन ...)। उस समय, मेरे पास कोई डोमेन नाम नहीं था और मैंने "oldproj.com" डोमेन नाम खरीदना समाप्त कर दिया और मैंने इसका उपयोग किया। मुझे यह पसंद आया क्योंकि इसने परियोजना को अपनी पहचान दी और मैं हर जगह कोड पर अपना नाम नहीं चिपका रहा था। मैं आसानी से "jessewebb.ca" डोमेन नाम पंजीकृत कर सकता था और पैकेज नाम के रूप में "ca.jessewebb.oldproj" का उपयोग कर सकता था, लेकिन मैंने ऐसा नहीं किया क्योंकि मेरे पास भी यही चिंता थी।

तो मेरा सवाल है ...

पैकेज / नामस्थान की विशिष्टता बनाए रखते हुए ओपन सोर्स प्रोजेक्ट बनाते समय मैं अपने स्वयं के (डोमेन) नामों का उपयोग करने से कैसे बच सकता हूं?

जैसा कि परियोजनाएं अधिक गति प्राप्त करती हैं, यह डोमेन नामों को पंजीकृत करने के लिए समझ में आता है, लेकिन यह मूर्खतापूर्ण लगता है और इससे पहले ऐसा करने के लिए पैसे की बर्बादी होती है। मुझे एहसास है कि मुझे वास्तव में कोड में इसका उपयोग करने के लिए डोमेन नाम का मालिक नहीं है, लेकिन यह गलत लगता है और इस बीच आपके द्वारा इसे छीनने वाले एक स्क्वीटर को जन्म दे सकता है। इस दुविधा के बारे में अन्य लोग क्या करते हैं? क्या लोकप्रिय (व्यापक रूप से उपयोग किए जाने वाले, बड़े समुदाय, आदि) के उदाहरण हैं ओपन सोर्स प्रोजेक्ट्स जिसमें मूल डेवलपर की पहचान अपने स्वयं के पहचानकर्ता (ओं) के हिस्से के रूप में होती है?


2
वाह, काफी सुस्त, लेकिन अभी भी एक अच्छा सवाल है!
मार्सेल

1
अपने संकुल / नामस्थानों में UUID का उपयोग करें? ;-)
Jeroen

जवाबों:


5

अपनी परियोजनाओं में, मैं उन्हें एक नाम देता हूं, लेकिन जरूरी नहीं कि वे एक डोमेन हों। इसलिए मेरे पैकेज के नाम (और नामस्थान) आम तौर पर "प्रोजेक्टनाम.लिफ्टनाम" हैं, भले ही कोड होस्ट किया गया हो।

मैं .NET के लिए उपयोग किया जाता हूं जहां यह काफी स्वतंत्र रूप से नियंत्रित किया जाता है।


मुझे लगता है कि यह एक अच्छा समाधान है जब मेरे पास नहीं है या (तुरंत) परियोजना के लिए एक डोमेन पंजीकृत है। जब मैं डोमेन करता हूं तो मैं भी ऐसा कर सकता था। यह भी सुनिश्चित करने में मदद करेगा कि मैं अद्वितीय परियोजना नामों का उपयोग करता हूं, जो कभी भी बुरी बात नहीं है। मैं शायद जल्द ही इस जवाब को स्वीकार कर लूंगा, जब तक कि कोई बेहतर नहीं आएगा। धन्यवाद!
जेसी वेब

हाँ, .NET प्रोग्रामर ऐसा करते हैं, लेकिन यह एक अच्छा विचार नहीं है। यदि प्रोजेक्ट नाम एक बना-बनाया शब्द है, तो यह ठीक हो सकता है, लेकिन मैं चाहता हूं कि मेरे पास प्रत्येक "डाउनलोडर" या "ब्राउज़र" प्रोजेक्ट के लिए एक डॉलर हो।
रॉस पैटरसन

1
मैंने अपनी सभी परियोजनाओं के लिए इस रणनीति का उपयोग करना शुरू कर दिया है। मैं परियोजनाओं के लिए एक अद्वितीय नाम के साथ आता हूं, लगभग एक कोड-नाम (दंड को क्षमा), और इसका उपयोग मेरे पैकेज / नामस्थान के लिए करता हूं। मुझे डोमेन नाम के बारे में चिंता करने से बचाता है, कम से कम जब तक समय आता है जब मैं चाहता हूं।
जेसी वेब वेब

2

मुझे याद नहीं है कि मैंने इसे कहाँ देखा है, लेकिन मैंने इसे इस तरह से एक संरचना का उपयोग करने का सुझाव दिया है:

YourIdentifier.YourProduct.YourComponent

YourIdentifier कुछ ऐसा हो सकता है जैसे आप खुद के डोमेन, अपने (काफी अनोखे) इंटरनेट उपनाम, आदि। घटक का नाम आपके उत्पाद के "कोर" कोड के लिए छोड़ दिया जाता है। उदाहरण के लिए, मेरे पास एक छोटा MVC है जिसका नाम BarelyMVC है, इसलिए मेरे पास इस तरह के नाम स्थान हैं:

Earlz.BarelyMVC
Earlz.BarelyMVC.Authentication
Earlz.BarelyMVC.Caching

आदि। अधिकांश मामलों में आपका ऑनलाइन उपनाम अन्य डेवलपर्स के बीच संघर्ष से बचने के लिए बहुत अनूठा है

यदि आप अपने ऑनलाइन उपनाम का उपयोग करने से डरते हैं, तो अपने लिए एक "लेबल" बनाएं। इसे औपचारिक रूप से कंपनी या कुछ भी (या यहां तक ​​कि एक डोमेन) के रूप में पंजीकृत होने की आवश्यकता नहीं है। उदाहरण के लिए, लोकप्रिय Json.Netपुस्तकालय नेमस्पेस का उपयोग करता है Newtonsoft.Json। यह स्पष्ट रूप से लेखकों के नाम "न्यूटन" पर आधारित है, लेकिन मुझे नहीं लगता कि कोई भी वास्तव में इस बारे में परवाह करता है। और यदि आपके पास एक औपचारिक कंपनी पंजीकृत है, तो आप निश्चित रूप से इसका उपयोग कर सकते हैं। उदाहरण के लिए मेरी कंपनी द्वारा निर्मित अधिकांश सार्वजनिक एपीआई में नाम के साथ शुरुआत होती है PreEmptiveSolutions, कंपनी का नाम


1
.NET दुनिया में बहुत आम है, जहां बैकवर्ड-डोमेन-नाम की चीज वास्तव में कभी नहीं पकड़ी गई है। और जब तक "YourIdentifier" गंभीर रूप से अद्वितीय है, तब तक यह काम करता है। लेकिन यहां तक ​​कि न्यूटनसॉफ्ट केवल आकस्मिक रूप से अद्वितीय है - जेम्स न्यूटन-किंग वास्तव में ऐसी कंपनी नहीं चलाते हैं, और यह ट्रेडमार्क केवल न्यूजीलैंड में मौजूद होगा यदि उसने किया।
रॉस पैटरसन

1

कोई नियम नहीं है कि जावा पैकेज नाम या .NET नामस्थान डोमेन नाम हो सकते हैं। यहां तक ​​कि आवश्यकता नहीं है कि वे अद्वितीय हों, हालांकि यह निश्चित रूप से एक अच्छा विचार है। मुझे वास्तव में लगता है कि आप उपयोग करने के लिए सही थे com.googlecode.oldproj, और com.oldprojजब तक मैं नए डोमेन नाम के लिए प्रचार प्राप्त करने की कोशिश नहीं कर रहा था, तब तक आपके जूते में मैं स्विच नहीं करता ।


मुझे लगता है कि कोई नियम नहीं है कि आपको डोमेन नाम का उपयोग करना है, लेकिन मुझे लगता है कि यह एक बहुत ही सामान्य अभ्यास है, कम से कम जावा और .NET दुनिया में, क्योंकि यह अद्वितीयता सुनिश्चित करने में मदद करता है। इसके अलावा, आपने कहा कि आपको लगता है कि मैं उपयोग करने के लिए सही था com.googlecode.oldproj, आपको क्यों लगता है कि यह एक अच्छा विचार था? रेट्रोस्पेक्ट में, मैंने सोचा कि यह होस्टिंग प्रदाता को कोड टाई करने के लिए मूर्खतापूर्ण था।
जेसी वेब

1
बिंदु यह नहीं है कि यह आपको कुछ होस्टिंग प्रदाता से जोड़ता है, मुद्दा यह है कि यह एक पारंपरिक-विशिष्ट पहचानकर्ता है जो इस परियोजना के लिए अजीब है। जो सभी तकनीकी रूप से "com.jesseweb.oldproj" है। इसलिए चूंकि आप अपना नाम इससे नहीं जोड़ना चाहते थे, इसलिए यह एक अच्छा निर्णय था। जावा पैकेज और .NET नेमस्पेस को एक डाउनलोड साइट आदि पर निर्देशित करने के लिए साइनपोस्ट नहीं होना चाहिए , बस एक पहचानकर्ता जो सम्मेलन द्वारा अद्वितीय है।
रॉस पैटरसन
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.