百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术文章 > 正文

Mozilla,一个被遗忘的伟大科技的公司

zhezhongyun 2025-02-06 17:10 55 浏览

你听过Mozilla这家公司吗? 或许很多人会摇头。但是,要说起这家公司的重要产品火狐浏览器,恐怕没有一个程序员不知道它。

在今年8月份,Mozilla启动了新一轮的裁员计划(这是2020年迄今为止的第二轮裁员),裁员人数250人,裁员员工大部分来自开发工具部门,总数约占其员工总数的四分之一,Mozilla首席执行官米切尔·贝克在博客中写道:冠状病毒大流行严重影响了我们的收入,我真希望有别的办法。总的来说,两轮裁员加起来几乎占到了公司的三分之一。

考虑到火狐浏览器一般的用户群中很大一部分是程序员,减少对该领域的投资似乎是一种特别短视的做法,因为这会让你最忠实的用户失望。但对于那些不太熟悉 Mozilla 的人来说,这次裁员似乎只是另一个竞争对手未能在市场取得成功的例子。毕竟,Mozilla 的头牌产品火狐(Firefox)浏览器已经多年没有对市场主导地位发起过挑战了,这或许只是逐渐走向死亡的过程?

但是Mozilla不仅仅是一个只依靠Firefox的公司,它不仅仅是另一家被微软、苹果和谷歌等价值万亿美元的竞争对手击败的小型科技公司,相反,Mozilla 是一家拥有推动网络标准发展的悠久历史的公司,它的危机应该关系到我们所有人。

Mozilla简史

上世纪90年代末,网景浏览器仅用了几个月的时间,就从互联网之王变成了平庸之辈。这个原因只是因为微软捆绑安装Internet Explorer而已,这看起来似乎很不公平,但大多数行业观察人士认为,未来浏览器将是免费且无处不在的,你很难完全依靠一个浏览器来承载整个公司的业务。

然而,网景无心之中仿佛为未来做了一个天才之举,它决定把浏览器转变成一个开源项目,并因此孵化了Mozilla,由Mozilla独立运作开发浏览器、邮件和聊天工具等等。然而在拥有更多资金和更大影响力的竞争对手面前,终究还是没能扭转乾坤。但是在接下来的几年里,Mozilla 团队转变成了一个不同的组织,这就是非营利性的Mozilla基金会,致力于推广开放网络标准。

不久之后,一群 Mozilla 的开发者创造出了一个新的浏览器Firefox,并将其剥离成一个独立全资子公司,直到今天仍在为 Mozilla基金会提供资金。如果这些与收购网景的美国在线(AOL)保持紧密联系,它们早在几年前就会被互联网风潮的变化所消亡。事实上,即使是 AOL 也放弃了用Netscape,转而使用 Internet Explorer,而且不久之后它就变得无足轻重了。

Mozilla的贡献

火狐是 Mozilla 最著名的产品。早期的 Firefox 在广告屏蔽、数据隐私和开发工具方面是一个先锋,作为一款开源浏览器产品,Firefox一直以来对任何沾了“商业气息”的行动都谨小慎微。Mozilla甚至从未在Firefox中为任何公司做过广告。长期以来除了Google,Mozilla几乎没有任何经济来源,它的绝大部分收入来自搜索引擎合作。早期凭借Firebug吸粉无数,而在chrome有了chromedevtools之后一切就变的不太一样了。

如果这就是 Mozilla 的全部,那么这家公司就是 Chromium 和 WebKit 征服世界的又一个减速带。相反,Mozilla 推进了一些当今最重要的网络技术,以下是他们最好的四个倡议。

1. Rust

当网景公司倒闭时,很少有人意识到它最重要的贡献是留下了一个简单的脚本语言,这种语言就是 JavaScript。

JavaScript是在网景公司统治网络的短暂时期内创建的,但是在网景失败后的二十年里,JavaScript 变得越来越普遍,越来越占主导地位,而火狐留下的最重要的创新可能是高效的类型安全的 Rust 语言。

