डार्ट जैसी भाषाओं के संबंध में GPL कैसे काम करता है जो अन्य भाषाओं के लिए संकलित है?


11

Google की डार्ट भाषा क्रोमियम के एक विशेष निर्माण के अलावा किसी भी वेब ब्राउज़र द्वारा समर्थित नहीं है, जिसे डार्टियम के रूप में जाना जाता है। उत्पादन कोड के लिए डार्ट का उपयोग करने के लिए आपको इसे डार्ट-> जावास्क्रिप्ट कंपाइलर / अनुवादक के माध्यम से चलाना होगा और फिर अपने वेब एप्लिकेशन में आउटपुट जावास्क्रिप्ट का उपयोग करना होगा।

क्योंकि जावास्क्रिप्ट एक व्याख्या की गई भाषा है जो सभी को "बाइनरी" (Aka, .js फ़ाइल) प्राप्त होती है, जिसे स्रोत कोड भी मिला है।

अब, GNU जनरल पब्लिक लाइसेंस v3.0 में कहा गया है कि:

"किसी कार्य के लिए" स्रोत कोड "का अर्थ है उसमें संशोधन करने के लिए कार्य का पसंदीदा रूप।"

इसका अर्थ यह होगा कि जावास्क्रिप्ट कोड के अलावा मूल डार्ट कोड भी अंतिम उपयोगकर्ता को प्रदान किया जाना चाहिए। क्या इसका मतलब यह है कि डार्ट में लिखे गए किसी भी वेब एप्लिकेशन को अपनी वेबसाइट के सभी आगंतुकों को मूल डार्ट कोड भी प्रदान करना होगा, भले ही स्रोत कोड की एक प्रतिलिपि पहले से ही मानव पठनीय / लेखन योग्य / परिवर्तनीय रूप में प्रदान की गई हो?


3
मैं वास्तव में .js को "स्रोत कोड" नहीं कहूंगा जो कि किसी भी अधिक से अधिक obfuscated js "स्रोत कोड" है। ज़रूर, यह अभी भी व्याख्यायित है, लेकिन किसी भी तरह से यह स्रोत कोड नहीं है। यह एक PHP स्क्रिप्ट के HTML आउटपुट की तरह है। हालांकि यह सुनिश्चित नहीं है कि यह लाइसेंस-वार कैसे काम करता है।
बेन ब्रोका

जब आप "उत्पादन कोड" कहते हैं, तो क्या आपका मतलब "उत्पादित" है? आंतरिक उपयोग के लिए कोई स्रोत कोड जारी करने की आवश्यकता नहीं है। क्या डार्ट कोड आप किसी और के जीपीएल (या अन्य) लाइसेंस कोड के आधार पर उपयोग कर रहे हैं ?, या यह सभी मूल कोड आपके द्वारा विकसित किया गया है? उत्तर वास्तव में उन विवरणों पर निर्भर करता है
पॉल

1
यदि आप GPL'd एप्लिकेशन चलाते हैं, तो आपको आगंतुकों को स्रोत कोड प्रदान करने की आवश्यकता नहीं है। यदि आप एप्लिकेशन वितरित करते हैं तो आपको केवल स्रोत कोड प्रदान करना होगा । (यदि यह AGPL'd था तो आपको स्रोत प्रदान करना था: gnu.org/licenses/why-affero-gpl.html )
JCasso

1
यह मानते हुए कि एप्लिकेशन एक सार्वजनिक वेब पर गंभीर रूप से चल रहा है, तो क्या कोड हर आगंतुक को "वितरित" नहीं किया जा रहा है? भले ही इसे निष्पादित किए जाने से पहले केवल ब्राउज़र द्वारा अस्थायी स्थान पर डाउनलोड किया गया हो।
पीटर-डब्ल्यू

@ पीटर-डब्ल्यू मैं कहता हूं कि तर्क तकनीकी है और स्पष्ट नहीं है। यह है कि ब्राउज़र डाउनलोड जावास्क्रिप्ट तरह का एक कार्यान्वयन विस्तार है; अधिकांश उपयोगकर्ता इस बात से अवगत नहीं हैं कि उन्हें कुछ भी "वितरित" किया गया है, जबकि अधिकांश उपयोगकर्ता सीडी को डाउनलोड करने या "वितरण" के रूप में सामान की गणना करने को समझेंगे। इस मामले में, कार्यान्वयन तंत्र एक वितरण (ब्राउज़र और अस्थायी) है, जो पूरे मामले को मेरे लिए अस्पष्ट बनाता है। संपादित करें : एक डार्ट कोडर के दृष्टिकोण से एक तरह से js कोड "bytecode" है, है ना?
एंड्रेस एफ।

