向后兼容旧浏览器

我负责运行一个由 Discourse 支持的、面向神经退行性疾病患者的论坛。我通过关注 Commit search results · GitHub 上的安全列表并随时更新来保持软件的最新状态。然而,这会带来一个意想不到的副作用,那就是越来越多的用户因使用旧设备而被阻止访问。

一位用户的 iPad 无法再接收 iOS/Safari 更新,因此被锁定。最近,另一位用户的一台旧 Chromebook 也无法将 Chrome 更新到兼容的版本,也被锁定了。我理解只支持最新浏览器版本的政策,但当几年前生产的设备虽然完全可用却不再接收更新,从而阻止用户访问对许多人来说至关重要的生命线时,这会让人感到极其沮丧。

论坛顶部的标题告诉这些用户有一个功能较低的版本可供使用,但由于论坛是仅登录的(因为过去我们曾遇到过隐私泄露问题),而功能较低的版本不支持登录,因此无法使用。

理想情况下,应该有一个安全更新流,不会导致旧浏览器停止工作,或者至少在更新时能发出警告,告知某些浏览器将停止工作,以便我在应用更新前通知用户。

以下是我们用户对此的一些评价:

“我一直在那里通过私信支持另一位妻子——这太令人痛苦了,你永远不会知道它造成的混乱……我真的很……心碎😢”

“抱歉我说得这么生气……自从17个月前丈夫去世后我就不再发帖了,但我仍然每天登录,内心充满绝望”

“我想我可以在当地的图书馆访问论坛,但不能在家访问非常令人沮丧”

“我的意思是,我可以访问所有其他网站和银行等,那里没有任何问题,而且它们在不断更新”

“所以,我尝试了你下载应用程序的建议,但不幸的是,它无法安装。它显示与我的 iPad 不兼容。这无疑是由于 iOS 版本(又一次)。”

“这真的很令人沮丧!我买不起更换我的 iPad,而它是让我与这个社区保持联系的唯一途径”

“这个论坛是一条生命线……他们把它从我手中夺走了,我怀疑还有很多人也是如此”

15 个赞

这太悲剧了。不幸的是,Discourse 的开发似乎总是在前进,而且似乎每隔几年(在我看来)就会发生某种变化,导致另一波旧设备或浏览器被剥夺权利。

你的情况可能是使用稳定版本会有所帮助的一种情况。但是任何一种更新策略都会让你容易出现你看到的问题。而不更新的策略则让你容易运行旧软件。

我没有看到答案,除非从 Discourse 转向其他对支持旧设备和旧浏览器有更宽松政策的软件。我不知道那会是什么。

另外,这些旧设备和浏览器本身很可能不安全。但如果它们仅用作通信设备,那可能关系不大。

6 个赞

是否可以安装第三方浏览器?在 iPad 或 Chromebook 上?

找到了这个适用于旧款 iPad 的。您也可以安装其他浏览器。

Download and install Google Chrome - iPhone & iPad - Google Chrome Help.

这里有一个可能对您有帮助的 Chromebook 链接。

Top 5 Chromebook Web Browsers 2024 [Ranked & Reviewed] - Alvaro Trigo's Blog.

但同意,不支持旧设备具有真正的向后兼容性确实令人遗憾。想知道是否可以制作一个插件来解决您这种特殊用例的问题。

1 个赞

而且据我所知,那些也是 Safari。但无论如何,那些都无法通过 Discourse 的测试,因为该结果来自 iOS。

3 个赞

所以安装一个第三方浏览器,比如 Chrome 或 Firefox,然后用它代替 Safari?不行?

2 个赞

那些不是带有引擎的真实浏览器。这可以被描述为它们更像是皮肤。

3 个赞

我不明白。抱歉,您是说 Google Chrome 或 Firefox 等不是 iOS 上那些浏览器的正版版本吗?只是重新包装的 Safari 浏览器?

2 个赞

更像是苹果的重制引擎,但最终结果非常相似。苹果对其环境的限制非常严格。

4 个赞

那确实很不幸,但考虑到是苹果公司,也不足为奇。我记得微软在 Windows 95 时期也尝试过类似的做法,限制第三方浏览器的性能(嗯,也许不完全一样),当时是 Netscape(现在称为 Mozilla Firefox)。微软因此在法庭上和网络开发者那里受到了严厉的惩罚。

2 个赞

