Open Source License Compliance: A Practical Guide for Software Companies

Navigate open source license compliance with license categorization, SBOM generation, copyleft obligations, and automated compliance scanning for commercial software.

E
ECOSIRE Research and Development Team
|16 मार्च 20268 मिनट पढ़ें1.8k शब्द|

हमारी Compliance & Regulation श्रृंखला का हिस्सा

पूरी गाइड पढ़ें

ओपन सोर्स लाइसेंस अनुपालन: सॉफ्टवेयर कंपनियों के लिए एक व्यावहारिक मार्गदर्शिका

औसत व्यावसायिक एप्लिकेशन में 77% ओपन-सोर्स कोड होता है, जो 500+ निर्भरताओं में फैला होता है। प्रत्येक निर्भरता विशिष्ट दायित्वों के साथ अपना स्वयं का लाइसेंस रखती है। इन दायित्वों का उल्लंघन करने पर आपकी कंपनी मुकदमों, जबरन कोड प्रकटीकरण और प्रतिष्ठा को नुकसान पहुंचा सकती है। फिर भी अधिकांश कंपनियों के पास ओपन-सोर्स लाइसेंस पर नज़र रखने या उनका अनुपालन करने की कोई प्रक्रिया नहीं है।

यह मार्गदर्शिका लाइसेंस वर्गीकरण से लेकर स्वचालित स्कैनिंग और एसबीओएम पीढ़ी तक, ओपन-सोर्स लाइसेंस अनुपालन के लिए एक व्यावहारिक रूपरेखा प्रदान करती है।

मुख्य बातें

  • सभी ओपन-सोर्स लाइसेंस एक जैसे नहीं होते: अनुमेय लाइसेंस लगभग किसी भी चीज़ की अनुमति देते हैं, कॉपीलेफ्ट लाइसेंस के लिए आपको संशोधन साझा करने की आवश्यकता होती है
  • सामग्री का सॉफ़्टवेयर बिल (एसबीओएम) सरकारी खरीद में एक कानूनी आवश्यकता बनता जा रहा है (यूएस कार्यकारी आदेश 14028)
  • सीआई/सीडी में स्वचालित लाइसेंस स्कैनिंग गैर-अनुपालक निर्भरताओं को आपके कोडबेस में प्रवेश करने से रोकती है
  • कॉपीलेफ्ट "संक्रमण" जोखिम वास्तविक है: एक जीपीएल निर्भरता आपको अपने संपूर्ण एप्लिकेशन को ओपन-सोर्स करने के लिए बाध्य कर सकती है

लाइसेंस श्रेणियाँ

अनुमेय लाइसेंस (कम जोखिम)

लाइसेंसदायित्वव्यावसायिक उपयोगसंशोधनवितरण
एमआईटीकॉपीराइट नोटिस + लाइसेंस शामिल करेंहाँहाँहाँ
बीएसडी 2-खंडकॉपीराइट नोटिस + लाइसेंस शामिल करेंहाँहाँहाँ
बीएसडी 3-खंडवही + कोई समर्थन दावा नहींहाँहाँहाँ
अपाचे 2.0नोटिस + लाइसेंस + राज्य परिवर्तन + पेटेंट अनुदान शामिल करेंहाँहाँहाँ
आईएससीकॉपीराइट नोटिस + लाइसेंस शामिल करेंहाँहाँहाँ

व्यावसायिक उपयोग के लिए सुरक्षित। अपने वितरण में लाइसेंस टेक्स्ट और कॉपीराइट नोटिस शामिल करें। Apache 2.0 को मूल कोड में किसी भी बदलाव को नोट करने की आवश्यकता होती है और इसमें पेटेंट लाइसेंस भी शामिल होता है।

कमजोर कॉपीलेफ्ट (मध्यम जोखिम)

