كيف يمكنني أن أميز إذا كان توزيع عميل Discourse معين هو برمجيات حرة؟

يمكنني أيضًا استخدام الوضع الآمن للحصول على فكرة عن التغييرات التي أجرتها توزيعات Discourse الأخرى:

  • لدى Purism عدد قليل من نصوص السمات (والتي قد تكون في الواقع جزءًا من Discourse الرسمي، نظرًا لأن الوضع الآمن يحظر جميع السمات على ما أعتقد) وقطعة واحدة داخلية (أي، جزء من ملف HTML، وليس ملف JS خارجي) من JavaScript، تبدأ بـ const DELAY_TARGET=2e3,POLLING_INTERVAL=50,splashS
  • لدى Exercism ما يبدو أنه المكون الإضافي discourse-spoiler-alert الذي تمت إضافته لاحقًا إلى النواة، بالإضافة إلى نفس JS الداخلي تمامًا مثل Purism
  • لدى منتدى أعضاء FSF نفس JS الداخلي تمامًا مثل الاثنين الآخرين
  • يبدو أن Discourse Meta (هذا المنتدى) لديه الكثير من اختلافات JS
    • discourse-activity-pub
    • discourse-customer-flair-plugin (لم أتمكن من العثور على ترخيص لهذا في أي مكان)
    • discourse-deprecation-collector
    • discourse-doc-categories
    • discourse-new-features-feeds (لم يتم العثور على ترخيص لهذا أيضًا)
    • العديد من النصوص الأخرى، بما في ذلك بعض النصوص التي لا تحتوي حتى على رابط لخريطة المصدر

لذلك يبدو أن معظم التوزيعات الخارجية (بناءً على عينتي الصغيرة المكونة من 3) تظل قريبة جدًا من Discourse الرئيسي، ولكن هذا يجعل الأمر يبدو الآن أن هذا التوزيع يحتوي على مكونات إضافية لن تكون جزءًا من معظم التوزيعات. هل تعرف أين يمكنني العثور على الكود المصدري المرخص لكل هذه؟ هل ستكون في المستودع الرئيسي؟ لم أتمكن من العثور عليها عن طريق البحث عن بعض هذه الأسماء في المستودع الرئيسي، ولكن من الممكن أن أكون قد فاتني ذلك.

من هنا، من الواضح، لأن معظم هذه ليست طرفًا ثالثًا، بل طرفًا أول :smirking_face:
يجب عليك الاطلاع على الفئات Plugin و Theme component. ولكن يمكنك أيضًا العثور على Dev و Documentation مثيرة للاهتمام.

إعجابَين (2)

لقد حاولت البحث في المنتدى بأكمله عن “discourse-new-features-feeds” (على سبيل المثال) ولم أجد شيئًا. بالنسبة لبعض الإضافات، تمكنت من العثور عليها في دليل الإضافات، أو على GitHub، أو هنا في المنتديات، ولكن بالنسبة لـ discourse-new-features-feeds و discourse-customer-flair-plugin، لم أتمكن من العثور على أي شيء. لم أتحقق من كل نص برمجي للإضافة، لذلك قد يكون هناك المزيد مما لا يمكنني العثور عليه.

أعتقد أنه قد يكون هناك سبب، على سبيل المثال، لعدم إتاحة تخصيصات Meta الخاصة بها للعامة. أو ربما لم تتعمق بما فيه الكفاية في مستودع Discourse :man_shrugging:

إعجابَين (2)

من الممكن أن يكونوا عملاء في مؤسسة كبيرة وحصلوا على Discourse لتخصيص منتداهم لهم خصيصًا.
أيضًا، إذا كنت ترغب في استخدام الوضع الآمن لرؤية التخصيصات من جانب العميل، ألن يؤدي ذلك إلى تعطيله بدلاً من ذلك؟ كيف ستقوم بتمكينه على هذه المواقع في المقام الأول؟

إعجابَين (2)

من باب الفضول، أتساءل ما هو المنطق الكامل بالضبط، هنا. لا يمكنك ببساطة تصفح الإنترنت بالمخاوف التي تطرحها، أليس كذلك؟

