InfoQ 研究中心诚意出品,一份报告带你走进中国 2000 万开发者 了解详情
写点什么

这个曾领先于谷歌和微软的开源项目,为何盛极而衰?

  • 2021-09-13
  • 本文字数:2937 字

    阅读完需:约 10 分钟

这个曾领先于谷歌和微软的开源项目,为何盛极而衰?

编译|核子可乐

编辑|燕珊


Firefox 正在不断流失用户,这是一个不争的事实。


来自 Firefox 的公开数据显示,自 2018 年底到 2021 年 8 月 30 日,桌面端 Firefox 的 MAU(月活跃用户数)下降约 18% 至 1.998 亿,大概少了 4400 万月活用户。进一步看会发现,其中有一半月活用户是今年内损失的(3 月至今减少近 2000 万)。



根据 Statcounter 在 8 月发布的统计,在桌面浏览器市场中,Microsoft Edge 和 Mozilla Firefox 目前正在激烈争夺第三的名次,其中 Edge 录得 3.57%的市场份额,Firefox 则是 3.55%。自从 Edge 浏览器转向 Chromium 内核之后,其份额就持续上升。


事实上,近几年关于 Firefox 衰落趋势的讨论络绎不绝。Firefox 曾一度是全球第二大浏览器,市占率高达 35%,而现实的情况是,它的市场占有率已经连续多年下降。


一位有近 40 年编程经验的开发者 Dan 近日就 Firefox 的衰落趋势发表了自己的看法,从几个方面阐述 Firefox 的不足之处。


在社区讨论中,一个获得不少赞同的观点是,因为不想让 Google 完全控制浏览器市场所以才用的 Firefox。但也有人表示,当 Firefox 越像 Chrome,自己就越没有理由继续使用它了。


Dan 认为,造成 Firefox 衰落的原因,始于 2009 年第三季度的一个致命决定……

以选项卡为中心

在做出强制推行选项卡中心设计的决定之后,Firefox 的市场份额就开始萎缩。当时,PC 上的所有其他程序都在使用针对活动窗口的选项卡,包括微软 Office 及 Adobe 等专有软件,Notepad++及 GIMP 等自由开源软件,外加 3D 设计、视频编辑器、十六进制编辑器等等。总之,这一切都是当时最标准、最合乎逻辑的设计思路。


之后谷歌决定把选项卡设定为 Chrome 浏览器中的核心标准,但这款浏览器其实主要是为移动设备、而非台式机所设计。这套方案在智能手机上确有意义,毕竟这里没有完整的桌面式菜单布局空间。但在台式机上,整个体系就显得很反直觉,而且破坏了其他程序的操作流程。


台式机代码与手机不同,因此 Firefox 其实没理由要把这种强调移动端的 UI 强行推广给台式机用户。面对高达 400 万行的代码库,Firefox 当时针对其中两行代码给出的“原方案太难维护”的理由纯粹是在侮辱用户的智商——代码又不是草坪,几个礼拜不管也不会变黄。


面对用户如海浪被涌来的投诉,一位不愿透露姓名的主要开发者给出的回应是,“我们有几亿用户,5000 人的不满并不能代表大多数使用者。”但他们没有意识到,人们在抱怨中流露出了这样的意见——如果我想让自己的浏览器看起来像 Chrome,那我就直接用 Chrome 了。没错,他们也确实这么做了。

不断删除“没人使用”的功能

Firefox 做出的每项变更都遵循着相同的模式——修改掉默认功能,但却没有任何菜单设置供用户执行恢复。接下来,把菜单设置删除掉,用户只能通过 about:config 执行变量。之后是删除 about:config 选项。用户群体的每一次抗议得到的都是相同的回应:“你只是极少数,大多数人喜欢这种变化。


而且每轮调整都会赶走更多用户,没人愿意再度遭受 Mozilla 工作人员傲慢、居高临下的态度给自己留下的“心理创伤”——所以,他们永远也不会回来。认真关注用户数量,大家可以发现每次删除之后 Firefox 的份额都有明显下降,只有在第三方加载项或 CSS 恢复变更方案出现后才会稳定下来。年复一年、周而复始,Mozilla 显然没有吸取任何教训。


好像是觉得删除设置还不过瘾,Firefox 又继续对插件和主题进行中立化处理,强制集中签名并最终弃用了 XUL,而且根本不给能够补充这些丢失功能的 webextension api。