लाइसेंसदायित्वमुख्य प्रतिबंध
एलजीपीएल v2.1/v3एलजीपीएल कोड में संशोधन साझा करें; यदि गतिशील रूप से लिंक किया गया है तो आपका कोड मालिकाना बना रहता हैस्टेटिक लिंकिंग कॉपीलेफ्ट को ट्रिगर कर सकती है
एमपीएल 2.0एमपीएल फ़ाइलों में संशोधन साझा करें; नई फ़ाइलें मालिकाना हो सकती हैंफ़ाइल-स्तर कॉपीलेफ्ट
ईपीएल 2.0संशोधन साझा करें; द्वितीयक लाइसेंस विकल्प उपलब्ध हैमॉड्यूल-स्तरीय कॉपीलेफ्ट

सावधानीपूर्वक उपयोग करें। एलजीपीएल पुस्तकालयों को साझा (गतिशील) पुस्तकालयों के रूप में रखें, स्थिर रूप से लिंक्ड नहीं। एमपीएल-लाइसेंस प्राप्त कोड को अपने मालिकाना कोड से अलग फाइलों में रखें।

मजबूत कॉपीलेफ्ट (उच्च जोखिम)

लाइसेंसदायित्वमुख्य प्रतिबंध
जीपीएल वी2व्युत्पन्न कार्यों को जीपीएल-लाइसेंस प्राप्त होना चाहिएलिंक करने से व्युत्पन्न कार्य बनता है
जीपीएल वी3v2 + एंटी-टिवोइज़ेशन + पेटेंट अनुदान के समानव्यापक कॉपीलेफ्ट
एजीपीएल v3GPL v3 + नेटवर्क उपयोग ट्रिगर कॉपीलेफ्ट के समानसर्वर-साइड उपयोग मायने रखता है
एसएसपीएलसंपूर्ण "सेवा" स्टैक ओपन-सोर्स होना चाहिएसबसे व्यापक कॉपीलेफ्ट

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


अनुपालन कार्यप्रवाह

चरण 1: एक एसबीओएम उत्पन्न करें

# For Node.js projects (using CycloneDX)
npx @cyclonedx/cyclonedx-npm --output-file sbom.json --spec-version 1.5

# For Python projects
pip install cyclonedx-bom
cyclonedx-py environment --output sbom.json

# For multi-language projects (using Syft)
syft . -o cyclonedx-json > sbom.json

चरण 2: लाइसेंस अनुपालन के लिए स्कैन करें

# Using license-checker for Node.js
npx license-checker --production --json --out licenses.json

# Using scancode-toolkit (comprehensive, all languages)
scancode --license --copyright --output-json scan-results.json .

चरण 3: वर्गीकृत करें और अनुमोदित करें

एक अनुमोदित लाइसेंस सूची बनाएं:

{
  "approved": [
    "MIT", "BSD-2-Clause", "BSD-3-Clause", "Apache-2.0",
    "ISC", "0BSD", "Unlicense", "CC0-1.0"
  ],
  "conditional": [
    "LGPL-2.1", "LGPL-3.0", "MPL-2.0", "EPL-2.0"
  ],
  "prohibited": [
    "GPL-2.0", "GPL-3.0", "AGPL-3.0", "SSPL-1.0",
    "EUPL-1.2", "OSL-3.0"
  ]
}

चरण 4: सीआई/सीडी एकीकरण

# .github/workflows/license-check.yml
name: License Compliance
on: [pull_request]

jobs:
  check-licenses:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: actions/setup-node@v4
        with:
          node-version: 20

      - run: pnpm install --frozen-lockfile

      - name: Check licenses
        run: |
          npx license-checker --production --excludePackages "" \
            --failOn "GPL-2.0;GPL-3.0;AGPL-3.0;SSPL-1.0" \
            --summary

एसबीओएम (सामग्री का सॉफ्टवेयर बिल)