أنت تتحدث عن “الترخيص”. لكن ترخيصك الخاص لاستخدام منتدى معين كمستخدم بسيط سيكون مختلفًا عن ترخيص تشغيل برنامج المنتدى فعليًا (= إذا أراد شخص ما إعداد منتدى آخر به). لماذا يهتم المستخدم بالأخير؟ بسبب بعض المبادئ التي يريد الالتزام بها؟ أي تخصيص غير معاد توزيعه سيكون “خاصًا”، على ما أعتقد. وهذا يطرح السؤال عن أين يبدأ هذا وينتهي.

يمكنك أن تكون حذرًا من جافاسكريبت وما قد يسمح بتشغيله على متصفحك (غالبًا ما تتم مناقشة مخاطر وإمكانيات ذلك. من المفترض أن تكون محدودة). لست متأكدًا مما إذا كان Discourse يمكن تشغيله بدونه، على الرغم من ذلك. أو تشغيله بشكل صحيح، على الأقل. يمكنك دائمًا تجربته. يوجد امتداد المتصفح الشهير “NoScript” لهذا الغرض، على سبيل المثال.

ما زلت أتساءل عن السبب: هل يتعلق الأمر بشفرة خبيثة محتملة؟ في هذه الحالة، لن يكون منطقيًا بالنسبة لي أن تشعر بتحسن مع ترخيص يقول إن المنتدى يعمل بإصدار غير معدل. أو ما هو الأمر؟

4 إعجابات

بشكل عام، أريد تجنب تشغيل برامج غير مجانية. السبب الرئيسي هو أنني أعتقد أنه يجب أن أتحكم في البرامج التي تعمل على جهازي، وسبب إضافي هو أنني لا أحب فكرة وجود أخطاء قد يكون إصلاحها غير قانوني. أعتقد أيضًا أنه سيكون من الجيد لو حصلت على برامجي من عدد قليل من المستودعات الموثوقة، بدلاً من تنزيل البرامج من مئات المواقع المستقلة المختلفة دون أي رقابة أو مساءلة من طرف ثالث، لذلك من المهم بالنسبة لي أن أكون حرًا في حزم البرامج التي أستخدمها لمستودع أثق به (على الرغم من أن هذا غير عملي إلى حد ما بالنسبة لـ JavaScript الذي يتم تقديمه عبر الموقع باستخدام التكنولوجيا الحالية).

لا أعتقد أنه يجب أن أتحكم في البرامج التي تعمل على أجهزة الآخرين، لأنني أعتقد أن مشغل الخادم يجب أن يتحكم في ذلك، ولا يبدو لي منطقيًا أن يكون لدى العديد من المستخدمين تحكم كامل في البرامج.

لا، من السهل نسبيًا تجنب تشغيل برامج غير مجانية على الإنترنت إذا لم تستخدم برامج تقوم بتنزيل وتشغيل تعليمات برمجية عشوائية من أطراف غير موثوق بها تلقائيًا، أو إذا قمت بتعديل هذه البرامج لعدم القيام بذلك (على سبيل المثال، عن طريق تثبيت LibreJS في متصفح الويب الخاص بك).

على حد علمي، يتطلب تشغيل برنامج المنتدى استخدام معظم وظائف المنتدى، على الرغم من أن قراءة المشاركات تعمل بدونه. إذا أردت تسجيل حساب ونشر مواضيع، يبدو أنني بحاجة إلى تشغيل برنامج المنتدى. معظم الناس لا يدركون ذلك لأن معظم المتصفحات ستقوم بتنزيل وتشغيل أي برنامج ترسله إليهم، دون إخطار المستخدم.

يتم تشغيل بعض برامج المنتدى على الخادم، ولن تقوم مثيلات Discourse بالضرورة بتوزيع هذا البرنامج على الإطلاق، مما يعني أنني لن أحصل بالضرورة على أي برنامج غير مجاني أضافه المثيل إلى جانب الخادم، لذلك لا أحاول تجنب المثيلات التي تفعل ذلك.

ملاحظة جانبية حول التعريفات

