来源:FOSDEM 2022 分享人:Saúl、Emil 内容整理:胡经川 Jitsi 的创始人 Saúl 和 Emil 通过对话,从三个角度讨论了 Jitsi 的发展以及他们在过去 20 年中花费在开源实时通信上吸取的经验和教训。
目录
- 与开放标准的关系
- 与开源的关系
- 与金钱的关系
Jitsi 是由 JavaScript 构建的开源的跨平台语音、视频会议和即时通信应用程序,它诞生于 2002 年。那时候还没有 youtube,没有 facebook,没有 gmail ,标准分辨率还是 1024x768,所以根本没有像现在的 HD 这种花哨的东西。即时通信的选择也非常有限,那时候流行的还是 MSN。
在这样的一个时代环境中,Jitsi 是怎么诞生的呢以及它为什么会诞生?两位创始人把它诞生的主要原因归功于开发者们觉得这是一段必然会领先于时代的旅程,他们对此充满了激情、兴趣和渴望。
他们分享了在那个时间点看待这个问题的角度,以及为什么要走向这条道路。两位创始人分别从 Jitsi 与开放标准的关系、与开源的关系以及与金钱的关系讨论了 Jitsi 的发展历程。
与开放标准的关系
那时候计算能力与今天相去甚远,一般的 CPU 是无法处理视频这种大体积的数据的,甚至连音频都难以处理。尽管那时候的互联网已经有传输音频的能力了。
那时候我们就已经被开放标准所吸引,我觉得这与有限的 CPU 资源有关系。那时候许多实时通信的问题不得不由专用的产品来解决,音频和视频处理必须在专用芯片中完成,这也意味着专注于做这件事情的人只能做这件事情。
另外,当时没有一些现有的工作作为参考,你无法站在巨人的肩膀上,因为巨人也还没有诞生,这也就意味着你无法把一些现有的库整合到你的项目中,因为它们根本不存在。每个人都必须专注于自己的事情上,所以必须选择好自己的角色,在这样一个前提下,一个很重要的点就是,不同的人能够很好的进行交流和沟通,从而才能将各自的工作进行融合,这样一来,一个统一的沟通标准就十分重要,这也就促进了标准化工作的进程。
虽然标准化工作对于一些巨头公司来说没有那么重要,比如说像思科这种大玩家,但对于一些小玩家来说,这是决定命运的生存性问题,对于 Jitsi 也是如此。采用开放标准是唯一的途径,开放的标准意味着更好的专有。
与开源的关系
另外一个就是我们与开源的关系,开源的情况又有点不同。开源对于个人的加入具有较低的门槛,你只需要加入进来,提交你的代码,从这种高效的协作中可以消除很多的麻烦。但这也会招致一些到的问题,只要你在一些开源项目中做过贡献,人们可能就会觉得你的一切工作都应该开源,开源的工作就是好的,闭源的就是邪恶的。
当时我们决定做开源项目的契机还是我在一家公司做实习生的时候,当时在做一个十分有趣的项目,但是用户很难体验到这个产品,只是一堆研究人员在拥有它,这十分糟糕,从那以后,我越来越拥抱开源,能够在一定程度上改变人们的生活方式的产品才是有意义的。
与金钱的关系
参与 Jitsi 项目的时候,我还是硕士在读,一方面父母还在支持我,然后会有一些奖学金,后面攻读博士的时候,又有了专门的合同资助,所以那时候不太需要考虑钱的问题。但后面随着女儿的出生,这个问题变得越来越复杂了,而且当时只有我一个人在做这个项目,虽然偶尔会有一些捐赠,但也是十分有限的,我越来越意识到,这样是走不长久的,但我的意志十分坚定,因为我觉得这个工作是有意义的,他可以为人们面临的问题提供更好的解决方案。所以我决定组建一个团队,随着第一个工程师的加入,更多的人开始全职加入这个项目,钱也变得越来越重要了。我们最初的资金方式是公共基金,包括一些大学的基金、通信部的资助以及一些申请的赠款。
但这些资金也是十分有限的,它不足以支撑我们一直走下去,所以我们开始寻找一些我们自己的客户。我们最初的商业模式是围绕 Jitsi 项目为客户提供工程服务。更具体地说就是围绕已有的开源的 Jitsi 项目,90% 的功能都已经在这了,然后为客户提供定制化的另外 10% 的调整以及一些专有服务,这是我们最初的商业模式。
金钱的缺点不用多说,它很容易让你对除了金钱之外的东西视而不见。但是通过走这种商业模式的道路,也有一些好处,这在一定程度上改变了我们做事的方式。当我们还在接受公共基金援助的时候,我们可能会在一定程度上迎合他们的需求,然而这些需求大多是出于政治原因,当选者当然希望把这笔钱花在特定的场合中,而且更多的是他们只需要工作朝着那个方向进行就行了,而并不需要这些问题得到具体的解决,他们需要的态度,而不是解决方案,你需要交付的可能不是一个具体的产品,而只是一份报告,这对于我们的发展无疑是十分致命的,这让我们没有给任何人的生活带来便捷,而是让我们的价值从中消失了。我们从中得以转变,所以钱不仅仅是一种工具,它可以腐蚀你,也可以确认你带来的价值。
实时通信迎来了巨大的发展,随着 WebRTC 的出现,人们不再依赖于一个特定的客户端了,而是把一些工作交给浏览器来做。Jitsi 最开始是一个 SIP softphone,是专为语音通话构建的项目,然后我们的关注点才转到视频通话,因为我们觉得这才是一个功能齐全的产品,所以我们重构了我们的代码。然后我们开始考虑 XMPP 协议,这是提供音视频通信的很好的解决方案,但后面我们意识到这是不够的,人们需要的是像在线会议这样的东西,并且他们不能总是依赖于服务器,你可以和处于不同服务器下的不同的人进行各种功能的交谈,所以我们从音频会议开始处理这些差异。
图1: Jitsi 最初的音频会议界面
但后面我们又意识到仅有音频会议是不够的,所以我们把客户端再次拓展为音视频会议系统。为了不让某一个用户承担整个会议的全部负载,我们研发了 Jitsi 视频桥的功能,从而将负载转移到了服务器上。
图2: Jitsi 最初的视频会议界面
图3: Jitsi 视频桥示意图
WebRTC 就是从这个想法转变而来的,它完全摆脱了客户端的存在,核心仍然放在服务器端,但它提供了一个完整的新前端。从技术的角度来看,从头构建一个媒体引擎是十分困难的事情,在浏览器中讨论这件事让它变得更好,每个人都可以从顶端开始构建。除此之外,机器学习和人工智能方面的出现的新技术也是十分出色的,我不打算对这方面的技术做任何预测,但是我们也做好了充分的准备,可以快速构建嵌入这些新技术的解决方案,对此我也十分好奇。
沟通是人类社会进步的关键,致力于人与人之间的沟通,这让我充满了快乐。不管方式是怎么样的,构建客户端也好,提供一个服务器也好,做一个网站也好,能够构建一个与人交流的工具是十分有意义的一件事情,也希望从我们 20 年发展中的三个角度,大家能够有所启发。
附上演讲视频:
http://mpvideo.qpic.cn/0bc3a4aauaaazmaaql2dg5rfab6dbidqacqa.f10002.mp4?dis_k=771c8e2b22a27c72866bdb6f43c2d45e&dis_t=1649676270&vid=wxv_2331471421845372930&format_id=10002&support_redirect=0&mmversion=false