面对这些变化,我再次与之前那位主要开发者交谈,他的回答是“大家不用 Firefox,就是因为这里的插件太多了。我们的遥测结果显示,80%的用户从未安装过任何插件。”但问题在于,任何懂点技术的人都会优行关闭遥测功能,他们不希望浏览器监视自己的行踪,所以这种调查结果明显就不靠谱。


即使是在 UI 设计中做出的一项重大举措——拖放式可定制 Australis 界面,也因为糟糕的默认布局和 CSS 选项太少而没能得到用户们的肯定。可怕的倾斜选项卡(直接抄袭自 Chrome)也是 Mozilla 唯一亲口承认没能做好的 UI 变动。更让人意外的是,就连 Chrome 自己后来都取消了这项功能,Firefox 却一路坚持到底。


直到今天,Mozilla 仍声称自己非常重视用户的意见。但 12 年过去,他们的态度冷漠依旧,糟糕的「默认 Proton UI」则是强迫用户的最新手段。(如果大家觉得我的判断有失偏颇,请在 Google 上输入「Firefox Proton」看看其他用户是怎么评价的。)虽然这方面问题可以通过 userCHrome.css 得到很大程度修复,但我已经厌倦了这种一有更新就得修复一番的感受。

糟糕的编码范式

Mozilla 的源代码也是噩梦一场。例如,默认配置文件位置被定义了 3 次,使用的是 3 种不同语言的不同变量,其中之一还是由不同文件当中多个变量组合而成的。其中有一个全局变量,要通过 6 个不同的文件共同定义。


编译后、下载历史、访问过的页面、书签等等,都被一股脑塞进了混淆文件当中。最终结果是,我们只能从历史记录中一个个删除这些条目。要是能把它们放在同一个独立的文本文件中,不是几秒钟就能清理完吗?为什么非要这么搞?想要更改图标外观,或者为自定义搜索添加新图标?这些 PNG 图像也被混淆并保存在 omni.ja 文件当中。


我觉得但凡脑回路正常的开发者,都会支持用指定的编辑器在几秒内完成变更。但 Mozilla 偏偏要求用户安装并学习 Eclipse 之类的大型编辑工具,并在每次变更时重新编译文件。问题实在太多了,这里不再赘述。


难怪 Mozilla 的编码人员在查找和修复 bug 方面表现得如此步履维艰,他们自己造就了更糟糕的编码范式、迫使他们为了修复 bug 而记录下所有内容。恶性循环就此展开。

内存管理不善

如果某个程序待在那里什么都不做,它的内存使用量应该不会改变。看看我的内存管理器,里面有 40 个进程都遵循着这样的原则。但有个程序在什么都不做时仍在不断读写磁盘,猜猜它是谁?


没错,就是 Firefox。


它运行着 13 个进程,而且每个进程都在不断活动。我有 40 年的编程经验,其中 30 年面向 PC 平台,所以我多少还算懂计算机工作原理。这类问题只能归结于糟糕的底层设计,任何流于表面的修复都治愈不了这么深的病根。


代码范式也成为 Firefox 性能糟糕的根源,他们也压根不打算解决。我敢打赌,性能也是 FirefoxOS 遭遇失败的一大原因。FirefoxOS 的想法很好,但差劲的执行与编码实践带来了太多 bug,导致成品根本无法使用。

一边说“我们重视您的隐私”,一边大肆侵犯用户隐私

遥测。即使点击“禁用遥测”也无法禁用隐藏遥测。此功能会先运行 ping、再强制进行插件签名,还有无法关闭的自动更新会每 10 分钟再 ping 一次。我们甚至得单独做出明确选择才能退出“实验”项目。


现在 Firefox 最新的“花样”是要求用户必须使用双因素验证登录至 Firefox 插件账户,才能制作自定义主题。但如果不是强制推广插件签名,本来不需要这么麻烦的。


总之,Mozilla 对用户隐私丝毫没有尊重,正如对我们的反馈意见丝毫没有被尊重一样。

写在最后

不愿承认错误、不愿听取不同意见的组织或个人必然会停滞不前、慢慢腐朽。Mozilla 的决策者们似乎就是这样,所以我对 Firefox 的未来也不抱太大希望。希望 Mozilla 中能有人从过去的错误中吸取教训,克服顽疾、走向复兴。毕竟一款产品的成功来自为用户提供他们想要的、而不是告诉他们应该要什么,盲目复制竞争对手只会让自己迷失方向。


原文链接:

《Here’s Why Firefox is Seeing a Continuous Decline for Last 12 Years》