Rust致力于成为优雅解决高并发和高安全性系统问题的编程语言,Rust是针对多核体系提出的语言,并且吸收一些其他动态语言的重要特性,比如不需要管理内存,比如不会出现Null指针等等。许多认为C++过于宽松和容易出错的开发人员更喜欢 Rust,而且那些认为OOP 语言过于笨重和低效的开发人员也喜欢 Rust。尽管使用率相对较低,自2016年以来,Rust 在 Stack Overflow 的开发者调查中每年都被评为最受欢迎的编程语言。

遗憾的是,对于现在的 Mozilla 来说,贡献 Rust 语言已经不再是优先考虑的事情。在最近一轮的裁员中,他们裁掉了专注于 Rust 的开发人员和服务团队,而正是这群人正在试图建立一个新的基于 Rust 的浏览器引擎。但是RUST不会随着这艘巨轮而沉没,一个独立的RUST基金会的规划已经在进行中。

2. HTML5

我们很难记得,但曾经确实有过一段时间,全世界都陷入了 HTML 和 XHTML 之间的恶战,XHTML 是一种非向后兼容的 HTML 版本,它使用了更严格的 XML 语法重新设计。而在2004年,负责 HTML (W3C)的标准机构正式停止了所有 HTML 的工作。

如果没有 WHATWG(Web Hypertext Application Technology Working Group)网页超文本应用技术工作小组,这个由苹果、 Opera 和 Mozilla 组成的特别小组,故事本来就会结束了,剩下的就是历史就是 WHATWG 赢了,它迫使 W3C 改弦易辙,并在 HTML5的保护伞下推出了一系列新标准,包括免 flash 视频、网络工作者、网络套接字等等。

WHATWG成立的原因是W3C意图放弃HTML,而力图发展XML技术,而在2007年Mozilla基金会、苹果、Opera等公司建议 W3C跟随WHATWG的HTML5,才促使了HTML5成为我们现在的标准。

Mozilla虽然不是这场闹剧的主导者,但是他们在发起这项运动中起到了重要作用,这项运动帮助我们定义了接下来十年的网络技术。

3. Asm.js

Mozilla Firfox是第一个实现针对asm.js优化的浏览器。从技术上讲,asm.js 只是 JavaScript 的一个子集,它可以避免JavaScript引擎某些难以优化的机制和模式(主要是垃圾回收和类型判断),达到JavaScript引擎运行优化的目的。在实际运用中,不大可能手写asm.js规范的代码,写起来异常麻烦并且容易出错,但是 Mozilla 的开发人员证明他们可以编译其他语言到这种性能增强的语言,他叫做Emscripten ,就是这个东西把在C++ Unreal 引擎上构建的实时3D 游戏放在一个网络浏览器里。

Asm.js是近代网络史上最重要的创新跳板: WebAssembly。WebAssembly字节码是一种抹平了不同CPU架构的机器码,WebAssembly字节码不能直接在任何一种CPU架构上运行,但由于非常接近机器码,可以非常快的被翻译为对应架构的机器码。

WebAssembly是 Mozilla 和其他浏览器制造商的一个合作项目,但是如果没有 asm.js 的例子,它就不会如此迅速地诞生。即使在今天,对于一些不支持 WebAssembly 的旧浏览器来说,asm.js 仍然是 WebAssembly 的向下兼容的补充。

4. MDN (Mozilla Developer Network)

MDN 是高质量开发人员文档的巨大资源,你可以把它想象成一个现代网络开发的维基百科,或者是 W3Schools 的一个更好的版本。

如果你曾经在网上搜索过答案,那么你可能曾经遇到过 MDN 这样一个瑰宝。也许你已经使用了其详尽的 CSS 属性参考,或者其组织良好的 HTML DOM 参考,也许你已经对某个特定的新兴 API 进行了深入研究,比如 IndexedDB 或者是 WebRTC。

