JacobK1
(Jacob)
1
对于希望避免运行非自由软件的人来说,我们如何才能确定网站提供的用于访问由 Discourse 驱动的论坛的软件是自由软件?
如果没有 JavaScript 客户端软件,该论坛似乎是只读的,因此我想在网站上运行 JavaScript,但在 Discourse Meta 或例如 Purism Forums(也由 Discourse 驱动)上,我没有看到任何迹象表明客户端软件是自由软件。一些脚本文件有指向源映射的链接,但我检查过的源映射没有任何许可信息。
我发现一个较早的主题提到“只有一个版本的 Discourse——那个很棒的开源版本”,但我也发现一个主题表明 CLA 可能允许专有版本,但没有专有版本的示例。
一个确实显示许可信息的 Discourse 实例是 FSF 会员论坛(我认为只有会员可以访问),它链接到 GitHub Discourse 仓库、一个 FSF git 仓库以及一个扩展的 GitHub 仓库,但这些信息仅在客户端软件运行时显示,因此对于决定是否首先运行该程序来说,它不太有用。
有没有办法在我实际运行软件之前,弄清楚 Discourse 实例提供的客户端软件是否是自由软件?或者即使我必须运行该软件,我如何才能获得 Discourse 实例客户端软件的完整许可源代码?原始的 discourse GitHub 仓库肯定并不总是足够的,因为人们在重新分发软件之前可能已经修改了它?
或者,是否有不同的 Discourse 应用程序不需要从它连接到的服务器下载软件?
1 个赞
Jagster
(Jakke Lehtonen)
2
Discourse 是开源的,所以使用它是免费的。托管,无论是自行托管还是使用 CDCK,都需要付费。
搜索 is discourse free 得到这个:
是的,它是。而且事实上是唯一可用的来源。
4 个赞
我猜你不能。
有些安装是托管的,并且在托管堆栈中包含专有部分。
自助托管者不会愚蠢到不使用标准安装,因为那是支持成本最低的。
您可能会发现,有些网站可能会使用平台允许管理员自行决定的专有/私有插件。
6 个赞
JacobK1
(Jacob)
4
我不明白这句话的意思。您是说托管 Discourse 的人不会在重新分发软件之前修改它吗?
Jagster
(Jakke Lehtonen)
5
人们称这个团队或公司为 CDCK。当然,他们每天都在这样做。它处于持续开发中。然而,这正是我们正在使用的。
这可能会引出这个问题:
2 个赞
JacobK1
(Jacob)
6
您提到插件让我想知道是否有办法检查版本信息,我找到了这个主题,其中描述了如何获取版本信息。
因此,例如,我可以看到此实例正在使用提交 276bc8a565389ea1a145af08ec8e64c1a5bea990,FSF 会员论坛正在使用提交 7ecaf6295daf8759aa98d00e7035c4dc0f853303,Purism 论坛正在使用 999aaa35a79ae7c586a91de1f6c1f7b3c8092bd2,Exercism 论坛正在使用提交 1bd9ca11e777f880462ae64c6795ef7de28a8cd2。所有这些都是官方存储库中的有效提交,所以我猜这些实例没有修改 Discourse 本身(尽管它们可能添加了插件)。
我认为剩下的是插件和主题。看起来您可以通过查找插件脚本中的“data-discourse-entrypoint”属性来查看插件名称,但我没有看到版本标识符。您知道有什么方法可以获取已安装插件的列表吗?
您可以查看 JavaScript 包来获得线索,但任何数量的插件都可能安装在后端,不被轻易察觉。
2 个赞
JacobK1
(Jacob)
8
我所说的“修改软件后再重新分发”是指,那些在公共网站(例如 forums.puri.sm)上重新分发该软件的人,可以修改他们自己的版本,而无需将更改提交到主 git 仓库。如果他们与 Discourse 达成协议,他们就可以将这些更改作为非自由软件发布,与主 Discourse git 仓库分开。
主仓库的变更速度非常快,保持分叉的可用性成本高昂。
这正是插件成为扩展流行解决方案的原因。
5 个赞
Jagster
(Jakke Lehtonen)
10
这是一个很大的假设,我不认为这会发生——而且是什么协议,Discourse 是开源的。但 CDCK 知道得更清楚。我估计有一些分支,但那些是在生产中吗……我对此表示怀疑。但正如 Robert 所说,当可以使用组件和插件完成事情时,为什么还要这样做。
2 个赞
JacobK1
(Jacob)
11
所以我想检查插件的唯一方法可能是:
- 设置我自己的 Discourse 实例
- 尝试安装与我想要交互的任何远程实例相同的插件
- 检查我的实例上的插件 JavaScript 是否与他们的实例相同
我想我也可以尝试完全不运行插件软件,只使用 Discourse 本身自带的脚本。
当然,我无法检查他们的后端,但当我连接到别人的服务器时,我只关心客户端软件。
Moin
12
您可能还对安全模式感兴趣,它会禁用 JavaScript 自定义。
2 个赞
不。你无法看到服务器上正在发生的事情。可能有很多更改未在公共 API 上公开,或者很难破译。
普通人无法得知服务器上正在发生的事情。
3 个赞
JacobK1
(Jacob)
14
我认为,结合版本信息,就可以在避免运行非自由软件的情况下使用任意的 Discourse 分发版。可以检查提交是否在官方 GitHub 仓库中,然后确保安全模式始终启用,或者只“白名单”(在 LibreJS 等工具中)安全模式下出现的脚本。
JacobK1
(Jacob)
16
我只关心客户端的更改,因为我不会在我的计算机上运行服务器代码。
JacobK1
(Jacob)
17
如果我要运行一个 Discourse 服务器,那么我会选择要安装的插件,并且不安装缺少许可证的插件。
当我连接到别人的服务器时,我需要运行他们给我的软件,而这些软件的许可证可能不容易找到。
我认为大多数安装都会有可预测的插件集。但并非全部。除非你成为该网站的特权管理员,否则你永远不会知道。
2 个赞
JacobK1
(Jacob)
19
为了确保我理解正确:如果一个更改不是客户端的,那么它就不会影响普通用户(即非管理员)运行的 Discourse 分发代码。这是正确的吗?
运行,但不会受到它们可能交互的任何信息的处理。\n\n服务器可以在后台将您的所有详细信息发送给 Facebook 并获得报酬 
2 个赞