2021-09-13 16:245882

评论 6 条评论

发布
用户头像
Win11正在步FireFox的后尘
2021-09-18 10:03
回复
用户头像
刚从火狐换回chrome,最近 我的电脑总是莫名其妙的卡顿,升级系统,杀毒都没有用。突然灵光一现,关掉火狐,哦吼,问题解决了!不可能是磁盘问题,我两块硬盘都是固态,可能是火狐跟我的AMD CPU兼容性有问题?
2021-09-18 09:39
回复
用户头像
当商业公司发力,非盈利的开源都是弟弟
2021-09-15 17:39
回复
用户头像
xp, win8, 火狐每次放弃自己的用户都还找个别人(微软, 谷歌)给出的理由, 真是脑残!
2021-09-14 09:59
回复
用户头像
IE都被干掉了,Firefox 一个非营利组织搞的软件想赢太天真了,本质还是 Google 占着流量入口(Android)
2021-09-13 22:23
回复
用户头像
内存比 Chrome 吃得凶,流畅度一般,功能和稳定性也不如 Chrome
2021-09-13 17:47
回复
没有更多了
发现更多内容

Nginx-技术专题-技术介绍

洛神灬殇

MySQL中的锁机制

AI乔治

Java MySQL 架构 线程 锁机制

甲方日常53

句子

工作 随笔杂谈 日常

11.11 应对海量访问的网络基石 京东智联云自研交换机发展之路

京东科技开发者

运维 网络 交换机

什么是云服务?

anyRTC开发者

音视频 WebRTC 云服务 RTC

新工业化如何实现?今年的信息化百人会中藏着“懂行”密码

脑极体

【MySQL】如何最大程度防止人为误操作MySQL数据库?这次我懂了!!

冰河

MySQL 数据库 性能优化 数据安全 分布式数据储存

会装虚拟机,删库不用跑

MySQL从删库到跑路

虚拟机 virtualbox

面经手册 · 第18篇《AQS 共享锁,Semaphore、CountDownLatch,听说数据库连接池可以用到!》

小傅哥

Java 并发编程 共享锁 Semaphore 信号量

Dubbo 接口,导出 Markdown ,这些功能 DocView 现在都有了!

程序员小航

markdown idea插件 IntelliJ IDEA 文档生成 Doc View

#不吐不快# CV千千条,修改最重要。代码不规范,伙伴两行泪!

程序员小航

奇葩的经历 不吐不快

读谱对吉他手来说重要吗?试试它提升你的读谱效率

奈奈的杂社

学习 编曲 打谱

高承实:区块链的工业革命带来了什么?

CECBC

区块链 分布式

智变的八个瞬间,京东智联云化“?”为“!”

脑极体

Springboot过滤器和拦截器详解及使用场景

AI乔治

Java spring 架构 Spring Boot

vue项目实战经验汇总

徐小夕

Java 面试 Vue 大前端 Vue3

前嗅教你大数据——什么是代理IP?

前嗅大数据

爬虫 数据采集 静态IP 代理IP 动态IP

Jira停售Server版政策客观解读——如何最小化风险?

PingCode

项目管理 研发管理 Jira Atlassian

国网浙江建设公司推进“信用基建+区块链”建设

CECBC

区块链 国网 基建

Redis 持久化之 RDB 与 AOF 详解

AI乔治

Java 架构 redis持久化 redia

SQL数据库:窗口函数

正向成长

窗口函数

《网络是怎样连接的》PDF下载

计算机与AI

网络

阿里P8以hashmap讲解如何学习jdk源码,还不学习

小Q

Java 学习 源码 jdk mybatis

MySQL从库维护经验分享

Simon

MySQL 主从复制

【活动回顾】WebRTC服务端工程实践和优化探索

ZEGO即构

WebRTC 服务端工程

我真的尽力了,最经典Redis面试14题,没时间复习就看这个吧

小Q

redis 学习 编程 架构 面试

注册中心原理剖析

石刻掌纹

【薪火计划】03 - 从错误中认识到管理

dstweihao

管理

CSS 排版与正常流 —— 重学CSS

三钻

CSS 排版

Glide.with(view)挂在了谁的生命周期上

mengxn

生命周期 Glide Activity Fragment

什么是低代码(Low-Code)?

移动研发平台EMAS

工具 研发效能 低代码 开发 代码

这个曾领先于谷歌和微软的开源项目,为何盛极而衰?_文化 & 方法_Dan_InfoQ精选文章