كما هو مطلوب من قبل نموذج التهديد الخاص بنا (من بين أسباب أخرى)، يجب أن يكون البرنامج المطور لدعم شبكة الاتصالات المجهولة التي نسميها I2P متاحًا بحرية ومفتوح المصدر وقابلًا للتعديل من قبل المستخدم. لتلبية هذه المعايير، نستخدم مجموعة متنوعة من التقنيات القانونية وهندسة البرمجيات لإزالة أكبر عدد ممكن من الحواجز أمام أولئك الذين يفكرون في استخدام أو المساهمة في مشروع I2P.
بينما قد تكون المعلومات أدناه أكثر إرباكاً من مجرد القول “I2P مرخص بـ BSD” أو “I2P مرخص بـ GPL” أو “I2P ملك عام”، الإجابة المختصرة على السؤال “كيف يتم ترخيص I2P؟” هي:
جميع البرامج المضمنة في توزيعات I2P ستسمح بـ:
- الاستخدام دون رسوم
- الاستخدام دون قيود على كيفية أو متى أو أين أو لماذا أو من يقوم بتشغيله
- الوصول إلى الكود المصدري دون رسوم
- التعديلات على الكود المصدري
معظم البرمجيات تضمن أكثر من ذلك بكثير - قدرة أي شخص على توزيع الكود المصدري المعدّل بالطريقة التي يختارها. ومع ذلك، ليست كل البرمجيات المرفقة توفر هذه الحرية - فرخصة GPL تقيد قدرة المطورين الذين يرغبون في دمج I2P مع تطبيقاتهم الخاصة التي ليست بحد ذاتها تطبيقات مفتوحة المصدر. وبينما نشيد بالأهداف النبيلة لزيادة الموارد في المشاع، فإن I2P يُخدَم بشكل أفضل عن طريق إزالة أي عوائق تقف في طريق اعتماده - فإذا كان على المطور الذي يفكر في إمكانية دمج I2P مع تطبيقه أن يتوقف ويستشير محاميه، أو يجري مراجعة للكود للتأكد من أن كوده المصدري يمكن إصداره بما يتوافق مع GPL، فإننا نخسر.
تراخيص المكونات
يحتوي توزيع I2P على عدة موارد، تعكس تقسيم الكود المصدري إلى مكونات. كل مكون له ترخيصه الخاص، الذي يوافق عليه جميع المطورين الذين يساهمون فيه - إما من خلال الإعلان صراحةً عن إصدار الكود المُرسَل تحت ترخيص متوافق مع ذلك المكون، أو من خلال إصدار الكود المُرسَل ضمنياً تحت الترخيص الأساسي للمكون. لكل من هذه المكونات مطور رئيسي له القول الفصل فيما يتعلق بالترخيص المتوافق مع الترخيص الأساسي للمكون، ومدير مشروع I2P له القول الفصل فيما يتعلق بالتراخيص التي تلبي الضمانات الأربعة المذكورة أعلاه للإدراج في توزيع I2P.
| Component | Source path | Resource | Primary license | Alternate licenses | Lead developer |
|---|---|---|---|---|---|
| I2P SDK | core | i2p.jar | Public domain | BSD, Cryptix, MIT | zzz |
| I2P Router | router | router.jar | Public domain | BSD, Cryptix, MIT | zzz |
| Ministreaming | apps/ministreaming | mstreaming.jar | BSD | Public domain, Cryptix, MIT | zzz |
| Streaming | apps/streaming | streaming.jar | Public domain | BSD, Cryptix, MIT | zzz |
| I2PTunnel | apps/i2ptunnel | i2ptunnel.jar | GPL + exception | Public domain, BSD, Cryptix, MIT | zzz |
| Routerconsole | apps/routerconsole | routerconsole.war | Public domain | — | zzz |
| Address Book | apps/addressbook | addressbook.war | MIT | Public domain, Cryptix, BSD | — |
| Susidns | apps/susidns | susidns.war | GPL + exception | — | — |
| Susimail | apps/susimail | susimail.war | GPL + exception | — | — |
| I2PSnark | apps/i2psnark | i2psnark.jar | GPL + exception | — | zzz |
| [BOB](/docs/legacy/bob/) Bridge | apps/BOB | BOB.jar | WTFPL | — | sponge |
| [SAM](/docs/api/samv3/) Bridge | apps/sam | sam.jar | Public domain | Cryptix, BSD, MIT | zzz |
| [SAM v1](/docs/legacy/sam/) Perl library | apps/sam/perl | SAM.pm | GPL | Public domain, Cryptix, BSD, MIT | BrianR |
| [SAM v1](/docs/legacy/sam/) C library | apps/sam/c | libSAM | BSD | Public domain, Cryptix, MIT | Nightblade |
| [SAM v1](/docs/legacy/sam/) Python library | apps/sam/python | i2p.py | Public domain | BSD, Cryptix, MIT | Connelly |
| [SAM v1](/docs/legacy/sam/) C# library | apps/sam/csharp/ | n/a | Public domain | BSD, Cryptix, MIT | smeghead |
| Other apps not mentioned | apps/ | ... | Probably Public domain but check the source | — | — |
| Installer | installer | install.jar, guiinstall.jar | Public domain | GPL + exception, BSD, Cryptix, MIT | — |
استثناء GPL
على الرغم من أن هذا قد يكون تكراريًا، ولكن من أجل الوضوح فإن الكود المرخص بموجب GPL المضمن في I2PTunnel والتطبيقات الأخرى يجب أن يتم إصداره بموجب ترخيص GPL مع “استثناء” إضافي يسمح صراحةً باستخدام مكتبات Java القياسية:
In addition, as a special exception, XXXX gives permission to link the
code of this program with the proprietary Java implementation provided by Sun
(or other vendors as well), and distribute linked combinations including the
two. You must obey the GNU General Public License in all respects for all of the
code used other than the proprietary Java implementation. If you modify this
file, you may extend this exception to your version of the file, but you are not
obligated to do so. If you do not wish to do so, delete this exception statement
from your version.
سيتم ترخيص جميع الأكواد المصدرية ضمن كل مكون بشكل افتراضي تحت الترخيص الأساسي، ما لم يُذكر خلاف ذلك في الكود. جميع ما ورد أعلاه هو ملخص لشروط الترخيص - يرجى الرجوع إلى الترخيص المحدد للمكون أو الكود المصدري المعني للاطلاع على الشروط الرسمية. قد يتم تغيير مواقع مصادر المكونات وتغليف الموارد في حال إعادة تنظيم المستودع.
ترخيص الموقع الإلكتروني
ما لم يُذكر خلاف ذلك، المحتوى على هذا الموقع مرخص بموجب رخصة المشاع الإبداعي نَسب المُصنَّف - الترخيص بالمثل 4.0 دولي .
صلاحيات الالتزام
يمكن للمطورين دفع التغييرات إلى مستودع git الموزع إذا حصلوا على إذن من الشخص الذي يدير ذلك المستودع. راجع دليل المطور الجديد للحصول على التفاصيل.
ومع ذلك، لكي يتم تضمين التغييرات في الإصدار، يجب أن يكون المطورون موثوقين من قبل مدير الإصدار (حاليًا zzz). بالإضافة إلى ذلك، يجب عليهم الموافقة صراحةً على الشروط المذكورة أعلاه ليكونوا موثوقين. وهذا يعني أنه يجب عليهم إرسال رسالة موقعة إلى أحد مديري الإصدار تؤكد أن:
- ما لم يُحدد خلاف ذلك، فإن جميع الأكواد البرمجية التي أقوم بإرسالها مرخصة ضمنياً بموجب الترخيص الأساسي للمكون
- إذا تم تحديد ذلك في المصدر، فقد يتم ترخيص الكود صراحةً بموجب أحد التراخيص البديلة للمكون
- لدي الحق في إصدار الكود الذي أقوم بإرساله وفقاً للشروط التي أقوم بإرساله بموجبها
إذا كان أي شخص على علم بأي حالات لا تتوافق فيها الشروط المذكورة أعلاه، يرجى الاتصال بمسؤول المكون و/أو مدير إصدار I2P مع مزيد من المعلومات.