这并不理想,但像使用某种网站浏览器作为中间件这样的想法是否可行?有点像人们使用 Tor 的方式?

在这种情况下,也许可以作为兼容层?

1 个赞

Apple 要求 iOS 上的所有浏览器都使用 Apple WebKit。

我猜 Discourse 源代码可以调整为允许登录,但仍保持只读模式(因为这似乎是防止浏览器中出现它无法处理的内容所必需的)。

5 个赞

苹果公司真糟糕,它打算强迫客户升级。安卓有时很麻烦,但有可用的选项。

很高兴我从未被吸入苹果设备生态系统。而且,在这种情况下,用户很可能太麻烦了,无法尝试在他们老化的设备上安装 Linux 操作系统。因为苹果并不真正那么用户友好。

3 个赞

嗯,向后兼容性问题经常被讨论,而且是不可行的。当浏览器/操作系统生命周期结束/停止支持时,Discourse 仅提供有限功能的只读模式。

如果有人能编写这样的层,那很好,但我完全确定 CDCK 不支持它。这有点像越狱苹果手机 :wink:

2 个赞

@codev “功能齐全”的最低浏览器要求目前是什么?(抱歉,我不确定这发布在哪里)

3 个赞

既然我们已经阐述了关于“抨击苹果”以及“他们是最糟糕的”这一部分内容,我很想知道关于支持向后兼容性的政策是什么。大多数(如果不是全部)产品团队都会发布他们的向后兼容性政策,有些政策比其他政策更宽松。幸运的是,技术在不断进步,而不幸的是,这也给大多数技术的有效寿命设定了到期日。

关于 @codev 提出的问题,我也很好奇,因为我正准备部署 Discourse,但有可能一些用户使用的是老旧设备。正如 @Ed_S 所暗示的,这可能是我需要考虑的问题,需要另寻他处。

就我个人而言,我使用的一些技术已经使用了 5 年以上,我的家人也有一些设备比这更老旧。我认为我不是唯一有这种情况的人。值得称赞的是,苹果的硬件非常坚固(这意味着它通常能很好地超越所支持的软件),而且总的来说,他们确实为向后兼容性提供了慷慨的支持。

软件和安全框架在不断进步,尤其是在当今这个时代,由于许多东西都是相互依赖的,因此需要进行升级。我认同为了安全而升级的说法,但是,不再支持某个版本的东西,仅仅因为它不再“出货”,并不意味着没有用户仍在继续使用该技术。

如果有人要争辩说,“嘿,我需要支持那些使用 1993 年非 SSL 浏览器的客户”,我同意这很荒谬。然而,如果我们说你只能使用 N-1 版本(例如,只在过去 18 个月内出货的版本),那么不是每个人每 6 个月都在升级。

例如,Firefox 为旧平台提供了 ESR(扩展支持版本)。这对 Firefox 和需要 ESR 的用户来说是件好事。然而,如果供应商(例如 Discourse)因为一个愚蠢的浏览器版本号不匹配他们预定义的/硬编码的最低版本字符串而不支持某些东西,那么这一切就变得毫无意义了。如果需要特定的框架,那是一回事——如果仅仅是“版本 1 不等于 2”,但否则它就能工作,那真的很不幸。我看到越来越多的人对支持早期版本缺乏兴趣。这是一个令人失望的趋势。如今在 80 年代末和 90 年代出生的一代工程师,是在一种“必须不断升级”的文化中成长起来的。

我知道我在这里跑题了,感谢你的艺术创作许可。我不想忽略 @codev 最初的疑问。这个问题很重要,尤其是在 Discourse 在沟通和社区方面提供了如此有意义的作用的情况下。

4 个赞

也许你可以编写一个非常简化的用户界面,允许登录、私信,并通过 Discourse API 进行回复,然后将其从另一个子域提供服务(或者通过一些巧妙的 Nginx 规则从同一个站点提供服务?)

这样,你仍然可以为旧设备提供非常基本的功能,并与 Discourse 后端保持同步。

3 个赞

好的,我找到了(关于我的问题)

“Discourse 的设计目标是面向未来十年的互联网,因此最低浏览器要求很高。”

我不确定我是否理解这个信息,除非 Discourse 是在时间机器里开发的。我预计 2030 年的大多数用户今天并没有在使用该产品。也许我忽略了重点。

编辑:
@Canapin 浏览器的支持策略是什么?当前稳定版 - 2(N-2),还是 N-1,或者只有“最新版”?