Image for post

现在 Mozilla 已经彻底干掉了 MDN 团队。虽然他们承诺保持流行网站继续运行,并且可能与其他合作伙伴获得更多的社区支持。但是,如果没有一个积极的组织注入资金和人才,MDN 是否能够保持其高标准就成了一个悬而未决的问题。毕竟,Mozilla 已经有了一大堆被抛弃的早期网络教育项目,比如 Webmaker、 Mozilla Backpack,以及 X-Ray Goggles (一种介绍 HTML 的非常简单的方法,比90%的视频教程都更有效)。如果MDN消失的话,那么对所有人来说都是一个巨大无比的损失。

Mozilla死因何在

虽然 Mozilla 还没有彻底完蛋,但是它显然已经走到了历史的拐点。在 Mozilla 发给员工的解雇信中将责任归咎于新冠病毒,这令所有人都心生怀疑。毕竟,Mozilla 创建Mozilla基金会就是为了帮助 Mozilla 渡过短期冲击,并非从长远角度考虑问题。它的设计初衷是将Mozilla 的软件开发工作与反复无常的的CEO们以及希望投资翻番的硅谷投资者隔离开来。虽然新冠病毒终究会过去,但是想重建一个开发团队和重新获得开发人员的信任并不容易。

2019年9月,Mozilla公布了Mozilla基金会及公司的财务状况。2018年度总收入是4.5亿美元,其中4.3亿美元来自授权收(royalties),主要是在浏览器中嵌入搜索引擎的广告,订阅和广告收入是537.7万美元(2018年),占比不足2%。而在支出部分,最大的支出是软件开发,高达2.8亿美元,其次是品牌和市场费用,高达528万美元。

Mozilla 没有说出但经常在科技媒体上报道的事实是,Mozilla 的收入模式极其脆弱: 浏览器开发竞争对手的广告收入

超过90% 的Mozilla资金来自于与 Google 的一项协议:将google作为Firefox的默认搜索引擎。作为回报,Mozilla 每年获得超过4亿美元的补贴。尽管 Firefox 的市场渗透率浏览器已经暴跌,但是这个协议可能会一直延续到2023年。

Firefox十年的衰退

多年来,谷歌的更新速度变慢了,也许他们继续资助 Firefox 只是因为他们不想让这个苦苦挣扎的浏览器完全消亡,而且他们自己的方式已经引起了反垄断的关注,这与微软曾经投资苹果的原因大致相同,但无论谷歌的意图是什么,Mozilla几乎完全依赖于一个科技巨头的捐赠似乎是一个严重的战略错误。

多年来,Mozilla 一直试图开发商业产品,比如 Firefox OS,一个昂贵的 VPN 网络和一个高级书签服务。这些计划大多失败了,现在,Mozilla将目光投向了一个令人失望的新目标: 通过差异化的用户体验实现核心浏览器的增长。你可以通过多种方式了解这一点,但至少有一种解释是,他们希望通过修改浏览器的用户界面,用新的营销手段重新打包当前的产品从而取得成功。如果是这样的话,那么 Mozilla 令人心碎的衰落故事也是它结束的开始。

如果你希望对Mozilla贡献微薄之力,最好不要用捐款的方式,由于公司的建立方式,这些钱没有一分会用于 Firefox 或者开发工具。如果你有技能和时间,最好的支持就是加入 Mozilla 社区,为他们的代码库做贡献。


喜欢本文的朋友,欢迎关注公众号 程序员小灰,收看更多精彩内容

相关推荐

Python入门学习记录之一:变量_python怎么用变量

写这个,主要是对自己学习python知识的一个总结,也是加深自己的印象。变量(英文:variable),也叫标识符。在python中,变量的命名规则有以下三点:>变量名只能包含字母、数字和下划线...

python变量命名规则——来自小白的总结

python是一个动态编译类编程语言,所以程序在运行前不需要如C语言的先行编译动作,因此也只有在程序运行过程中才能发现程序的问题。基于此,python的变量就有一定的命名规范。python作为当前热门...