जवाबों:


9

हां, यदि कोड GPL के अंतर्गत है और आप आउटपुट जावास्क्रिप्ट को वितरित करते हैं, तो आपको मूल डार्ट कोड भी प्रदान करना होगा। यह आमतौर पर आपकी साइट से स्रोत कोड डाउनलोड करने के लिए एक लिंक के साथ किया जाएगा, लेकिन आप इसे टिप्पणी या इस तरह से भी एम्बेड कर सकते हैं।

मुझे लगता है कि इस मामले में जीपीएल का अनुपालन करने का सबसे आसान तरीका स्रोत वितरित करने के लिए विकल्प डी का उपयोग करना है

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

जब आप जेएस फाइल को अपने पेज में शामिल करते हैं तो अनिवार्य रूप से आप ऐसा करते हैं

<script src="file.js" /><!-- source at http://example.com/path/to/modified/source/file.dart -->

2
कृपया मेरा उत्तर पढ़ें। जीपीएल के बारे में टिप्पणी की सूचना दें कि मूल स्रोत को जारी करने की आवश्यकता नहीं है, केवल इस मामले में उत्पन्न होता है। इस स्थिति में, GPL को उसे वितरित करने की आवश्यकता नहीं होगी, इसलिए वितरण तंत्र कोई मायने नहीं रखता। जैसा मैंने कहा, अन्य लाइसेंस के अलग नियम हैं।
पॉल

1
मुझे लगता है कि जीसीसी एक उदाहरण है। चूंकि जीसीसी जीपीएल है और मैं इसका उपयोग "बंद स्रोत" प्रोग्राम को संकलित करने के लिए करता हूं, तो क्या मुझे मूल स्रोत जारी करने की आवश्यकता है? मेरा मानना ​​है कि किसी भी GPL "संकलक" के लिए वही सच होगा
पॉल

3
यह उत्तर गलत है। भले ही डार्ट कोड जीपीएल के तहत लाइसेंस प्राप्त है, आपको डार्ट स्रोत कोड प्रदान करने की आवश्यकता नहीं है जब तक आप आवेदन वितरित नहीं करते हैं। सर्वर पर GPL'd एप्लिकेशन चलाने से उस एप्लिकेशन के लिए स्रोत कोड प्रदान करने की आवश्यकता नहीं होती है। इसीलिए AGPL नाम का एक और लाइसेंस है । उस विशिष्ट उद्देश्य के लिए।
जेकासो

2
@Jasso जो कि सर्वर पर कोड चल रहा था, तो सही होगा, लेकिन डार्ट के परिणाम में ऑब्जेक्ट कोड जावास्क्रिप्ट है जो क्लाइंट को अधिकांश मामलों में वितरित किया जाता है। जाहिर है, अगर आप जावास्क्रिप्ट सर्वर-साइड चलाने की तरह कुछ अजीब कर रहे हैं, तो यह वितरण के रूप में नहीं गिना जाता है।
डिर्क होलस्पॉप

3
@JCasso जो केवल सर्वर-साइड कोड पर लागू होता है। उसी पृष्ठ से: Drupal का जावास्क्रिप्ट, जिसमें jQuery की प्रतिलिपि शामिल है, जो Drupal के साथ शामिल है, स्वयं GPL के अंतर्गत है, इसलिए कोई भी जावास्क्रिप्ट जो Drupal के जावास्क्रिप्ट के साथ ब्राउज़र में इंटरैक्ट करता है, उसे भी GPL या GPL संगत लाइसेंस के अंतर्गत होना चाहिए।
डर्क होलसॉपल

2

सबसे पहले हम जीपीएल की बात कर रहे हैं, एजीपीएल की नहीं।

यदि आप एक GPL'd आवेदन नहीं वितरित करते हैं, यदि आप इसे सर्वर पर चलाते हैं, तो आपको स्रोत कोड प्रदान करने की आवश्यकता नहीं है । उसके लिए एजीपीएल है। जीपीएल सभी वितरण के बारे में है।

Drupal से पूछे जाने वाले प्रश्न:

क्या मुझे अपनी वेब साइट के लिए कोड किसी को भी देना है जो इसे देखता है?

जीपीएल "वितरण" के रूप में गिनने के लिए एक वेब साइट को देखने पर विचार नहीं करता है, इसलिए आपको अपने सर्वर पर चल रहे कोड को साझा करने की आवश्यकता नहीं है। http: //drupal.org/licensing/faq/#q6