في رأيي، البرامج التي لا يتم توزيعها أبدًا هي “خاصة” لأن لها “مالكًا” واحدًا (المؤلف) ولكنها أيضًا “مجانية” لأن جميع مستخدميها (واحد فقط، المؤلف) أحرار في فعل ما يريدون بها. حسنًا، أعتقد أنه يمكنك القول إن الأشخاص الذين يتفاعلون مع خادم هم “مستخدمون” للبرنامج الموجود على هذا الخادم، لذلك ربما يجب أن أستخدم كلمة مختلفة عن “مستخدمين”، لكنني لست متأكدًا من الكلمة التي يجب استخدامها بدلاً من ذلك. ربما أنا تقنيًا “مستخدم” للبرنامج الذي يعمل على شبكة الهاتف أو على هاتف شخص آخر إذا اتصلت بشخص ما.

نعم، لدي NoScript مثبت، وعندما أقوم بحظر برنامج Discourse من جانب العميل، بالطبع لا يمكن لـ Discourse “العمل” بدونه، لأنني منعت المتصفح من تشغيل البرامج النصية. البرنامج من جانب الخادم، الذي لا يعمل على جهازي، لا يتم منعه من التشغيل بواسطة NoScript. في هذه الحالة، يمكن عرض المواضيع والتعليقات التي يقدمها برنامج خادم Discourse، ولكن للتسجيل والنشر يبدو أنك بحاجة إلى استخدام برنامج JavaScript من جانب العميل.

فيما يتعلق بالبرامج الضارة، إذا كان برنامج مجاني برنامجًا ضارًا، فيمكن لشخص ما تعديله لعدم كونه برنامجًا ضارًا، ثم توزيع هذا الإصدار المعدل لاستخدامه بدلاً من ذلك. بالنسبة لـ JavaScript الذي يتم تقديمه عبر الموقع، فإن هذا غير عملي حاليًا إلى حد ما. من الناحية المثالية، سيكون هناك ترخيص ينص مباشرة على أن البرنامج هو برنامج مجاني، بحيث حتى لو تم تعديل البرنامج، فسيظل قانونيًا استخدامه كبرنامج مجاني. كما هو الحال، يجب أن أثق في أن التوزيعات التي أستخدمها لا “تكذب” بشأن إصدار البرنامج الذي يستخدمونه (على سبيل المثال، عن طريق تعديل برنامج خادم Discourse للمطالبة باستخدام التزام واحد عندما يكون في الواقع التزامًا آخر).

ربما جعلت هذا الرد طويلاً بعض الشيء، لكن جوهره هو أنني أقدر حرية البرمجيات ولذلك أريد تجنب تشغيل برامج غير مجانية على جهازي.

في هذه الحالة، “هم” هم Discourse Meta. أليس هذا جزءًا من Discourse (الشركة)؟

نعم، ما قصدته هو: باستخدام الوضع الآمن، يمكنني تعطيل البرامج النصية من التعديلات، ثم يمكنني مقارنة البرامج التي يتم إرسالها إلى المتصفح في كلتا الحالتين. الفرق هو التعديلات والموضوعات.

