সফটওয়্যার লাইসেন্স কি?
23 Jul 2021 Misc Md Yaminসফটওয়্যার লাইসেন্স কি?
“সফটওয়্যার লাইসেন্স হল একটি বৈধ উপকরণ (সাধারণত এক ধরনের আইনগত চুক্তি যা মুদ্রিত হতেও পারে আবার নাও হতে পারে) যেটি সফটওয়্যারের ব্যবহার অথবা নতুনভাবে বিতরণ কার্যক্রমকে নিয়ন্ত্রণ করে।” - উইকিপিডিয়া একটি সফটওয়্যার লাইসেন্স এমন একটি নথি যা সফটওয়্যার ব্যবহার ও বিতরণের জন্য আইনত বাধ্যতামূলক নির্দেশিকা সরবরাহ করে। সফটওয়্যার লাইসেন্সগুলি সাধারণত ব্যবহারকারীদের কপিরাইট লঙ্ঘন না করে সফটওয়্যারটির এক বা একাধিক অনুলিপি সহ অধিকার প্রদান করে। বেশিরভাগ সফটওয়্যার দুটি ক্যাটাগরির একটির অধীনে আসে যার কপিরাইট আইনের অধীনে কীভাবে দেখা হয় তার মধ্যে স্বতন্ত্র পার্থক্য রয়েছে: Proprietary - “ক্লোজড সোর্স” হিসাবেও উল্লেখ করা হয় Free and open source software (FOSS) - “ওপেন সোর্স” হিসাবে উল্লেখ করা হয়
FOSS সফটওয়্যার লাইসেন্স - সফটওয়্যার প্রোডাক্ট এর সাথে প্রকৃত সোর্স কোড সরবরাহ করে, সফটওয়্যার কোডটির পরিবর্তন এবং পুনরায় ব্যবহার অন্তর্ভুক্ত গ্রাহককে অধিকার দেয়। এই ওপেন-সোর্স ধরণের লাইসেন্সিং ব্যবহারকারী কর্তৃপক্ষকে সফটওয়্যার ফাংশনগুলি সংশোধন করতে এবং সফটওয়্যার কোডটি পরিদর্শন করার স্বাধীনতা প্রদান করে।
Proprietary সফটওয়্যার লাইসেন্স - কোড পরিবর্তন বা পুনঃব্যবহারের জন্য এ জাতীয় কোন অধিকার প্রদান করে না এবং সাধারণত কেবলমাত্র সফটওয়্যার সাথে অপারেশনাল কোড এবং এটি কোন সোর্স কোড সহ সরবরাহ করে না। প্রোপ্রাইটারী সফটওয়্যার লাইসেন্সে প্রায়শই এমন শর্তাদি অন্তর্ভুক্ত থাকে যা লাইসেন্সদাতাদের উত্স কোড পেতে অবজেক্ট কোডটির “Reverse Engineering” নিষিদ্ধ করে।
বিভিন্ন ধরণের সফ্টওয়্যার লাইসেন্স কী কী?
এখানে পাঁচ ধরণের সাধারণ সফ্টওয়্যার লাইসেন্সের মডেলগুলি সম্পর্কে আপনার জানা উচিত। তন্মদ্ধ্যে চারটি ওপেন সোর্স লাইসেন্সএর উদাহরণ (যা আপনাকে কিছু পরিমাণে কোড পুনরায় ব্যবহার করার অনুমতি দেয়), এবং একটি পুনরায় ব্যবহারের অনুমতি দেয় না।
Public Domain: এটি সর্বাধিক অনুমতিপ্রাপ্ত ধরণের সফটওয়্যার লাইসেন্স। যখন সফটওয়্যার পাবলিক ডোমেনে থাকে, যে কোন ব্যক্তি কোন সীমাবদ্ধতা ছাড়াই সফটওয়্যারটি সংশোধন করতে এবং ব্যবহার করতে পারে। তবে আপনার কোডবেজে এটি যুক্ত করার আগে আপনার সর্বদা এটি সুরক্ষিত কিনা তা নিশ্চিত হওয়া উচিত। সতর্কতা: যে কোডে একটি সুস্পষ্ট লাইসেন্স নেই সেগুলি স্বয়ংক্রিয়ভাবে পাবলিক ডোমেনের হয় না। ইন্টারনেটে আপনি যে কোড স্নিপেটগুলি সন্ধান করেন তা এর অন্তর্ভুক্ত। SQLite, youtube-dl, CERN httpd হচ্ছে কিছু জনপ্রিয় পাবলিক ডোমেইন সফটওয়্যার।
Permissive: এই লাইসেন্সগুলি “অ্যাপাচি-স্টাইল” বা “বিএসডি স্টাইল” নামেও পরিচিত। সফটওয়্যারটি কীভাবে পরিবর্তন বা পুনরায় বিতরণ করা যায় সে সম্পর্কে তাদের ন্যূনতম রিকোয়ারমেন্ট কিংবা শর্ত আরোপ করা থাকে। এই ধরণের সফ্টওয়্যার লাইসেন্স সম্ভবত ফ্রি এবং ওপেন সোর্স সফ্টওয়্যার এ ব্যবহার করা সর্বাধিক জনপ্রিয় লাইসেন্স। উদাহরণের মধ্যে GNU All-permissive License, MIT License, BSD licenses, Apple Public Source License and Apache License. সবচেয়ে জনপ্রিয় ফ্রি সফটওয়্যার লাইসেন্স হল the permissive MIT license. Python (পাইথন) হল The Python Software Foundation License (PSFL) হচ্ছে একধরনের BSD-style, permissive free software license যেটি GNU General Public License (GPL) এর সাথে কম্প্যাটিবল।
LGPL: GNU Lesser General Public Licence (জিএনইউ লেজার জেনারেল পাবলিক লাইসেন্স) আপনাকে আপনার সফ্টওয়্যারটিতে ওপেন সোর্স লাইব্রেরিগুলিকে লিঙ্ক করার অনুমতি দেয়। যদি আপনি কেবল আপনার কোডের সাথে কোন এলজিপিএল-লাইসেন্সকৃত লাইব্রেরি সংকলন করেন বা লিঙ্ক করেন তবে আপনি যে কোন লাইসেন্স, এমনকি Proprietary (প্রোপ্রাইটারী/মালিকানাধীন) লাইসেন্সের আওতায় ও আপনার এপ্লিকেশন প্রকাশ করতে পারবেন। তবে আপনি যদি লাইব্রেরিটি সংশোধন করেন বা এর কোডগুলি আপনার কোডটিতে অনুলিপি করেন, আপনাকে এলজিপিএল হিসাবে একই শর্তে আপনার এপ্লিকেশন প্রকাশ করতে হবে। 7-Zip, FFmpeg, FreeCAD, GTK, PulseAudio, Qt, Tiny C Compiler, Vala (programming language), VLC media player হচ্ছে কিছু LGPL লাইসেন্স ব্যাবহারকারী সফটওয়্যার সমূহের উদাহরণ।
Copyleft: কপিলেফট লাইসেন্স Reciprocal লাইসেন্স বা Restrictive লাইসেন্স হিসাবেও পরিচিত। কপিলেফট বা রেসিপ্রোকাল লাইসেন্সের সর্বাধিক পরিচিত উদাহরণ হ’ল GPL(জিপিএল)। এই লাইসেন্সগুলি আপনাকে লাইসেন্স কোডটি পরিবর্তন করতে এবং এর ভিত্তিতে নতুন কাজগুলি বিতরণের অনুমতি দেয়, যতক্ষণ আপনি একই সফ্টওয়্যার লাইসেন্সের অধীনে কোন নতুন কাজ বা অভিযোজন বিতরণ করেন। উদাহরণস্বরূপ, কোনও কম্পোনেন্ট এর লাইসেন্স বলতে পারে যে কাজটি কেবল ব্যক্তিগত ব্যবহারের জন্য ব্যবহার করা যাবে এবং বিতরণ ও করা যাবে বিনামূল্যে ব্যাক্তিগত ব্যবহারকারীদের কাছে। সুতরাং আপনার তৈরি কোন ডেরিভেটিভ কেবল ব্যক্তিগত ব্যবহারের মধ্যেই সীমাবদ্ধ থাকবে। (একটি ডেরিভেটিভ হ’ল এমন কোন নতুন সফটওয়্যার যা আপনি ডেভেলপ করেন এবং যেটিতে কম্পোনেন্টটিও অন্তর্ভুক্ত থাকে) এখানে ক্যাপচারটি হ’ল আপনার সফ্টওয়্যারটির ব্যবহারকারীদেরও কোডটি সংশোধন করার অধিকার থাকবে। অতএব, আপনি আপনার সোর্স কোড ও এভেইলেবল বা সরবরাহ করতে হবে। তবে অবশ্যই, আপনার সোর্স কোডটি প্রকাশ করা আপনার পক্ষে ভাল নাও লাগতে পারে। GNU GPL (General Public License) v2 একধরনের কপিলেফট লাইসেন্সের উদাহরণ(এছাড়াও অনেকধরনের কপিলেফট লাইসেন্স রয়েছে) এবং Linux এই লাইসেন্সের (GNU GPL v2 and others) অন্তর্ভুক্ত।
Proprietary (মালিকানাধীন): সকল ধরণের সফটওয়্যার লাইসেন্সের মধ্যে এটি সর্বাধিক সীমাবদ্ধ। এর পিছনে ধারণাটি হ’ল সমস্ত অধিকার সংরক্ষিত। এটি সাধারণত প্রোপ্রাইটারি/মালিকানাধীন বা বিভিন্ন কোম্পানির সফটওয়্যার এর জন্য ব্যবহৃত হয় যেখানে কাজটি সংশোধন বা পুনরায় বিতরণ করা যায় না। Microsoft Windows, Adobe Flash Player, PS3 OS, iTunes, Adobe Photoshop, Google Earth, macOS (formerly Mac OS X and OS X), Skype, WinRAR, Oracle’s version of Java and some versions of Unix প্রোপ্রাইটারী লাইসেন্স সম্বলিত কিছু সফটওয়্যার এর উদাহরণ।
আমি কীভাবে জানতে পারি যে আমার কোডবেসের কোডে কী লাইসেন্স প্রয়োগ করা উচিত?
কোন লাইসেন্স আপনার কোডবেসে কোন পুনঃব্যবহৃত কোড পরিচালনা করে তা নির্ধারণ করার আগে, আপনাকে আপনার কোডের সমস্ত কম্পোনেন্ট বা উপাদানের একটি সফটওয়্যার উপকরণের বিল বা সকল কম্পোনেন্ট এর লিস্ট বা তালিকা তৈরি করতে হবে। এবং সেই তালিকাটি তৈরি করার দ্রুততম উপায়টি হল Software Composition Analysis(SCA) Tool. একটি ভাল SCA Tool সকল কম্পোনেন্ট সন্ধানের পাশাপাশি কোড স্নিপেটগুলি সন্ধান করতে সক্ষম হবে এবং এটি আপনাকে জানাবে যে কোডগুলির প্রতিটি অংশের জন্য কোন লাইসেন্সগুলি প্রযোজ্য এবং আপনি যে লাইসেন্সগুলির কনফ্লিক্ট রয়েছে সেগুলি ব্যবহার করছেন কিনা।