कृपया ध्यान दें कि Drupal को GPL के अंतर्गत लाइसेंस प्राप्त है और इसमें js फाइलें (बहुत सारी) हैं।

GNU से:

GNU अफेरो जीपीएल का उद्देश्य एक ऐसी समस्या को रोकना है जो सर्वर पर अक्सर उपयोग किए जाने वाले मुफ्त कार्यक्रमों के डेवलपर्स को प्रभावित करती है।

मान लीजिए कि आप सामान्य GNU GPL के तहत एक मुफ्त कार्यक्रम विकसित करते हैं और जारी करते हैं। यदि डेवलपर डी कार्यक्रम को संशोधित करता है और इसे जारी करता है, तो जीपीएल को उसके संस्करण को जीपीएल के तहत भी वितरित करने की आवश्यकता होती है। इस प्रकार, यदि आप उसके संस्करण की एक प्रति प्राप्त करते हैं, तो आप कुछ या सभी परिवर्तनों को अपने स्वयं के संस्करण में शामिल करने के लिए स्वतंत्र हैं।

लेकिन मान लीजिए कार्यक्रम मुख्य रूप से सर्वर पर उपयोगी है। जब डी कार्यक्रम को संशोधित करता है, तो वह संभवतः इसे अपने सर्वर पर चला सकता है और कभी भी प्रतियां जारी नहीं कर सकता है। फिर आपको उसके संस्करण के स्रोत कोड की प्रतिलिपि कभी नहीं मिलेगी, इसलिए आपको कभी भी अपने संस्करण में उसके परिवर्तनों को शामिल करने का मौका नहीं मिलेगा। आप उस परिणाम को पसंद नहीं कर सकते हैं।

GNU Affero का उपयोग GPL उस परिणाम से बचता है। यदि D एक सर्वर पर अपना संस्करण चलाता है जिसका उपयोग हर कोई कर सकता है, तो आप भी इसका उपयोग कर सकते हैं। यह मानते हुए कि उसने सर्वर के उपयोगकर्ताओं को उसके संस्करण के स्रोत कोड को डाउनलोड करने देने के लिए लाइसेंस की आवश्यकता का पालन किया है, आप ऐसा कर सकते हैं, और फिर आप अपने संस्करण में उसके बदलावों को शामिल कर सकते हैं। (यदि उसने इसका पालन नहीं किया है, तो आप अपने वकील से उसकी शिकायत करें।) स्रोत: http://www.gnu.org/licenses/why-affero-gpl.html


2
लेकिन यह देखते हुए कि यह डार्ट है, जिसे जावास्क्रिप्ट के लिए संकलित किया गया है, और फिर गिल्ट के रूप में निष्पादित किया जाता है, क्या यह लागू होता है?
विंस्टन एवर्ट

1
इसके बारे में GPL स्पष्ट है। अगर मैं आपको एक ubuntu सीडी दे दूं तो मुझे आपको स्रोत कोड प्राप्त करने का एक तरीका प्रदान करना चाहिए। अगर मैं एक फाइलर के लिए ubuntu.iso डालता हूं तो मुझे एक डाउनलोड लिंक (या ऐसा कुछ) प्रदान करना होगा। इसे वितरण कहते हैं। यदि आप इसे वितरित करते हैं तो आपको स्रोत कोड प्रदान करना होगा। लेकिन एक ऑनलाइन ऐप (एक सर्वर पर) को कभी भी "वितरण" नहीं गिना जाता है।
19 फरवरी को JCasso

3
मुद्दा यह है कि कोड ब्राउज़र पर चलता है, सर्वर पर नहीं। आपका जवाब केवल सार्थक है अगर हम सर्वर पर चलने वाले कोड को देख रहे हैं। लेकिन हम नहीं हैं। हम क्लाइंट कंप्यूटर पर चलने वाले कोड को देख रहे हैं। यदि कोड सर्वर पर निष्पादित किया गया था, तो आप सही होंगे, यह वितरण नहीं है। लेकिन क्योंकि कोड को ब्राउज़र द्वारा डाउनलोड किया जाता है और इसे चलाया जाता है, यह वितरण है और आपका उत्तर अपरिवर्तनीय है।
विंस्टन एवर्ट