يمكن تمكين الوضع الآمن عن طريق الانتقال إلى /safe-mode (على سبيل المثال، http://meta.discourse.com/safe-mode) وتحديد الخيارات هناك. لا تتطلب هذه الصفحة JavaScript، لذلك يمكن تمكين الوضع الآمن أثناء استخدام ملحقات مثل NoScript وLibreJS و/أو Haketilo لحظر JS أو عن طريق تعيين javascript.enabled إلى false في إعدادات المتصفح للمتصفحات المستندة إلى Firefox.

في هذه المرحلة، يمكنك مقارنة علامات البرامج النصية على كلتا الصفحتين لمعرفة ما تم إزالته باستخدام الوضع الآمن. لقد استخدمت برنامجًا نصيًا مثل هذا:

script-diff.js
// SPDX-FileCopyrightText: 2024 Jacob K
//
// SPDX-License-Identifier: CC0-1.0

// on page with more scripts
const scriptSrcArr = [];
for (script of document.scripts) {
  if (script.src) {
		scriptSrcArr.push(script.src);
  } else {
    scriptSrcArr.push(script.textContent);
  }
}

console.log(scriptSrcArr)

// on page with fewer scripts (You will need to right click on the array and click "Copy Object" on the first page)
scriptSrcArr = PASTE_OBJECT_FROM_OTHER_PAGE_HERE
for (script of document.scripts) {
  if (!scriptSrcArr.includes(script.src)) {
      console.info(script)
  }
}
// I'm assuming that the scripts on the first page are a superset of the scripts on the second page

@Jagster (محاولة الرد عبر التعديل، كما اقترح Discourse (ميزة اقتراحات رائعة!))

هذا يجعلني أعتقد أن Discourse، كما تم توزيعه بواسطة meta.discourse.org، هو برنامج غير مجاني، مما يعني أن الادعاءات بأن “شفرة المصدر الكاملة لـ Discourse متاحة مجانًا للجمهور” و “Discourse هو برنامج منتدى مجاني 100%، مفتوح المصدر.” (كلاهما من www.discourse.org) تبدو مضللة، حتى لو كانت صحيحة تقنيًا لأن البرنامج ليس هو نفس الشيء مثل الإضافات الخاصة به. أشعر وكأنني قد تم خداعي لتشغيل برنامج غير مجاني :slightly_frowning_face:

أعتقد أن هذا الادعاء موجه حقًا للأشخاص الذين يعتزمون استضافة مثيلات Discourse، وليس الانضمام إلى مثيلات موجودة.

آمل أن أكون مخطئًا وأن يكون الأمر حقًا أنني لم أنظر عن كثب بما فيه الكفاية في المستودع.

يجب أن تشعر بذلك كثيرًا. لا توجد رموز تعبيرية، لأن هذا كان مجرد تصريح بسبب كيفية عمل الإنترنت والتطبيقات فيه.

لقد قلت للتو إن التخصيصات سيئة، وإذا كان الأساس مفتوح المصدر، فيجب أن تكون جميع الإضافات مجانية أيضًا. حسنًا، أعتقد أن ووردبريس استخدم ذلك، ولكن بالتأكيد ليس مع wordpress.com، ولكن إذا قمت بزيارة موقع ووردبريس الخاص بي، فهناك الكثير من العمل المخصص. بعضها مملوك، وبعضها مفتوح، وبعضها مخصص وبعضها مني. ولن يحدث شيئان في هذا الواقع:

  • سيكون كل كود العمل المخصص عامًا
  • سأخبرك أو أي زائر إذا كان لدي ترخيص صالح أم لا

لكنني أجد صعوبة في فهم سبب عدم كون Discourse و WordPress و Moodle وما إلى ذلك مجانية إذا لم تكن بعض الإضافات مجانية. لا أفهم المنطق وراء هذا التفكير.

إعجابَين (2)

هذه هي النقطة بالتأكيد :+1:
لا يمكنك التنبؤ بما قد يقوم المضيفون بتكييفه للقيام به.
بالفعل، علاوة على ذلك وعلى سبيل المثال، حسب تقدير المضيف قد يضيفون:

  • إعلانات
  • اشتراكات

وبينما قد يظل “البرنامج” “مجانيًا للاستخدام” فقد تكون بعض الميزات مقيدة ولن يتم تشغيل الإعلانات إلا للمشتركين الذين يدفعون.
لا يملك الجميع أموالاً غير محدودة لتشغيل مثيل Discourse مجانًا. تحتاج العديد من المواقع إلى تحقيق إيرادات لدفع فواتيرها.
تشغيل Discourse لا يكون أبدًا “مجانيًا” على نطاق واسع. يتعين على المضيف دفع تكاليف اسم النطاق، والخادم الافتراضي الخاص، وخدمات البريد الإلكتروني لسرد أهمها.
(… ودعنا لا ندخل في تكاليف تطوير Discourse في المقام الأول!)

4 إعجابات

حسنًا، أعتقد أنني أفهم وجهة نظرك.

على الإطلاق! الكود سيكون دائمًا مجانيًا.


يتمتع مسؤولو مواقع Discourse الخاصة بهم بالحرية في تخصيص منتداهم الخاص. لا يتعين دائمًا أن تكون الإضافات (Plugins) والسمات (Themes) وشروط الاستخدام (TCs) مفتوحة المصدر. هذا مقبول لدى Discourse، حيث توجد طرق لاستخدام مستودعات خاصة بدلاً من المستودعات العامة لربط هذه التخصيصات.
لذلك، فإن أيًا من الإضافات، باستثناء في حالات نادرة جدًا جدًا جدًا (ربما حتى شبه مستحيل!)، ستكون هذه التخصيصات مدفوعة [1]. لذلك لا شيء “غير مجاني”: كل شيء مجاني.
نقطتي هي أن البرامج مفتوحة المصدر ستكون مجانية. الإضافات مجانية - إنه اختيارك لاستخدامها. وكذلك السمات، وشروط الاستخدام، وما إلى ذلك. ومع ذلك، ما ليس مفتوح المصدر قد يكون مدفوعًا، لكن المسؤولين اختاروا جعله مجانيًا للاستخدام. لا يوجد ما يمنعك إذا كنت ترغب في إنشاء نسخة من تخصيص مغلق المصدر بأفضل ما لديك من قدرات واستخدامه بنفسك.
Discourse مجاني، وتخصيصاته العامة [2] مجانية، وتخصيصاته الخاصة مجانية أيضًا للاستخدام (على الأقل في عدد كبير من الأماكن، ولكن

. دفع المال للمالك مقابل الكود المصدري هو شيء مختلف، مع ذلك.

بشكل أساسي، ما لم تقم بإنشاء إضافة/سمة/شرط استخدام بنفسك ولا تشاركها، يمكنك دائمًا تثبيت التخصيصات مجانًا. لا يوجد ما يمنعك.


أنا آسف إذا بدا هذا فظًا أو مقتضبًا، أو يدور في حلقات ويكرر نفس الشيء.


  1. باستثناء العمولات المدفوعة، وهو اختيارك الخاص لرعايتها. ↩︎

  2. أي تلك المدرجة هنا في Meta أو في github بشكل عام ↩︎

إعجاب واحد (1)

لكن هذه تأتي “فوق” الإصدار مفتوح المصدر، لذا فإن مجرد وجود اتفاقية ترخيص المساهم (CLA) لن يجعل Discourse غير مجاني.

هذا لا يتعلق بالحرية مقابل المال ولكن بالحرية بمعنى “وجود ترخيص غير مقيد”. What is Free Software? - GNU Project - Free Software Foundation

هذا ليس صحيحًا بالضرورة. مرة أخرى: هذا يتعلق بالحرية بمعنى الحرية، وليس السعر. هناك مشاريع مفتوحة المصدر لديها تراخيص مقيدة للغاية بحيث لا يمكن اعتبارها برامج مجانية وفقًا لتعريف مؤسسة البرمجيات الحرة (FSF). الأمثلة هي MongoDB و ElasticSearch.

تشغيل البرامج المجانية لا يعني أن لديك سيطرة عليها.

إذًا يبدو أنك تخلط بين “موثوق” و “مجاني”. عندما يقوم مسؤول الخادم بإنشاء Discourse، فإن عملية البناء تقوم بتنزيل جميع أنواع الحزم من NPM. هل يمكن دائمًا الوثوق بهذه؟ (لقد علمتنا التاريخ أن هذا ليس هو الحال - مثال و آخر).

أنت “تخمن” :thinking: يمكن لمسؤول الخادم إجراء تعديلات دون تغيير تجزئة الالتزام. ويمكن للمكون الإضافي حقن تعليمات برمجية JavaScript أيضًا.

أكره أن أخبرك، لكن هذا غير صحيح.

هذا لا يتعلق بالبرامج المجانية أو غير المجانية أو مفتوحة المصدر أو مغلقة المصدر، بل بالثقة.

إذا قمت بزيارة مثيل Discourse، فسيتعين عليك الوثوق بـ

  • مسؤول (مسؤولون) الخادم
  • كل شخص لديه حق الوصول إلى الالتزام في منظمة Discourse github
  • كل شخص لديه حق الوصول إلى الالتزام في مستودعات المكونات الإضافية
  • كل شخص في github
  • سلسلة برامج المتصفح بأكملها
  • كل شخص لديه حق الوصول إلى الالتزام في أي مستودع NPM يتم استخدامه
  • كل شخص لديه سيطرة على برنامج المتصفح الخاص بك
  • الشركة التي قدمت شهادة SSL وسلسلة الثقة

والتي ستكون بضعة آلاف من الأشخاص على الأقل؟

يمكن العثور على المكونات الإضافية ومكونات السمات في مستودعات منفصلة.
ليست كل المكونات الإضافية مفتوحة المصدر (على سبيل المثال، discourse-customer-flair-plugin ليست كذلك على حد علمي). لذا ها هي. سيتعين عليك التوقف عن استخدام Meta ؛) أمزح بالطبع. وجهة نظري هي أنه يمكن أن يكون هناك ما يكفي من الثقة دون أن يكون كل شيء مفتوح المصدر أو حرًا.

8 إعجابات

شيء فقط، @JacobK1، هل قرأت ترخيص Discourse؟

اقتباس بعض النقاط التي قد تكون ذات صلة:

رخصة جنو العمومية العامة
تهدف إلى ضمان حريتك في مشاركة البرامج المجانية وتغييرها - للتأكد من أن البرنامج مجاني لجميع مستخدميه.

يجوز لك تعديل نسختك أو نسخ البرنامج أو أي جزء منه، وبالتالي تكوين عمل يعتمد على البرنامج، ونسخ وتوزيع مثل هذه التعديلات أو العمل بموجب شروط القسم 1 أعلاه

آمل أن يكون هذا قد تم الرد عليه أعلاه وفي الاقتباس أعلاه.

إعجاب واحد (1)

إذا فهمت بشكل صحيح، فكل هذا مرتبط بشكل أساسي بـ javascript. ويتعلق الأمر بما يتم تشغيله باستخدام javascript داخل متصفحك، والذي يتم تقديمه بواسطة كل مثيل من Discourse. سيكون الأمر أيضًا يتعلق بـ “الثقة” والقدرة على معرفة الكود الذي يتم تشغيله (والقدرة على إلقاء نظرة عليه). صحيح؟

هذا يتجاوز نطاق خبرتي، ولكن هل يمكنك الحصول على “تحكم” في هذا؟ ما لم تكن تقدم التزامًا يغير الأشياء للجميع، لا أعتقد أنه يمكنك حقًا “إصلاح” أي شيء بنفسك هنا، لأن ما تشير إليه باسم “البرنامج” الذي يعمل على جهاز الكمبيوتر الخاص بك يتم توفيره لمتصفحك من الخادم في كل مرة.

حتى لو كان كل منتدى لديه رمزه مفتوح المصدر منشور، مع جميع التعديلات الممكنة، هل يمكنك التأكد من أن هذا هو ما يقومون بتشغيله بالفعل في جميع الأوقات؟ لا يمكنك تنزيله مرة واحدة، والتحقق منه وتجميعه بنفسك من جانبك.

ما تريده حقًا هو إما:

  1. لا javascript (لا حظ مع Discourse في هذا الأمر، والذي يعتمد بشكل كبير عليه) أو
  2. عميل مستقل مفتوح المصدر مثبت بالفعل على جهاز الكمبيوتر الخاص بك. سيحتاج الأخير أيضًا إلى عدم استخدام javascript، إذا كان كل هذا ممكنًا مع Discourse، وهو ما لا أعرفه. عندها ستتمكن من تعديل عميلك والحصول على التحكم فيه الذي تبحث عنه.

هل سيكون هذا فهمًا عادلًا؟
(ملاحظة: هذا يتجاوز نطاق خبرتي أيضًا، ولكن إذا كنت أتذكر بشكل صحيح، فإن 100٪ من كود Discourse ليس مفتوح المصدر. الآن، أنت تهتم حقًا فقط بما يعمل على جانبك، وليس كل شيء من جانب الخادم)

إعجاب واحد (1)

كل شيء باستثناء بعض كود الاستضافة/البنية التحتية لدينا مفتوح المصدر.

إعجابَين (2)

@Jagster

Maybe I was being a bit overdramatic :slight_smile:

Because I get the vast majority of my software using apt install instead of a web browser, and I trust my software distribution (Trisquel) to only distribute free software, this isn’t usually a concern.

Just to be clear, I am not saying customizations are necessarily bad, just that they may be bad if they are nonfree, so a way to be sure you avoid running nonfree software is to disable customizations.

I think all software should be free/libre.

@Jagster @RGJ

To be clear, I am not trying to say Discourse is nonfree. It’s only this particular distribution of Discourse (Discourse Meta) that appears to include nonfree software.

@Jagster @merefield

I should have mentioned in my previous post that another reason I thought this distribution would be free is that the about page for Discourse says " There is only one version of Discourse – the awesome open source version.". This is, again, technically true because the plugins are not part of Discourse, but it felt misleading to me.

Discourse might not have control over third party distributions, but I would have expected Discourse instances hosted by Discourse to be free software if they are saying what they say on the about page. I might have also expected a license and/or framework that would effectively require derivatives to be free software, which there kind of is, since Discourse is GPL, but I guess it doesn’t cover plugins.

@merefield @NateDhaliwal

I think charging money for software or services is fine; usually the “free” in “free software” means “libre”, as in you are free to do what you want with it (copy, modify, etc.), after you get it. It does not necessarily mean that it is “free” as in “gratis” i.e. zero cost.

@NateDhaliwal

Strictly speaking, yes, there is no one stopping me, but it would be illegal, which seems bad. For private use this might work out, but generally public software repos and app stores don’t want to include code illegally, and some people who I might want to use the software may be uncomfortable running illegally copied code. I’m not sure I have the right approach; maybe I should just totally ignore copyright, but that seems like not the best option when it’s feasible to avoid illegal and nonfree software.

No worries! :slight_smile: I don’t think you’re being rude, and I don’t yet feel like we’re going in circles.

@RGJ

What do you mean by this? If the software is free that means I can modify it; therefore I do have control over what it does.

I don’t think free is the same as trusted; perhaps I should have said “arbitrary” instead of “untrusted”, but my point was that most browsers will execute whatever code a webpage gives them, and since I often visit websites I have never visited before, many websites I visit are “untrusted”. For these websites, I have no reason to think they will not send nonfree software.

Regarding NPM, I consider it more trusted than an arbitrary website, but maybe not as trusted as my apt or guix repos. Though, trust is not one-dimensional; although I would not trust a new package on NPM just because it is on NPM, I would trust that when I download JQuery from NPM it really is JQuery. NPM may make mistakes that allow an attacker to replace JQuery, but NPM could take measures to avoid malware that would not be as realistic for site-served JavaScript (e.g. pre-publish automated/manual review, post-publish crowd-sourced review, automated checking that minified/obfuscated scripts match source code, rules against downloading and running arbitrary code at runtime). Importantly, when malware is found on NPM, there’s a third party (NPM, as opposed to the software developer) to report it to so it can be removed. This is not the case for site-served JavaScript - the only one who can remove it is the site operator.

Does that mean the listed commit hash would be incorrect if a server administrator made modifications and didn’t also change the listed commit hash? I thought updating software would change the commit hash automatically, and I (incorrectly?) assumed the listed commit hash would be updated automatically.

Would plugin-injected JavaScript be disabled with safe_mode=no_themes,no_unofficial_plugins?

So, would the only way to avoid nonfree software while using Discourse be to package a Discourse client as a browser extension or Haketilo package or something similar?

I’m not sure what you mean by that considering my original question is about software freedom, and not trust.

I disagree that everyone you listed has to be trusted.

  • The server administrators would not have to be trusted if you don’t run software served by them, for example if you get the Discourse client from GitHub and package it so it can be used with that server.
  • In many cases, people collaborating on software might read some of each others’ commits, so I don’t have to trust all authors individually.

So that would mean the Discourse Meta client is proprietary software, right? Though, it is possible to use safe mode to disable the plugin JS.

Maybe, but that’s not very helpful if I want to avoid nonfree software.

@NateDhaliwal
I have read the license in the Discourse git repo, but (because of the CLA) it does not necessarily apply to derivatives of Discourse outside of that repo. I would like to see a notice on every Discourse distribution that says which of the distributed software is libre. It would even (IMO) fit with the spirit of the GPL: “you must show them these terms so they know their rights”.

@Mevo

Yes, it is possible, to run JavaScript from a browser extension or proxy, such a Haketilo or GreaseMonkey, though this can be very impractical for some software, for example if it updates very often, as would be the case for software where data is baked into the JavaScript software. Haketilo also doesn’t have support for some kinds of scripts, for example scripts with a type of “module”.

Yes, I think your understanding is correct overall. Though packaging the JavaScript as a browser extension or for Haketilo or GreaseMonkey would effectively result in an independent installed client, even though it would be using JavaScript.

@HAWK

I’m guessing you mean “Everything” as in “everything that’s part of Discourse”, as in, not including plugins like discourse-customer-flair-plugin?

كل شيء جزء من المنتج الأساسي الذي نستضيفه (بما في ذلك Meta)، باستثناء ما أشرت إليه أعلاه، مجاني ومفتوح المصدر.

بعض الإضافات تعتمد على منصات مملوكة لتشغيلها، ولكن هذا لا علاقة له بما إذا كان ديسكورس مفتوح المصدر أم لا.

5 إعجابات

جميع مثيلات Discourse التي تستضيفها CDCK أو نحن (أنا المؤسس المشارك لشركة تستضيف Discourse) تعمل بواحد أو عدد قليل من الإضافات مغلقة المصدر لتوفير بعض الوظائف الخاصة ببيئة الاستضافة.

أعتقد أن هناك الكثير من الارتباك بين التوزيع بالمعنى القديم (هنا مستودع github ولا تتردد في فعل ما تريد) والتوزيع بالمعنى الحديث (هنا موقع ويب ويقوم بإرسال Javascript إلى متصفحك). بالإضافة إلى ذلك، هناك ارتباك بين Discourse https://github.com/discourse/discourse و Discourse وجميع الإضافات والمكونات الثيمية الخاصة به والمكونات الإضافية من طرف ثالث التي يضيفها مسؤولو الموقع.

إنها تجزئة التزام، لذلك إذا تم إجراء تعديلات بعد سحبها من المستودع وقبل الالتزام بها، فلديك بالفعل مثل هذا الموقف. لا يلزم أن يكون هذا عملاً خبيثًا، وسيحدث أيضًا إذا تم تطبيق تصحيحات الأمان (والتي تتم عادةً قبل الالتزام بها في فرع عام). الآن بشكل عام، تصحيحات الأمان ليست من جانب العميل ولكنها قد تقدم بعض التعليمات البرمجية المحدثة من جانب العميل.

نعم - على الأقل من الناحية النظرية. لست متأكدًا من مدى صعوبة التحايل على ذلك (عن قصد أو عن طريق الخطأ)

:thinking: Was the iOS SSL Flaw Deliberate? - Schneier on Security

ستكون طريقة، لست متأكدًا مما إذا كانت هي الطريقة الوحيدة. إذا قمت بذلك، فستحتاج إلى تحديثه على أساس شبه يومي لتجنب كسر الأشياء.

على الرغم من أن هذا الموضوع بأكمله هو نقاش قانوني مثير للاهتمام، إلا أن كل شيء يبدو منفصلاً قليلاً عن الواقع.

3 إعجابات

@HAWK

هل هناك مستودع منفصل بترخيص للإضافات لم أجده سابقًا، مثل discourse-customer-flair-plugin؟ يتم تقديم JavaScript إلى المتصفح برابط إلى خريطة مصدر ولكن لا يوجد ترخيص على حد علمي.

فهمي لـ “كود الاستضافة/البنية التحتية” لن يشمل JavaScript من جانب العميل؛ هل هذا صحيح؟

@RGJ

أتفق. أعتقد أنني مرتبك بشأن ما ينطبق عليه مصطلح “Discourse”.

آه، حسنًا، لذا أعتقد أنه لن تكون هناك طريقة جيدة لمعرفة ذلك.

نقطة جيدة، يمكن لشخص ما محاولة إخفاء عيب كهذا. ولكن يبدو من الأسهل تخفيف هذه المشكلة عن طريق تدقيق التعليمات البرمجية للجهات الخارجية بدلاً من الثقة بكل شخص قام بتعديل التعليمات البرمجية في المنبع، على الرغم من أنه من المحتمل أن لا يكون أي من النهجين عمليًا تمامًا.

نعم، على الرغم من أنه من الممكن أن يتم التعامل مع معظم التحديثات تلقائيًا.

أفترض أن هذا صحيح إلى حد كبير في هذه الحالة.

إعجاب واحد (1)

للعلم فقط، @JacobK1: بما أن Discourse تم إنجازه بشكل جيد، فلا داعي لذكر شخص ما عند اقتباس ذلك الشخص. الاقتباس نفسه سيولد إشعارًا :+1: (كان ذلك أيضًا لإنشاء أقسام فرعية، بالتأكيد :pray: )

إعجابَين (2)