这里强调了安全问题(更多是用户方面的担忧,而不是特定于 Discourse 的使用,我确信),Discourse 确实不能要求任何不在核心 JS 库中支持的东西,而这些库在 6 年里几乎没有变化。即使是 Gmail 通过这些旧设备的网络浏览器也能很好地工作,没有问题。撇开安全问题不谈,已在此处注明。

4 个赞

您好 @codev

我希望能在更好的情况下欢迎您加入我们的社区。

恐怕我的话听起来会有些空洞,但我确实理解您感受到的沮丧。

软件演进过程中存在一个固有的问题,人们常常会问:“你们的软件不再支持我的手机了,但这款类似的软件却可以,为什么?”不幸的是,这没有简单的答案。

我们理解您的社区正经历痛苦。我们清楚地看到,您的成员在可能被切断支持系统的前景面前所表现出的痛苦和绝望。

不得不去图书馆使用电脑,完全无法替代您在需要时随时访问您的支持网络,也无法替代在公共场所使用与在家中舒适私密的环境中分享和贡献的区别。

这让我们感到困扰,因为我们的使命是让每个人都能更轻松地进行在线讨论,并长期保存这些讨论。

我们和您一样,对人们无法使用设备直到其彻底报废感到沮丧。然而,像 iPhone 这样的黑匣子设备,必须由供应商继续支持和更新,否则它们使用起来会非常危险。我们注意到,苹果目前仅为 最严重的 iOS 12 漏洞提供非常有限的更新,而且 Safari 的版本已经过时多年。

我们在内部详细讨论了这些关键选择。我们尽最大努力尽可能长时间地支持它们,直到它成为一个在技术上极其复杂、难以长期维护的挑战。在权衡这些选择以确保它们对大多数社区最有利,同时又不牺牲我们的安全标准或易用性,并非易事。

不幸的是,任何这样的选择都有其弊端,而您的信息是我们在努力避免的问题的一个痛苦而诚实的例子。

我们无法完全撤销我们的决定,但我们将继续在内部讨论此事。Discourse 将不再支持某些设备,随着时间的推移,这种情况还会再次发生。请注意,我们已经将对 iOS 12 的支持延长了一年,并尽力警告用户,支持即将被移除。

问题仍然是:我们如何帮助解决您那些需要访问和参与您论坛的成员所面临的这个问题?

您能否首先尽您所能,帮助我们了解您社区的设备使用情况(包括具体的型号信息)?

9 个赞

官方来说,

Discourse 支持所有主流浏览器和平台的最新稳定版本

  • Microsoft Edge
  • Google Chrome
  • Mozilla Firefox
  • Apple Safari

此外,我们还支持 iOS 15.7+ 上的 Safari。

来自 What is Discourse? | Discourse - Civilized Discussion

我想补充说明的是,“Discourse 支持此浏览器版本或更高版本”并不一定意味着该浏览器的旧版本将无法工作。只是不保证能正常工作,并且可能在某个时候停止工作。

6 个赞

最后一行:

此外,我们旨在支持 iOS 15.7+ 上的 Safari。

考虑到最新版本是 16.3.x,这至少意味着支持 N-1,甚至 N-2(就 iOS 而言)。

此支持声明的问题在于,它可能会疏远一类拥有“技术上兼容”客户端的用户,但 Discourse 并未承诺进行测试。正如 @Canapin 所指出的,“这只是不保证,并且可能在某个时候停止工作”,这是一种说法,即自行承担风险使用。这与 Web 应用程序检查客户端版本并使用 UI 元素来告知其不兼容不同。更糟糕的是,限制了本应“正常工作”的功能,只是因为它不再接收 QA 或回归测试,并且正在被弃用,理由是*“现在没有人测试这个,也没有带宽这样做。”*

如果可能在大多数适用情况下支持 N-2,那么很有可能支持近 80% 的潜在“Web 客户端”用户群。对于 N-2,在 iOS 的情况下,这将意味着支持 Safari 14 / iOS 14。

如果“支持”一词是触发词,那么如果可能的话,允许 N-2 并加上这样的说明:如果遇到任何问题,请升级到受支持的客户端,很多东西仍然会“正常工作”,也许不是在最理想的体验(UI 渲染等)中,但至少不会被阻止使用某些东西。毕竟,这是一个公告板,而不是 Microsoft Office 365。(无意冒犯 Discourse 团队!)

3 个赞