2
वास्तव में, मुझे लगता है कि यह बहुत मायने रखता है जो सीपीयू इसे संसाधित करता है। यदि मैं अपना कोड मेरे सीपीयू पर चलाता हूं, तो आवश्यकता से, आपने अपना कोड मुझे वितरित कर दिया है। सभी इरादों और उद्देश्यों के लिए इसके बिल्कुल समान है जैसे कि मैंने एक कार्यक्रम डाउनलोड किया और इसे चलाया। इस सवाल पर पहले चर्चा की गई है: stackoverflow.com/questions/1239470/… , programmers.stackexchange.com/questions/62869/…
विंस्टन एवर्ट

2
इसके अलावा, एजीपीएल पेज देखें जिसे आपने लिंक किया है। यह सर्वर पर निष्पादित कोड की स्पष्ट रूप से चर्चा करता है, न कि क्लाइंट पर निष्पादित कोड। अगर लेखक को लगता है कि GPL आपके जावास्क्रिप्ट निष्पादित कोड पर लागू नहीं होता है, तो उसने अपनी चर्चा में इसका उल्लेख किया होगा।
विंस्टन एवर्ट

1

सामान्य तौर पर, यह वास्तव में लाइसेंस पर निर्भर करता है। आपके मामले में, Dart एक बुरा उदाहरण है क्योंकि यह BSD है, और ऐसा लगता है कि GNU 3.0 उस मामले को कवर करता है जिसके बारे में आप बात कर रहे हैं। एक गैर-वकील के रूप में मैं उस उद्धरण की व्याख्या करता हूं "उत्पन्न कोड विशेष रूप से कवर नहीं किया गया है"

डार्ट होम पेज इसे संदर्भित करता है: बीएसडी लाइसेंस

तो आप जीपीएल के बारे में सवाल उठाते हैं

इसके अलावा: GNU 3.0 लाइसेंस

क्या कोई ऐसा तरीका है जिससे मैं अपने प्रोग्राम के उपयोग से प्राप्त होने वाले आउटपुट को GPL कर सकता हूं? उदाहरण के लिए, यदि मेरे प्रोग्राम का उपयोग हार्डवेयर डिज़ाइन को विकसित करने के लिए किया जाता है, तो क्या मुझे इसकी आवश्यकता हो सकती है कि ये डिज़ाइन निशुल्क होना चाहिए? (#GPLOutput)

सामान्य तौर पर यह कानूनी रूप से असंभव है; कॉपीराइट कानून आपको अपने प्रोग्राम का उपयोग करके अपने डेटा से उत्पादन करने वाले लोगों के उपयोग के बारे में कुछ नहीं कहता है। यदि उपयोगकर्ता आपके डेटा को दर्ज करने या परिवर्तित करने के लिए आपके प्रोग्राम का उपयोग करता है, तो आउटपुट पर कॉपीराइट उसका है, न कि आप का। आमतौर पर, जब कोई प्रोग्राम अपने इनपुट को किसी अन्य रूप में ट्रांसलेट करता है, तो> आउटपुट का कॉपीराइट स्टेटस उस इनपुट से प्राप्त होता है, जिससे वह उत्पन्न हुआ था।

तो आउटपुट के उपयोग में आपके कहने का एकमात्र तरीका यह है कि क्या आपके प्रोग्राम में टेक्स्ट से आउटपुट के पर्याप्त भाग कॉपी किए गए हैं (कम या ज्यादा)। उदाहरण के लिए, बाइसन के उत्पादन का हिस्सा (ऊपर देखें) जीएनयू जीपीएल द्वारा कवर किया जाएगा, अगर हमने इस विशिष्ट मामले में अपवाद नहीं बनाया था।

यदि आप ऐसा करने के लिए कोई तकनीकी कारण नहीं है, तो भी आप कृत्रिम रूप से एक प्रोग्राम को उसके आउटपुट में कुछ कॉपी कर सकते हैं। लेकिन अगर वह कॉपी किया हुआ पाठ बिना किसी व्यावहारिक उद्देश्य के काम करता है, तो उपयोगकर्ता केवल आउटपुट से टेक्स्ट को हटा सकता है और केवल शेष का उपयोग कर सकता है। तब उसे कॉपी किए गए पाठ के पुनर्वितरण पर शर्तों का पालन नहीं करना होगा।


3
सवाल डार्ट कंपाइलर के बारे में नहीं है जो कि GPL है (जो कि BTW प्रोग्राम (कंपाइलर) आउटपुट के लिए अप्रासंगिक होगा), लेकिन डार्ट प्रोग्राम के बारे में जो कि GPL'd है।

2
@delnan मैंने सवाल वही नहीं पढ़ा जो आपने किया था। 1) मेरा पहला लिंक देखें, डार्ट बीएसडी है। 2) यदि दारा कार्यक्रम GPL'd होता तो वह सवाल नहीं पूछता। मैंने प्रश्न को पढ़ा क्योंकि वह जानना चाहता था कि क्या उसे अपना डार्ट स्रोत कोड भी जारी करना है। क्या आपने वास्तव में मेरा उत्तर पढ़ा है?
पॉल

