اذهب إلى المحتوى

لوحة المتصدرين

  1. نجاة العبد الرحيم

    • نقاط

      3

    • المساهمات

      203


  2. Hadi Hamdan

    Hadi Hamdan

    الأعضاء


    • نقاط

      3

    • المساهمات

      31


  3. Zerious San

    Zerious San

    الأعضاء


    • نقاط

      3

    • المساهمات

      11


  4. محمد عاطف17

    محمد عاطف17

    الأعضاء


    • نقاط

      3

    • المساهمات

      3130


المحتوى الأكثر حصولًا على سمعة جيدة

المحتوى الأعلى تقييمًا في 03/05/24 في كل الموقع

  1. السلام عليكم يعطيكن العافية لو سمحتوا هون سطر الforeach ممكن توضحولي ما المقصد من الكتابة هيك ولماذا قمنا بوضع +=
    3 نقاط
  2. جربت في الفحص( inspect ) ان اغير المدخلات و تغيرت البيانات المرسلة من المستخدم الى قاعدة البيانات. مثال: <label class="regLabel"> Male <input class="gender" asp-for="Gender" class="d-inline" type="radio" id="male" value="cat"> </label> <label class="d-inline regLabel ml-2 font-weight-bold"> Female <input class="gender" asp-for="Gender" type="radio" value="Female" id="female"> </label> مثل الي فوق المستخدم غير قيمة الجنس الى cat وتم حفظها بنائنا على التعديل من قبل المستخدم. هل هناك طريقة احمي الموقع حتى لو المستخدم غير المدخلات. سويت فحص في back-end الي هو server side لكن اريد حتى لو غير المستخدم القيمة او بدل اماكن القيم اخليه ما يأثر في الموقع. لا اريد منع ظهور الفحص (inspect)
    2 نقاط
  3. في بايثون بقدر كررها باني اضرب رمز النجمة بالمتغير row داخل الحلقة هل ممكن اعمل نفس الشي بجافا سكربت جربتها ما اشتغلت معي
    1 نقطة
  4. السلام عليكم ، هل يوجد امتحانات نقييم بها نفسنا بعد مرحلة معينة او لا يوجد غير النهائي؟
    1 نقطة
  5. كم المده اللتي تحتاج مني الإنتهاء من دورة تطوير واجهات المستخدم كيف طريقة الأختبار وكم محاولة لي في الأختبار
    1 نقطة
  6. بالفعل الكود أفضل من حيث القراءة، لكن ما يحدث في الخلفية هو نفس الكود الذي كتبته.
    1 نقطة
  7. السلام عليكم ورحمه الله عندي موقع خاص بالمحاماه هل بالامكان اضافه خصائص zoho او اي اداه غير zoho ان وجد - تحليل التقدم المحرز في مشاريعك بشكل منتظم -الحصول على نظرة عامة مركزية عن المهام وموارد الوقت وانشاء الفواتير وبعض المميزات الاخرى ؟
    1 نقطة
  8. رح تتكرر بشكل هرمي جرب هاد الكود let user_input= prompt("please enter number ") for (let i = 1 ; i<= user_input ; i++){ console.log("*".repeat(i)) };
    1 نقطة
  9. شكرا هيك افضل بتطبع ب loop واحد مافي داعي لاثنين بنفس الوقت بعرف هذا الشي بس هيك صار عندك شرط مع اثنين loop على مهمة ما بتستاهل كل هذا هيك بيصير البرنامج ابطئ
    1 نقطة
  10. العفو هذا واجبى وبالتوفيق لك ان شاء الله .
    1 نقطة
  11. 1 نقطة
  12. الألعاب التي تعتمد على سيرفر (ألعاب الآون لاين) لا يمكن اختراقها لكونها تعتمد على البيانات التي يتم جلبها من السيرفر، لذا يجب اختراق السيرفر أولاً وذلك يعني اختراق شركة الاستضافة. لذا تجد أن أغلب الألعاب يتم تهكيرها وتصبح أوف لاين في حال كانت اللعبة لا تحتاج إلى أن تبقى متصلة بالسيرفر. لكن بعض الألعاب أصبحت تستخدم always online DRM أي عليك أن تبقى متصل دائمًا بالإنترنت لكي تستخدم المنتج وهو اللعبة، لذا الأمر يصبح أصعب لإختراق ذلك لكن يتم الإختراق بالطبع بعد فترة. والأمر يتم بطرق مختلفة، مثل استخدام سريال أصلي للعبة وقطع إتصالها بالإنترنت لكي لا تقوم بالتحقق منه في السيرفر ومعرفة أنه مستخدم من قبل. أو يتم تفقد الذاكرة العشوائية واستخدام لغة assembly لتفقد الجزء الخاصة بالحماية ثم تغيير ذلك سواء بكتابة كود لتجاهل ذلك الجزء أو التلاعب به أي reverse-engineer. أو تعديل ملف اللعبة نفسه exe بجانب إمكانية تعديل ملف dll.
    1 نقطة
  13. مرحبا احمد . للاسف لن يمكنك الحصول على المعامل place الذى فى المسار داخل الدالة getStaticPaths حيث ان هذه الدالة يتم تنفيذها قبل البناء اى انها لاتستطيع الوصول الى المسار الحالى . وساشرح لك اكثر عن طريقة عملها . return { paths: [ { params: { id: '1' }}, { params: { id: '2' }, }, ], fallback: ... } لاحظ هنا قمنا بتعريف مسار يحتوى على id 1 و id 2 وبذلك فان next.js يقوم بحفظ هذه المسارات وبنائها اى انه داخليا قام بتخزين الصفحة التى تحتوى على id 1 و id 2 واذا ما كان المسار يحتوى على id سواهما سوف يقوم باظهار صفحة 404 . وهكذا بعد ان علمنا كيف تعمل getStaticPaths لنحل المشكلة التى تواجهك سويا . ان المنطق (logic) الذى تنفذه يوجد فيه بعض الاخطاء فيجب ربط الاماكن ب العروض ولكنك لم تقم بذلك . فمن المفترض ان يحتوى الثابت programs لديك على خاصية تسمى place_id وتحتوى على ال id الخاص بالمكان وبذلك فى الدالة getStaticPaths تقوم بارجاعها مع ال id الخاص بال program وقد قمت بارفق الملف لك بعد التعديل .ولكن يجب عليك انت اضافت ال id على حسب البرنامج والمكان فانا قمت باضافت قيم عشوائية. ناتى الان لتعديل الدالة getStaticPaths قم باستبدالها بهذا الكود بان تقوم باضافة ال place_id فى الثابت programs export async function getStaticPaths() { const programIds = programs.map((program) => ({id:program.id,data:program.place_id})); const paths = programIds.map((program) => ({ params: { place: program.id.toString() , data: program.data.toString() }, })); return { paths, fallback: false }; } ومن ثم يمكنك زيارة هذا المسار http://localhost:3000/packages/worldpackages/6/5 وسيعمل معك . constants.js
    1 نقطة
  14. طريقتك صحيحة و ممتازة و استخدمها. لكن الي اريده اني جربت اعدل في احد المواقع ان اسوي نفس الطريقة لكن القيم لا تتغير حتى لو غيرت كل شي . مثل حتى لو غيرت قيمة الذكر الى انثى او الانثى الى ذكر, القيم صحيحة لكن الموقع سيأخذ القيم قبل التعديل من قبل المستخدم و كأن في حماية من التعديل حتى لو كانت القيم صحيحة .
    1 نقطة
  15. مرحبا من المتعارف علية انه عند تكرار ال string في python بنستخدم فعلا * string_original = "Hello" repeated_string = string_original * 3 # تكرار ثلاث مرات print(repeated_string) اذ كنت تريد استخدام نفس المفهوم في js من الممكن استخدام fun build in string تسمي repeat let originalString = "Hello"; let repeatedString = originalString.repeat(3); // تكرار ثلاث مرات console.log(repeatedString);
    1 نقطة
  16. مرحبا هنا منصات تقدم خدمة api للوتساب مثل 1-https://www.businesschat.io/ تقدم api لل وتساب للاعمال 2-http://whatsapi.in/ تقدم ايضا خدمة api من الممكن قراءة ال documents الخاصه بعم لمعرفت الاكثر علي الاستخدام من الناحية العامة يعتمد اختيارك بين استخدام خدمة واتساب بزنيس API مباشرة من ميتا أو استخدام مواقع وسطاء على عدة عوامل البعض قد يفضل التعامل مباشرة مع ميتا لضمان الاستقرار والأمانفي حين يفضل البعض الآخر الاعتماد على مواقع الوساطة لأسباب مثل التكلفة أو سهولة الاستخدام
    1 نقطة
  17. بالنسبة لما إذا كان ينصح باستخدام هذه المواقع، فذلك يعتمد على الميزات و الخدمات التي تقدمها تلك المواقع, و على إجراءات الأمان و السلامة التي تحمي بياناتك و بيانات عملائك , وهل يتوفر دعم فني متاح عند الحاجة و هل يقدمون وثائق وموارد تساعدك في استخدام الخدمة بشكل صحيح. الفرق الرئيسي بين استخدام تلك المواقع واستخدام خدمة ميتا هو المستوى الأعلى من الدعم والمرونة الذي توفره شركة ميتا. إذا كنت تحتاج إلى امتيازات محددة أو دعم مخصص أو تكامل أعمق مع WhatsApp، فسيكون التعامل مع شركة ميتا هو الخيار الأفضل. و بالنهاية الأمر يعتمد على احتياجاتك فقم بتحديد ماتريد لتستطيع الاختيار . هذه بعض المواقع التي تقدم الخدمة انظر إلى خدماتها و قارن بينها : Twilio Nexmo MessageBird Infobip
    1 نقطة
  18. لقد قمت بأنشاء حساب مطور في جوجل بلاي عندما أرسل وثائق الهوية مثل جواز السفر أو عقد الإيجار أو كشف حساب بنكي، لا يتم قبولها من اجل تفعيل الحساب ونشر تطبيقاتي , أتلقى رسالة بريد إلكتروني منهم يقولون أن التنسيق الصحيح لم يتم استخدامه. ما هو التنسيق الصحيح أو الطريقة الصحيحة؟ لتوثيق الحساب
    1 نقطة
  19. في البداية دعني اقوم بترتيب الكود وتعديله كي يزول الخطأ <?php function sum(...$numbers) { $acc = 0; foreach ($numbers as $number) $acc += $number; echo $acc; } $arr = [3, 2, 4, 10]; sum(...$arr);//قمت باضافة 3 نقاط هنا قبل ال $arr ?> قمت باضافة الثلاث نقاط لان ال $arr عبارة عن مصفوفة لذلك اريدها ان تمرر كل معامل على حدى وليس الجميع بنفس الوقت ال foreach عبارة عن حلقة تكرارية في لغة ال php وثمنا بتمرير المصفوفة $numbers اليها والمعامل $number الذي هو عبارة عن عنصر واحد من المصفوفة اي في كل دورة من هذا الحلقة ستأخد رقم من مصفوفة الارقام بالترتيب بكل بساطة هذا طريقة كتابة مختصرة وتعني اجمع المعامل الذي قبل اليساوي مع الذي بعدها ساعطيك مثال للتوضيح هذا هو الكود الذي قمت بكتابته $acc += $number; وهذا ما يعنيه $acc =$acc + $number; اي انه فقط لمنع التكرار واختصار اكثر ولكنه يؤدي نفس النتيجة وبالتوفيق لك
    1 نقطة
  20. أولاً الخطأ الذي يظهر بسبب أن لا نحتاج لإستخدام ال spread operator وهو الثلاث نقاط . . . لذلك يصبح الكود كالتالي function sum($numbers) بدلاً من function sum(...$numbers) ثانياً بالنسبة للمعامل += هو معامل إضافة تراكمية يعني أننا نريد إضافة العدد أو القيمة على يسار المعامل إلى المتغير الموجود على يمينه، بحيث يتم تحديث قيمة هذا المتغير. مثال بسيط: $x = 5; $x += 3; هنا نحن نقول أريد إضافة القيمة 3 إلى متغير $x. فبعد التنفيذ ستكون قيمة $x تساوي 5 + 3 = 8 أي أن القيمة الأصلية لـ$x وهي 5 تم تحديثها إلى 8 عن طريق إضافة 3 إليها. لذلك السطر $acc += $number; هو إختصار ل $acc = $acc + $number;
    1 نقطة
  21. وعليكم السلام ورحمة الله وبركاته. تستخدم ال الforeach لتكرار تنفيذ امر معين و طريقة استخدامها هنا صحيحة حيث اذا كان الامر الذى نريد تنفيذه هو عبارة عن سطر واحد فلا مشكلة من عدم وضع اى اقواس .ولكن اذا كان الامر الذى نريد تكراره اكثر من سطر ولم نضع الاقواس فسيتم تكرار اول سطر فقط وباقى الاسطر سيعتبر انها ليست بداخل ال foreach . اما بالنسبة لاستخدام += فهى طريقة مختصرة فبدلا من كتابة الامر هكذا . $acc = $acc + $number; قمنا باختصارها وهى تعنى اننا نريد ان نضيف على القيمة التى فى اليسار قيمة جديدة تساوى القيمة التى فى اليمين . ومن الممكن ايضا استخدام جميع المعاملات -= او *= او /= ايضا. ويوجد خطأ لديكى فى الكود فلاحظى هنا فى تعريف معامل الدالة sum قمتى بكتابته هكذا function sum(...$numbers) فهذا معناه انكى تخبرين php ان يقوم بجمع جميع المعاملات التى يتم تمريرها الى الدالة فى مصفوفة . لذلك عند استدعاء الدالة sum لا تقومى بارسال مصفوفة بل بارسال الارقام متفرقة هكذا . sum(3,2,4,10); و php تلقائيا سيقوم بجمعهم فى مصفوفة واحدة ويضعها فى المعامل $numbers . اى انكى اذا حاولتى ان تقومى بطباعة المعامل $numbers سترين انه مصفوفة وليس رقم .
    1 نقطة
  22. ترخيص البرنامج software license هو اتفاقيةٌ قانونيةٌ تحدِّد كيفية استخدام جزءٍ محددٍ من البرنامج، إذ يُعَد اختيار ترخيص البرنامج قرارًا مهمًا بالنسبة لمطوري البرامج الذين قد يرغبون في تطبيق حقوق وتصريحات permissions معينة على عملهم والتحكم في كيفية استخدام الآخرين له وتعديله ومشاركته؛ فقد يرغب بعض المطورين في فرض قيودٍ صارمة على كيفية استخدام برامجهم، على حين قد يختار آخرون ترخيص برامجهم بفرض قيودٍ قليلة أو دون فرض أية قيود، وقد ينبع هذا من رغبتهم في انتشار استخدام برامجهم على أوسع نطاقٍ ممكن، أو ربما لأنهم يعارضون مفهوم تراخيص البرامج المقيدة لأسباب فلسفية. يستطيع المطورون بغض النظر عن أسبابهم تحقيق ذلك من خلال تطبيق ترخيص برنامج مفتوح المصدر open-source، إذ تتيح تراخيص البرامج مفتوحة المصدر عمومًا الشيفرة البرمجية المصدرية source code للاستخدام والتعديل والنشر بناءً على شروطٍ وأحكامٍ مُتفَّقٍ عليها. يوجد العديد من تراخيص البرامج مفتوحة المصدر المختلفة، وهي تختلف بناءً على القيود التي يرغب مبتكر البرنامج أن يمتثل المستخدمون المستقبليون لها. عند وضع خططٍ طويلة الأمد لمشروعك، سيكون من المجدي فهم تراخيص البرامج مفتوحة المصدر المتاحة حتى تختار بحكمة الترخيص الذي يلائم متطلباته. سنستعرض في هذه المقالة معلوماتٍ حول حقوقك عند إنشاء عملك (مثل حقوق النشر)، وكيف يساعد الترخيص في إنشاء الاتفاقية القانونية التي تريد أن يمتثل المستخدمون لها عند استخدام برنامجك، كما سنناقش الفروقات بين البرمجيات الاحتكارية proprietary والمجانية ومفتوحة المصدر، وبين التراخيص المتساهلة permissive وتراخيص الحقوق المتروكة copyleft، ومعلوماتٍ عن خيارات ترخيص البرامج مفتوحة المصدر المقترحة عند إنشاء مشروع على موقع غيت هَب GitHub. تعريف حق النشر والترخيص تمنَح الولايات المتحدة والعديد من البلدان الأخرى تلقائيًا نوعًا من الحماية القانونية لأي عملٍ مُبتَكرٍ تنتجه، ويسمى أحد أنواع هذه الحماية حقوق النشر copyright؛ إذ يُعرِّف مكتب حقوق النشر في الولايات المتحدة حقوق النشر بأنها "أحد أنواع الملكية الفكرية التي تحمي الأعمال الأصلية المؤلَّفة"، تحديدًا عندما "ينظِّم المؤلف العمل بصيغة تعبير ملموسة"؛ أي أن منحك حقوق النشر لا يعني أنك صاحب الفكرة، بل أنك صاحب التعبير المادي عن الفكرة. إذا رغب مالك حقوق النشر بتطبيق حمايةٍ قانونيةٍ لعمله أكثر صرامة، يمكنه التوجُّه إلى براءات الاختراع والعلامات التجارية وقوانين الملكية الفكرية، إذ لا يتطلب حصولك على حقوق النشر لعملك إجراءً رسميًا لضمان منحها لك. تمنح حقوق النشر للمالك حقوقًا متنوعةً، مثل إعادة إنتاج نسخٍ من العمل ونشرها. إذا أراد المالك التحكم في كيفية استخدام الآخرين لعمله، يجب عليه تطبيق ترخيص يحدد القواعد التي يجب أن يمتثل لها المستخدمون، أما إذا صرَّح مالك حقوق النشر أن في عمله "جميع الحقوق محفوظة All Rights Reserved"، فهذا يعني أنه لا يحق لأي شخص سوى مالك حقوق النشر استخدام عمله أو تعديله. تتمثل إحدى تشعبات هذا الموضوع في العمل المبتكر الذي تقدمه لصاحب العمل؛ فإذا كنت منخرطًا في ما يُعرف باسم العمل مقابل الأجر work for hire، فهذا يعني أن أيّ عملٍ تبتكره لصالح الشركة أو المؤسَّسة التي تعمل بها تعود ملكيته إلى هذا الكيان، بما أنه يعطيك أجرًا مقابل هذا العمل. نتيجةً لذلك، تترتب عواقبٌ قانونية على مشاركتك هذا العمل دون إذن لعدم امتلاكك حقوق الملكية لحقوق النشر أو الترخيص. البرمجيات الاحتكارية والحرة ومفتوحة المصدر البرمجيات الاحتكارية Proprietary software هي أيُّ برنامجٍ له ترخيصٌ يقيد كيفية استخدامه أو تعديله أو مشاركته، وتُعد ألعاب الفيديو من الأمثلة الشائعة عن البرمجيات الاحتكارية. فإذا اشتريت لعبة فيديو -سواءٌ كانت على هيئة خرطوشة cartridge (بطاقات الألعاب التي نضعها بأجهزة الألعاب مثل نينتيندو Nintendo)، أو قرص، أو عن طريق تنزيلها رقميًا-، فلا يحق لك إنشاء نسخةٍ من تلك اللعبة لمشاركتها مع أصدقائك أو بيعها بغرض الربح، كما يُحتمَل ألا يُسمح لك بتعديل الشيفرة البرمجية للعبة لتشغيلها على نظامٍ مختلفٍ عن النظام الأصلي الذي صُمّمت لتعمل عليه عندما اشتريتها. يخضع عادةً مستخدمو البرامج لقيودٍ معينة بموجب اتفاقية ترخيص المستخدم النهائي end-user license agreement -أو اختصارًا EULA-؛ فإذا كنت قد اشتريت برنامجًا من قبل، لربما افترضت أنك تمتلك هذا البرنامج؛ ولكن إذا اشتريت برنامجًا احتكاريًا، فمن المرجّح أن يكون مرفقًا باتفاقية ترخيص المستخدم النهائي، التي تحدد أنك لا تملك البرنامج، وإنما تمتلك ترخيص البرنامج الذي يسمح لك باستخدامه. قد تحدد اتفاقيات ترخيص المستخدم النهائي أيضًا كيفية استخدام الترخيص نفسه، والتي تمنعك عادةً من مشاركته مع الآخرين دون الحصول على إذنٍ من مالك البرنامج (مطوِّر البرنامج أو ناشره). اتفاقية شروط الخدمة Terms of Service agreement -أو اختصارًا ToS-، هي صكٌ قانوني آخر مشابهٌ لاتفاقية ترخيص المستخدم النهائي EULA، وتُعرف أحيانًا باسم شروط الاستخدام Terms of Use أو الشروط والأحكام Terms and Conditions، ويُحدَّد ضمنها القواعد الواجب على المستخدم اتباعها من أجل السماح له باستخدام برنامج أو خدمة. من الشائع أن تتضمن البرامج التي تتطلب الشراء لمرةٍ واحدة اتفاقية ترخيص المستخدم النهائي، على حين تكون اتفاقيات شروط الخدمة أكثر شيوعًا في خدمات الاشتراك subscription والمواقع الإلكترونية؛ ففي المرة الأولى التي تبدأ فيها العمل على برنامج احتكاري معين، سيظهر مربع حوار في معظم الأحيان يشرح اتفاقية ترخيص المستخدم النهائي، أو اتفاقية شروط الخدمة ويحتوي على زر أوافق I Agree (أو عبارة مشابهة)، والذي يجب أن تنقر عليه قبل أن تتمكن من استخدام البرنامج. لم يكن فرض مثل هذه القيود العرف السائد دائمًا، إذ كانت تُنشَر البرامج عادةً مع شيفرتها البرمجية المصدرية قبل سبعينيات القرن الماضي، وهذا يعني أن المستخدمين كانوا أحرارًا في تعديل البرنامج ومشاركته كما يحلو لهم، ولكن مع مرور الوقت، بدأ ناشرو البرامج في فرض قيودٍ على هذه العمليات، بهدف زيادة الأرباح من خلال تخفيض عدد الأشخاص الذين يستخدمون برامجهم دون مقابل. كان لهذا التطور تداعيات تمثلت في حركتين مرتبطتين ارتباطًا وثيقًا، هما حركتي البرمجيات الحرة والبرمجيات مفتوحة المصدر. على الرغم من اختلاف الحركتين عن بعضهما، إلا أن كلاهما تدعوان إلى وجوب السماح لمستخدمي البرامج بالحصول على الشيفرة البرمجية المصدرية للبرنامج، وتعديلها على النحو الذي يرونه مناسبًا، ومشاركتها بالقدر الذي يريدونه ومع من يحلو لهم. يُعد البرنامج الحر عمومًا مفتوح المصدر، لكن لا يُعد البرنامج مفتوح المصدر مجانيًا دائمًا، لذلك سنعود في تتمة هذا الدليل إلى استخدام المصطلحات الأشمل "البرنامج مفتوح المصدر" و"ترخيص البرنامج مفتوح المصدر". ومع ذلك، يرجى أخذ العلم أنه لا يحل أحد المصطلحين محل الآخر دائمًا. لا يزال مناصرو البرمجيات مفتوحة المصدر يشجعون المطورين على نشر برامجهم بموجب ترخيص، لكن بدلًا من ترخيص البرنامج الاحتكاري الذي يحدد ما لا يجوز للمستخدمين فعله، يوصون باستخدام ترخيص برنامج مفتوح المصدر يحدِّد الحريات المتاحة لمستخدمي جزءٍ معينٍ من البرنامج. توزَّع هذه التراخيص غالبًا على هيئة ملفٍ واحدٍ ضمن البرنامج، يُسمى عادةً "LICENSE.txt" أو اصطلاح تسميةٍ مشابه. على مر السنين، دار بعض الخلاف حول الحريات المحددة التي يجب أن يضمنها ترخيص البرمجيات مفتوحة المصدر، وقد أدى هذا إلى ظهور العديد من تراخيص البرامج مفتوحة المصدر المختلفة، لكن يندرج معظمها ضمن إحدى الفئتين التاليتين: التراخيص المتساهلة وتراخيص الحقوق المتروكة. تراخيص البرامج مفتوحة المصدر المتساهلة والحقوق المتروكة الترخيص المتساهل permissive license والذي يُشار إليه أحيانًا بترخيص الحقوق غير المتروكة non-copyleft، هو ترخيصٌ يمنح المستخدمين تصريحًا باستخدام الشيفرة البرمجية المصدرية وتعديلها ومشاركتها، ويتيح للمستخدمين أيضًا خيار تعديل بعض شروط وأحكام إعادة النشر، بما في ذلك الأعمال المشتقة derivative work؛ إذ يُعرف العمل المشتق في مجال البرامج بأنه جزءٌ من البرنامج ومبنيٌ على برنامجٍ موجود. فإذا أُصدر البرنامج الأصلي بموجب ترخيصٍ متساهل، يحق لمبتكر البرنامج اختيار مشاركة عمله المشتق بموجب شروطٍ مختلفةٍ عن شروط ترخيص العمل الأصلي. يمنح ترخيص الحقوق المتروكة copyleft license للمستخدمين أيضًا تصريحًا باستخدام الشيفرة البرمجية المصدرية وتعديلها ومشاركتها، لكنه يوفر الحماية ضد إعادة الترخيص relicensing من خلال فرض قيودٍ وشروطٍ وأحكامٍ محددة؛ وهذا يعني أن مستخدمي البرامج الذين ينشئون أعمالًا مشتقةً ملزمون بإصدارها بموجب نفس شروط وأحكام ترخيص الحقوق المتروكة الخاص بالعمل الأصلي. تُعد هذه التبادلية reciprocity السمة المميِّزة لتراخيص الحقوق المتروكة، وتهدف إلى حماية نوايا المبتكرين من خلال ضمان حصول المستخدمين على نفس الحقوق والتصريحات عند استخدام الأعمال المُشتقة من البرنامج الأصلي. إضافةً إلى ما سبق، توجد تراخيصٌ مكافئةٌ للملكية العامة public-domain، وهي تمنح المستخدمين تصريحًا باستخدام الأعمال المحمية بحقوق النشر دون إسنادها، أو إلزامهم بالتوافق مع الترخيص المطلوب، وهذا يعني أن أي حقوق لمبتكر البرنامج على عمله مصادرةٌ تمامًا. على الرغم من وجود بعض التداخل في الفلسفات الكامنة وراء تراخيص برامج الملكية العامة والحرة ومفتوحة المصدر، فقد دار خلافٌ على مر السنين حول ما إذا كان الترخيص المكافئ للملكية العامة يُصنَّف حقًا على أنه ترخيصٌ مفتوح المصدر. قدِّمت هيئة المشاع الإبداعي CC0 في عام 2012 ترخيصًا، ولكن رفضت مؤسسة مبادرة المصدر المفتوح Open Source Initiative -أو اختصارًا OSI- اعتماده؛ وهي مؤسسة غير ربحية تحدِّد معايير البرامج مفتوحة المصدر وتحتفظ بقائمة التراخيص مفتوحة المصدر المعتمدة. ومع ذلك، وافقت المؤسسة على ترخيصٍ مكافئ للملكية العامة يُدعى غير مرخص Unlicense في عام 2020. ما فائدة إضافة ترخيص برنامج مفتوح المصدر؟ بصفتك مطورًا يبدأ مشروعًا من نقطة الصفر، فمن الضروري أن تكون مُلمًا بعض الشيء بتراخيص البرامج مفتوحة المصدر المتاحة لتختار طريقة استخدام الآخرين لعملك؛ كما يُعد التعرف على هذه التراخيص أمرًا مهمًا أيضًا بالنسبة للمستخدمين حتى يتمكنوا من فهم التصريحات أو القيود التي حددتها الاتفاقية المُبرمة عند استخدام عمل المبتكِر. نكرر ثانيةً، سيكون لأي عمل أصلي حقوق نشر عند إنهائه، لكن لن يكون له ترخيص، فلا يتضح لمن يرغبون في استخدامه ما الأمور المُصرَّح بها وغير المصرح بها. ألقِ نظرةً على الأسباب التالية التي تدفعك إلى إضافة ترخيص برنامج مفتوح المصدر: التطوير: يفخَر مجتمع المصدر المفتوح بنفسه لغرس ثقافةٍ تشجع على التعاون والابتكار، كما يدعو استخدام ترخيص برنامج مفتوح المصدر المستخدمين إلى الانخراط في تنمية المجتمع، وهذا يولد إحساسًا مشتركًا بالمسؤولية لتطوير الشيفرة البرمجية المصدرية باستمرار أو توسيع البرنامج لصالح الجميع. الملكية: إذا كنت ترغب في أن يكون لديك سلطةٌ أكبر على عملك، فسيساعدك اختيار ترخيصٍ يمكنه فرض تلك القيود على تحقيق ذلك. فإذا أردت مثلًا منح أية أعمالٍ مشتقةٍ التصريحات ذاتها التي اخترتها في الأصل، فقد ترغب في اختيار ترخيص الحقوق المتروكة. لحسن الحظ، يوفِّر ترخيص البرنامج مفتوح المصدر الشفافية للمستخدمين المستقبليين حول مقدار تحكُّمك في العمل، سواءٌ كان كبيرًا أو قليلًا، فالأمر يعود إليك. المنافسة: يوجد عددٌ هائلٌ من البرامج، وإذا كنت ترغب في اقتحام هذا السوق، يمكن أن يساعدك استخدام ترخيص مفتوح المصدر على البروز فيه. يُعد نظام التشغيل لينوكس Linux ونظام أندرويد Android الذي أنتجته شركة جوجل Google ومتصفح فايرفوكس Firefox من بين الأمثلة الشائعة للبرامج مفتوحة المصدر التي طوِّرَت لتنافس البدائل الاحتكارية الراسخة. تذكر أنك تستطيع تحقيق أرباحٍ من مشروعٍ برمجي مفتوح المصدر، لكن العرف التجاري لتحقيق أرباحٍ من البرامج هو استخدام ترخيصٍ احتكاري لحماية البرنامج من المشاركة أو السرقة. قد لا تنطبق عليك جميع الأسباب المذكورة لاستخدام ترخيص برنامج مفتوح المصدر، ولذلك نحثُّك على البحث بنفسك في هذا الموضوع قبل اختيار ترخيصٍ لمشروعك القادم، وربما يجب أن تطلب استشارةً قانونيةً لتتأكد من فهمك التام لما قد يمثّله الترخيص لعملك في الحاضر والمستقبل. كما سبق وذكرنا، تتناول هذه المقالة تراخيص البرامج مفتوحة المصدر المُدرجة عند إنشاء مستودعٍ جديد لمشروعك على موقع غيت هَب. ستلاحظ في نهاية الصفحة وجود خيارٍ لاختيار ترخيص، وبمجرد النقر على المربع ستظهر قائمةٌ منسدلةٌ تحتوي التراخيص لتختار واحدًا منها، كما هو موضحٌ في الصورة التالية: (التراخيص على موقع غيت هَب) سنقدِّم في الفقرات اللاحقة توصيفًا موجزًا لأنواع تراخيص البرامج مفتوحة المصدر، والتي يمكنك اختيار أحدها لإضافته إلى مشروعك القادم، بدءًا من التراخيص المتساهلة التي يوصي بها موقع غيت هَب. تراخيص البرامج مفتوحة المصدر المتساهلة تمنح التراخيص المتساهلة مستخدمي البرامج تصريحًا باستخدام الشيفرة البرمجية المصدرية وتعديلها ومشاركتها. إضافةً إلى ذلك، يحق لمبتكري البرامج المُشتقة من البرامج المُرخصة ترخيصًا متساهلًا تغيير شروط الترخيص لإعادة نشرها. يرجى أخذ العلم أن القائمة التالية لا تمثِّل جميع تراخيص البرامج مفتوحة المصدر المتساهلة المتاحة، بل هي مأخوذةٌ من خيارات الترخيص التي يقدمها موقع غيت هَب عند إنشاء مشروعٍ جديد، كما أن هذه التوصيفات الموجزة ليست شاملة. ننصحك أن تقرأ بتمعنٍ توثيق أيِّ ترخيصٍ ترغب في استخدامه، أو تتحدث مع مختصٍ قانوني للحصول على مزيدٍ من المعلومات. ترخيص أباتشي Apache أُصدِر ترخيص أباتشي من قِبل مؤسَّسة برمجيات أباتشي، وهو ينص على عدم إلزام المستخدم مشاركة نسخته المُعدّلة من الشيفرة البرمجية المصدرية بموجب نفس الترخيص، بحيث يمكنه اختيار استخدام ترخيصٍ مختلف، وهذا ما يُعرف باسم الترخيص الفرعي sublicensing. ترخيص معهد ماساتشوستس للتكنولوجيا MIT أصدر معهد ماساتشوستس للتكنولوجيا Massachusetts Institute of Technology -أو اختصارًا MIT- ترخيص معهد ماساتشوستس للتكنولوجيا MIT، وهو أحد أقصر التراخيص في القراءة ويتضمن قيودًا قليلةً؛ وعلى غرار ترخيص أباتشي، فإنه يمنح المستخدمين أيضًا خيار ترخيص البرنامج ترخيصًا فرعيًا. تراخيص بي إس دي BSD يتيح لك موقع غيت هَب الاختيار بين نوعين من تراخيص BSD، هما ترخيصترخيص BSD 2-Clause "المُبسَّط"، والذي يُشار إليه أحيانًا باسم ترخيص بي إس دي الحر "FreeBSD"، و ترخيص BSD 3-Clause "الجديد" أو "المعدَّل"؛ إذ يكمن الفرق الرئيسي بينهما في البند الثالث، الذي يقيِّد مستخدمي البرامج من استخدام اسم المؤلف، أو المؤلفين، أو المساهمين في مصادقة المنتجات أو الخدمات. ترخيص برنامج بوست Boost يمكننا الحصول على ترخيص برنامج بوست من مكاتب بوست في اللغة البرمجية ++C، وقد أقرَّته مؤسسة مبادرة المصدر المفتوح في عام 2008. يُعد هذا الترخيص مشابهٌ لتراخيص MIT و BSD، إلا أنه لا يتطلب إسنادًا عند إعادة نشر البرنامج في الصيغة الثنائية binary. تراخيص الحقوق المتروكة للبرامج مفتوحة المصدر تمنح تراخيص الحقوق المتروكة لمستخدمي البرنامج تصريحًا باستخدام الشيفرة البرمجية المصدرية وتعديلها ومشاركتها، لكنها توفِّر أيضًا الحماية من إعادة الترخيص من خلال فرض قيودٍ وشروطٍ وأحكامٍ محدّدة؛ وهذا ما يُمثِّل الخاصية التبادلية لهذا الترخيص التي تتطلب امتثال عمل المستخدم للحقوق الأصلية الموضحة في الترخيص. وكما ذكرنا، لا تمثل القائمة التالية جميع تراخيص الحقوق المتروكة للبرامج مفتوحة المصدر المتاحة، بل هي مأخوذةٌ من خيارات الترخيص التي يقدمها موقع غيت هَب عند إنشاء مشروعٍ جديد، كما أن هذه التوصيفات الموجزة ليست شاملة. ننصحك أن تقرأ بتمعنٍ توثيق أيّ ترخيصٍ ترغب في استخدامه، أو تتحدث مع مختصٍ قانوني للحصول على مزيدٍ من المعلومات. تراخيص جنو GNU أصدرت مؤسسة البرمجيات الحرة عدة إصدارات من ترخيص جنو العلني General Public License - أو اختصارًا GPL-، إذ يتيح موقع غيت هَب للمستخدم الاختيار بين أربعٍ منها. يُلزِم الإصدار 3.0 من GPL أو GPL v3.0 المستخدمين بذكر أية تعديلات على الشيفرة البرمجية الأساسية، وإتاحتها عند نشر أية ملفاتٍ ثنائيةٍ مُستخدمة على عملهم بموجب هذا البرنامج المرخص؛ كما يسهِّل هذا الترخيص العمل مع التراخيص الأخرى، مثل ترخيص أباتشي، الذي لم يكن الإصدار السابق منه v2.0 متوافقًا معه. أُنشأ ترخيص جنو العلني الإصدار الثاني أو GPL v2.0 قبل الإصدار الحالي GPL v3.0، ويشترك في الشروط والأحكام مع الإصدار الثالث، لكنه يُعد ترخيصًا قويًا للحقوق المتروكة، إذ يتطلب ترخيص الحقوق المتروكة القوي إصدار أية تعديلات على الشيفرة المصدرية بموجب نفس الترخيص. يتمثل الاختلاف الأساسي بين الإصدار 3.0 و 2.0 في أنه يُسمح لمستخدمي البرامج في الإصدار 2.0 بنشر العمل إذا كانوا يلتزمون بشروط الترخيص، بغض النظر عن الالتزامات القانونية السابقة، والهدف من هذا البند هو منع أي فرد أو طرف من تقديم ادعاء بانتهاك براءة الاختراع التي تقيد حرية المستخدم بموجب هذا الترخيص. كانت إحدى الإصدارات الأخرى للترخيص رخصة جنو ليسر Lesser العلنية، والمُشار إليها باسم LGPL، أو بالإصدار 2.1 من إصدار GPL v2.0، ويهدف هذا الترخيص إلى أن يكون في الوسط بين تراخيص الحقوق المتروكة القوية والضعيفة. يتمثّل الاختلاف الرئيسي في هذا الترخيص في أنه يتيح لمستخدمي البرامج دمج عنصرٍ من برنامجٍ مرخص بموجب ترخيص LGPL مع عناصر برنامجهم، وليسوا مطالبين بمشاركة الشيفرة البرمجية المصدرية لعناصر برنامجهم؛ كما يحق للمستخدمين أيضًا نشر مكتبةٍ هجينة، وهي مجموعةٌ من الدالات من مكتبة مرخصة بموجب ترخيص LGPL ودالاتٍ من مكتبةٍ مرخصة بموجب ترخيص آخر، لكن يجب أن يوفِّروا نسخةً من تلك المكتبة المرخصة بترخيصٍ غير LGPL ومعلوماتٍ عن مكانها. تُعد رخصة جنو أفيرو Affero العلنية الإصدار v3.0 إصدارًا آخرًا من تراخيص جنو، ويُشار إليها باسم AGPL. يتمثل الاختلاف الرئيسي في هذا الترخيص في أنه مخصصٌ للبرامج المستخدمة على الخوادم، ويلزِم هذا الترخيص المستخدمين الذين يشغلون برنامجًا مُعدَّلًا على خادمٍ ما بمشاركة هذه المعلومات وإتاحة الشيفرة البرمجية المصدرية المعدلة للتنزيل إلى الإصدار المُعدَّل الملائم المُشغّّل حاليًا على الخادم. ترخيص إكليبس العلني Eclipse Public أصدرت مؤسَّسة إكليبس Eclipse ترخيص إكليبس العلني، الذي يُعد ترخيص حقوق متروكة ضعيف يُلزِم مستخدمي البرامج بمشاركة أية تغييرات يجرونها على الشيفرة البرمجية. اختار هذا الترخيص تطبيق ترخيص حقوق متروكة أضعف لتخفيف تشدُّد شروط تراخيص جنو العلنية على المستخدمين. ترخيص موزيلا العلني Mozilla Public أصدرت مؤسَّسة موزيلا ترخيص موزيلا العلني Mozilla Public License -أو اختصارًا MPL-، ويُعد أيضًا ترخيص حقوق متروكة ضعيف. يتمثل الاختلاف في هذا الترخيص موازنةً مع ترخيص إكليبس العلني، في أنه ترخيص حقوقٍ متروكة مبنيٌ على الملفات، ما يعني أنه يمكن دمج الشيفرة البرمجية مع شيفرة برمجية مفتوحة المصدر أو احتكارية. التراخيص المكافئة للملكية العامة تمنح التراخيص المكافئة للملكية العامة المستخدمين تصريحًا باستخدام الأعمال المحمية بحقوق النشر دون إسنادها، أو إلزامهم بالتوافق مع الترخيص المطلوب. وكما ذكرنا، لا تكون هذه التراخيص مُعتمدةً دائمًا من قِبل مؤسَّسة مبادرة المصدر المفتوح OSI. ترخيص المشاع الإبداعي العالمي الصفري أصدرت منظمة المشاع الإبداعي ترخيص المشاع الإبداعي العالمي الصفري، الذي يُعد ترخيص حقوق نشر علنية، أي يمكن نشر العمل المحمي بحقوق النشر بحرية. يرجى أخذ العلم أن هذا الترخيص غير مُعتمَدٍ من مؤسسة مبادرة المصدر المفتوح OSI. تتمثل النقطة الأساسية في هذا الترخيص في امكانية المستخدمين من استخدام الشيفرة البرمجية المصدرية وتوزيعها وتعديلها، لكن عليهم أن يوافقوا على التنازل عن أي حقوق نشر لضمان إمكانية الوصول إلى هذا العمل في النطاق العلني. إضافةً إلى ذلك، لا يُلزَم المستخدمون بتقديم أي إسنادٍ للعمل ويمكنهم استخدامه تجاريًا. الترخيص غير المرخص Unlicense أُصدِر الترخيص غير المرخص Unlicense في عام 2012، ويُعد ترخيصًا مكافئًا للملكية العامة ومُعتمَدًا من مؤسَّسة مبادرة المصدر المفتوح. بموجب هذا الترخيص، يحق لمستخدمي البرامج استخدام الشيفرة البرمجية المصدرية والملفات الثنائية المُجمَّعة وتعديلها ونشرها لأغراضٍ تجارية وغير تجارية، كما ينصح هذا الترخيص المستخدمين الذين يرغبون في ضمان توفِّر مساهماتٍ في الشيفرة البرمجية أو البرنامج للعامة بتضمين تصريحٍ حول التزامهم بمشاركة الشيفرة الرئيسية مع العامة. الخاتمة توجد عواملٌ كثيرة يجب دراستها عند اختيار ترخيص برنامج مفتوح المصدر، ولكن توجد بالتأكيد بعض الخيارات الشائعة في مجتمع المطورين. نذكر من التراخيص المتساهلة الشائعة ترخيص معهد ماساتشوستس للتكنولوجيا MIT، وترخيص أباتشي، وتراخيص BSD، كما تتضمن بعض تراخيص الحقوق المتروكة الشائعة رخصة جنو العلنية ورخصة موزيلا العلنية. تذكر أن هذه المقالة قدَّمت معلوماتٍ حول بعض تراخيص البرامج مفتوحة المصدر الشائعة فقط، وتحديدًا التراخيص التي اقترحها موقع غيت هَب. نحثُّك على استكشاف جميع خيارات الترخيص المتاحة، أو استشارة مختصٍ قانوني حتى تختار بحكمة الترخيص الذي يلائم متطلبات مشروعك. ترجمة -وبتصرف- للمقال ‎Understanding Open-Source Software Licenses لصاحبته Jeanelle Horcasitas. اقرأ أيضًا تعرف على أنواع التراخيص الحرة التي تسمح لك ببيع المواد بشكل تجاري طرق التعريف بمشروعك مفتوح المصدر صيانة المشاريع مفتوحة المصدر ثلاث خطوات لتأمين DevOps مفتوح المصدر
    1 نقطة
×
×
  • أضف...