एसबीओएम क्यों मायने रखते हैं

  • यूएस कार्यकारी आदेश 14028 को अमेरिकी सरकार को बेचे जाने वाले सॉफ़्टवेयर के लिए एसबीओएम की आवश्यकता होती है
  • ईयू साइबर रेजिलिएंस एक्ट के लिए ईयू में बेचे जाने वाले सॉफ़्टवेयर के लिए एसबीओएम की आवश्यकता होगी
  • आपूर्ति श्रृंखला सुरक्षा: एसबीओएम तेजी से भेद्यता प्रतिक्रिया सक्षम करते हैं (जब लॉग4जे होता है, तो आप जानते हैं कि आप प्रभावित हैं या नहीं)
  • ग्राहक का भरोसा: उद्यम खरीदार खरीदारी के दौरान तेजी से एसबीओएम का अनुरोध कर रहे हैं

एसबीओएम मानक

मानकप्रारूपद्वारा बनाए रखा गयागोद लेना
साइक्लोनडीएक्सजेएसओएन, एक्सएमएलओडब्ल्यूएएसपीबढ़ रहा है (एनपीएम के लिए डिफ़ॉल्ट)
एसपीडीएक्सJSON, RDF, टैग-वैल्यूलिनक्स फाउंडेशनस्थापित (आईएसओ/आईईसी 5962:2021)
स्विडएक्सएमएलएनआईएसटीसरकार

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


सामान्य अनुपालन परिदृश्य

परिदृश्य 1: नोड.जेएस वेब एप्लिकेशन

विशिष्ट node_modules निर्देशिका में 500-2,000 पैकेज होते हैं। अधिकांश लोग एमआईटी या आईएससी लाइसेंस का उपयोग करते हैं। सामान्य मुद्दे:

  • जीपीएल का उपयोग कर सकर्मक निर्भरताएँ (आपने उन्हें सीधे नहीं जोड़ा)
  • UNKNOWN लाइसेंस फ़ील्ड में मैन्युअल जांच की आवश्यकता होती है
  • एक ही पैकेज पर एकाधिक लाइसेंस (उदाहरण के लिए, "एमआईटी या अपाचे-2.0")

कार्रवाई: npx license-checker --production साप्ताहिक चलाएँ। किसी भी गैर-अनुमेय लाइसेंस की जांच करें। जीपीएल निर्भरता को अनुमेय विकल्पों से बदलें।

परिदृश्य 2: ओडू मॉड्यूल विकास

Odoo सामुदायिक संस्करण LGPL v3 है। ओडू एंटरप्राइज स्वामित्वाधीन है। आपके कस्टम मॉड्यूल:

  • सामुदायिक मॉड्यूल: LGPL v3 या संगत होना चाहिए (यदि वितरित हो)
  • निजी आंतरिक मॉड्यूल: वितरित नहीं, इसलिए एलजीपीएल लागू नहीं होता है
  • एंटरप्राइज़ ऐड-ऑन: ओडू एंटरप्राइज़ लाइसेंसिंग शर्तों का पालन करना होगा

परिदृश्य 3: एजीपीएल निर्भरता के साथ सास

यदि आपका SaaS एप्लिकेशन AGPL-लाइसेंस प्राप्त कोड का उपयोग करता है (उदाहरण के लिए, SSPL पर स्विच करने से पहले MongoDB), तो आपको या तो यह करना होगा:

  1. एजीपीएल के तहत अपना संपूर्ण एप्लिकेशन स्रोत कोड जारी करें
  2. एजीपीएल निर्भरता हटाएं और एक विकल्प का उपयोग करें
  3. एजीपीएल परियोजना से वाणिज्यिक लाइसेंस प्राप्त करें (यदि उपलब्ध हो)

एजीपीएल कोड का सर्वर-साइड उपयोग कॉपीलेफ्ट दायित्व को ट्रिगर करता है, भले ही आप बायनेरिज़ को कभी भी "वितरित" नहीं करते हैं।


अक्सर पूछे जाने वाले प्रश्न

क्या हमारे एपीआई में जीपीएल लाइब्रेरी का उपयोग हमें अपने एपीआई को ओपन-सोर्स करने के लिए मजबूर करता है?

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