Python入门学习教程:第 2 章 变量与数据类型

2.1什么是变量?在编程中,变量就像一个存放数据的容器,它可以存储各种信息,并且这些信息可以被读取和修改。想象一下,变量就如同我们生活中的盒子,你可以把东西放进去,也可以随时拿出来看看,甚至可以换成...

绘制学术论文中的“三线表”具体指导

在科研过程中,大家用到最多的可能就是“三线表”。“三线表”,一般主要由三条横线构成,当然在变量名栏里也可以拆分单元格,出现更多的线。更重要的是,“三线表”也是一种数据记录规范,以“三线表”形式记录的数...

Python基础语法知识--变量和数据类型

学习Python中的变量和数据类型至关重要,因为它们构成了Python编程的基石。以下是帮助您了解Python中的变量和数据类型的分步指南:1.变量:变量在Python中用于存储数据值。它们充...

一文搞懂 Python 中的所有标点符号

反引号`无任何作用。传说Python3中它被移除是因为和单引号字符'太相似。波浪号~(按位取反符号)~被称为取反或补码运算符。它放在我们想要取反的对象前面。如果放在一个整数n...

Python变量类型和运算符_python中变量的含义

别再被小名词坑哭了:Python新手常犯的那些隐蔽错误,我用同事的真实bug拆给你看我记得有一次和同事张姐一起追查一个看似随机崩溃的脚本,最后发现罪魁祸首竟然是她把变量命名成了list。说实话...

从零开始:深入剖析 Spring Boot3 中配置文件的加载顺序

在当今的互联网软件开发领域,SpringBoot无疑是最为热门和广泛应用的框架之一。它以其强大的功能、便捷的开发体验,极大地提升了开发效率,成为众多开发者构建Web应用程序的首选。而在Spr...

Python中下划线 ‘_’ 的用法,你知道几种

Python中下划线()是一个有特殊含义和用途的符号,它可以用来表示以下几种情况:1在解释器中,下划线(_)表示上一个表达式的值,可以用来进行快速计算或测试。例如:>>>2+...

解锁Shell编程:变量_shell $变量

引言:开启Shell编程大门Shell作为用户与Linux内核之间的桥梁,为我们提供了强大的命令行交互方式。它不仅能执行简单的文件操作、进程管理,还能通过编写脚本实现复杂的自动化任务。无论是...

一文学会Python的变量命名规则!_python的变量命名有哪些要求

目录1.变量的命名原则3.内置函数尽量不要做变量4.删除变量和垃圾回收机制5.结语1.变量的命名原则①由英文字母、_(下划线)、或中文开头②变量名称只能由英文字母、数字、下画线或中文字所组成。③英文字...

更可靠的Rust-语法篇-区分语句/表达式,略览if/loop/while/for

src/main.rs://函数定义fnadd(a:i32,b:i32)->i32{a+b//末尾表达式}fnmain(){leta:i3...

C++第五课:变量的命名规则_c++中变量的命名规则

变量的命名不是想怎么起就怎么起的,而是有一套固定的规则的。具体规则:1.名字要合法:变量名必须是由字母、数字或下划线组成。例如:a,a1,a_1。2.开头不能是数字。例如:可以a1,但不能起1a。3....

Rust编程-核心篇-不安全编程_rust安全性

Unsafe的必要性Rust的所有权系统和类型系统为我们提供了强大的安全保障,但在某些情况下,我们需要突破这些限制来:与C代码交互实现底层系统编程优化性能关键代码实现某些编译器无法验证的安全操作Rus...

探秘 Python 内存管理:背后的神奇机制

在编程的世界里,内存管理就如同幕后的精密操控者,确保程序的高效运行。Python作为一种广泛使用的编程语言,其内存管理机制既巧妙又复杂,为开发者们提供了便利的同时,也展现了强大的底层控制能力。一、P...