2
ठीक है, आप इसे पढ़ने वाले को ही पसंद करते हैं। जबकि ओपी स्पष्ट रूप से यह उल्लेख नहीं करता है कि डार्ट प्रोग्राम प्रश्न में GPL'd है, लेकिन डार्ट कंपाइलर को संभालने पर उस पर कुछ भी संकेत नहीं है, इसलिए मैं यह मानने को तैयार नहीं हूं कि उसने इतना कम शोध किया।

क्षमा करें, इसे बाहर खींच लें ... इसलिए यदि न तो डार्ट प्रोग्राम GPL है और डार्ट BSD है (वास्तव में, यह है, या कम से कम साइट कहती है कि यह है), तो प्रश्न क्या है? अगर यह केवल "क्या मुझे बी (जीपीएलएल) जारी करना है जब मैं बी (जीपीएल नहीं) जारी करना चाहता हूं", तो यह एक डुप्लिकेट प्रश्न है
पॉल

2
@ पाओल मेरी धारणा, और हर किसी की धारणा, डार्ट कार्यक्रम वास्तव में GPL'd है।

0

मूल प्रश्न है:

क्या वेब पेज पर जावास्क्रिप्ट शामिल है (जैसे एक स्क्रिप्ट टैग के माध्यम से संदर्भित) गिनना "GPLed काम" के रूप में?

यदि ऐसा होता है, तो आपको कोड को संशोधित करने के लिए पसंदीदा रूप में स्रोत उपलब्ध कराना होगा, यदि आप नहीं करते हैं। इस मामले में पसंदीदा फॉर्म मूल डार्ट स्रोत कोड है जो जावास्क्रिप्ट उत्पन्न करने के लिए उपयोग किया जाता है।

मैं FSF साइट पर इस सवाल का स्पष्ट जवाब नहीं पा सकता हूं, लेकिन स्टॉलमैन के निबंध "द जावास्क्रिप्टस्क्रिप्ट ट्रैप" से यह संकेत मिलता है कि वह इसे Conveying मानता है और जैसे कि आपको मूल डार्ट स्रोत कोड उपलब्ध कराना होगा। कीमा बनाया हुआ संस्करणों की अनुमति देने के बारे में उनका ध्यान दें, जिसमें लाइसेंस का पाठ शामिल नहीं है, लेकिन फिर भी वे लाइसेंस द्वारा कवर किए गए हैं।

यह भी देखें कि एक अपवाद के लिए जावास्क्रिप्ट और टेम्पलेट्स के बारे में अक्सर पूछे जाने वाले प्रश्न जो GPLed जावास्क्रिप्ट को GPLed किए बिना उपयोग करने की अनुमति देते हैं।

यह जानने का सबसे अच्छा तरीका है कि आप जो करना चाहते हैं वह लाइसेंस के अनुरूप है, कोड के कॉपीराइट धारक से पूछना है, क्योंकि केवल उन्हें लाइसेंस लागू करने का अधिकार है। उन्होंने लाइसेंस की व्याख्या अलग तरीके से की होगी और अपनी व्याख्या को स्पष्ट करने के लिए एक अपवाद जोड़ने के लिए तैयार हो सकते हैं।


वास्तव में, यह सवाल नहीं है। यदि आप प्रश्न को ध्यान से पढ़ते हैं, तो ओपी मानता है कि आपको जावास्क्रिप्ट को वितरित करने की आवश्यकता होगी। इस सवाल पर इसके केवल अन्य जिन्होंने उस व्याख्या पर सवाल उठाया है। सवाल यह है कि क्या उसे डार्ट कोड भी वितरित करना है।
विंस्टन इवर्ट

@InstonEwert जब मैं कहता हूं कि "स्रोत कोड" का मतलब है कि जावास्क्रिप्ट बनाने के लिए इस्तेमाल की जाने वाली मूल डार्ट स्रोत फाइलें। मैं इसे स्पष्ट करने के लिए अपने उत्तर को अपडेट करूंगा।
क्रेग
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.