क्या होगा यदि कोई निर्भरता अपना लाइसेंस बदल देती है?

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

हम "अज्ञात" लाइसेंस के साथ निर्भरता को कैसे संभालते हैं?

LICENSE फ़ाइल के लिए पैकेज के भंडार की जाँच करें। यदि कोई लाइसेंस निर्दिष्ट नहीं है, तो कोड तकनीकी रूप से पूर्ण कॉपीराइट संरक्षण के अंतर्गत है --- आपको इसका उपयोग करने, संशोधित करने या वितरित करने का कोई अधिकार नहीं है। या तो लाइसेंस ढूंढें (यह गैर-मानक स्थान पर हो सकता है), लेखक से एक जोड़ने का अनुरोध करें, या निर्भरता को स्पष्ट रूप से लाइसेंस प्राप्त विकल्प से बदलें।

क्या हमें एमआईटी-लाइसेंस प्राप्त पैकेजों के लिए एट्रिब्यूशन प्रदान करने की आवश्यकता है?

हाँ। एमआईटी और अधिकांश अनुमेय लाइसेंसों के लिए आपको सॉफ़्टवेयर वितरित करते समय कॉपीराइट नोटिस और लाइसेंस टेक्स्ट शामिल करने की आवश्यकता होती है। वेब अनुप्रयोगों के लिए, इसका मतलब आम तौर पर एक तृतीय-पक्ष-नोटिस फ़ाइल या सभी ओपन-सोर्स घटकों और उनके लाइसेंसों को सूचीबद्ध करने वाला एक पृष्ठ शामिल करना है।


एक अनुपालन कार्यक्रम का निर्माण

त्रैमासिक अनुपालन समीक्षा

  1. सभी परियोजनाओं के लिए एसबीओएम को पुनर्जीवित करें
  2. नई निर्भरताओं के लिए स्कैन करें पिछली समीक्षा के बाद से जोड़ा गया है
  3. अद्यतन पैकेजों में लाइसेंस परिवर्तनों की जांच करें
  4. दिखाई दिए गए किसी भी "अज्ञात" लाइसेंस की समीक्षा करें
  5. यदि नए लाइसेंस सामने आते हैं तो स्वीकृत लाइसेंस सूची को अपडेट करें
  6. ऑडिट ट्रेल के लिए एसबीओएम स्नैपशॉट को संग्रहित करें

अनुपालन भूमिकाएँ

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

एक हल्के अनुपालन कार्यक्रम में एक छोटी टीम के लिए प्रति तिमाही 2-4 घंटे लगते हैं और उत्पाद लॉन्च के बाद या उचित परिश्रम के दौरान अनुपालन मुद्दे की खोज की बहुत बड़ी लागत को रोकता है।


आगे क्या आता है

लाइसेंस अनुपालन सॉफ्टवेयर प्रशासन का एक पहलू है। इसे अपने कोड के लिए IP सुरक्षा, विक्रेता सॉफ़्टवेयर के लिए SaaS अनुबंध आवश्यक, और सुरक्षा अनुपालन के लिए साइबर सुरक्षा नियामक आवश्यकताओं के साथ संयोजित करें।

ओपन-सोर्स अनुपालन ऑडिटिंग और एसबीओएम जेनरेशन सेवाओं के लिए ECOSIRE से संपर्क करें।


ECOSIRE द्वारा प्रकाशित - व्यवसायों को जिम्मेदारी से खुले स्रोत का उपयोग करने में मदद करना।

शेयर करें:
E

लेखक

ECOSIRE Research and Development Team

ECOSIRE में एंटरप्राइज़-ग्रेड डिजिटल उत्पाद बना रहे हैं। Odoo एकीकरण, ई-कॉमर्स ऑटोमेशन, और AI-संचालित व्यावसायिक समाधानों पर अंतर्दृष्टि साझा कर रहे हैं।

WhatsApp पर चैट करें