HTML5 需要代言人来推动发展。有很多人都承担了这个角色,而我们在 Mozilla 认为,通过一系列访谈和短视频将其中的一些人介绍给你们是一个好主意。形式很简单——我们向专家发送 10 个问题让他们回答,然后进行一个简短的视频访谈,让他们自我介绍并详细阐述他们的一些答案。
今天,我们重点介绍神秘的 Mr Doob。Ricardo 是一位在谈论令人印象深刻的技术演示时总会出现的关键人物。从 球池 开始,到美丽的 Harmony,再到 The Wilderness Downtown 和 Three Dreams of Black,他不断地被委托完成 Google 在其大型活动中展示的一些项目。
Ricardo 珍视自己的隐私,所以他不想在镜头前接受采访。我们尊重他的意愿,因此只以文字的形式提供他的回答。
1) 欢迎。在我看来,几乎每场关于现代 Web 技术应用的会议或文章都会出现你的作品。你似乎也是突然冒出来的。有什么秘诀吗?你的背景是什么?
我哥哥在 12 岁时向我介绍了 演示场景,我慢慢地学会了创建图形并建模低多边形 3D 场景,以便实时渲染。到目前为止,我在业余时间已经完成了 50 多个演示。不过,直到最近的几个演示我才开始进行代码部分的工作。我的角色一直是设计师、插画师、3D 建模师和/或导演。
在那段时间里,我担任 HTML/PHP 开发人员,后来搬到伦敦后,开始担任设计师/Flash 开发人员。在这个阶段,我慢慢地成为了一名图形程序员,我看到了有机会使用我在所有这些演示中看到的技巧,并最终将自己对特效的想法付诸实践。我开始毫无理由地将实验上传到 mrdoob 网站上。事实证明,这是一种吸引有趣项目的好方法,让我能够继续进行实验。
2) 你完成的大量工作都是实验性的,并且处于浏览器技术的最前沿。然而,Web 上的实时产品不应该让用户感到沮丧,并告诉他们升级浏览器或提供一个损坏的界面。你对渐进增强和针对旧环境的 polyfill 的立场是什么?
好吧,演示场景的情况更糟糕。如果你没有最新的显卡,很有可能无法运行新发布的演示。你必须每隔几个月就升级一次显卡。浏览器世界更简单,你只需要下载一个软件,甚至不需要付费。而且,现在浏览器似乎都采用了自动更新机制,感觉这个问题最终会消失。然而,我总是使用相当低端的电脑(MacMini/MacBook)进行开发,这样我就可以避免演示场景的问题。
至于渐进增强……如果我必须在实验过程中包含某种向后兼容性,那么结果肯定会受到影响。
不仅代码不会那么简单,而且在某些情况下,我甚至不会开始,因为它不会那么有趣。使用我目前的方法,一些用户将看不到任何内容或遇到错误,但有可能其中一些用户会升级到现代浏览器以玩这个实验。这不仅对我有帮助,对其他开发者也有帮助,我想,对整个 Web 也有帮助。
3) 每当出现一个新的演示,并且它只能在特定的浏览器中运行,而没有为其他浏览器提供降级体验时,我就会感觉我们在倡导开放技术方面做得不好。毕竟,没有一家服装店会展示边缘尺寸或缺少纽扣的连衣裙。你同意吗?或者,为一个单一的环境构建一个演示并将其称为“Web 技术展示”是可以接受的吗?
我个人会尽量确保我做的所有项目都能在尽可能多的现代浏览器上运行,并且我会避免只在一个供应商中实现的技术。但是,在某些情况下,一个实验可能无法在浏览器中运行,因为 JavaScript 引擎不够快。
这些演示使问题变得明显,如果浏览器开发者注意到它,他们会努力确保他们的引擎足够快,以便与其他使用该演示的浏览器相匹配。
4) 看看你在演示场景中完成的类似开创性工作,我发现真正成功的团队倾向于为边缘情况任务构建自己的工具。例如,当 Farbrausch 发布他们 96KB 的 3D 射击游戏 .kkrieger 时,他们很快就发布了 werkkzeug 来轻松创建类似的游戏和动画。你袖子里有没有一些很棒的工具?你的开发环境是什么?
还没有工具。但现在 Filesystem API 正在被采用,我开始认真考虑它。我的开发环境对于某些人来说,令人惊讶地(也令人失望地)简单。我使用 Ubuntu 的默认文本编辑器 gedit,并使用 基于字典的代码补全插件。我还启用了显示行尾多余空格的插件——我有点痴迷于干净且有空格的代码。
5) 你最自豪的产品是什么?为什么?谁激励了你?有没有让你惊叹的酷炫 Web 技术演示?
我不知道为什么,但我无法为我所做的任何事情感到自豪。总有一些东西需要改进,这种想法让我在谈论自己的工作时几乎感到羞愧。任何花大量时间创造与众不同或独特事物的人都会激励我。幸运的是,这个名单会很长。此外,开源作为一个整体激励着我,不仅是库,而且是整个 Linux 世界。能够看到其他人提交的代码,这促使你继续贡献自己的力量。至于令人印象深刻的技术演示,这个 路径追踪器 和 miaumiau 小伙子们的最新实验就是很好的例子。我希望我知道如何做这些事情 :)
6) 在 HTML5 标准的技术实现中,你认为哪些部分仍然存在严重缺陷?例如,愤怒的小鸟的 Web 版本使用 Flash 播放音频——这是为什么?
我不会厌倦地说 <canvas> 应该把“更暗”的混合模式带回来……我还没有使用过 <audio>,但我没有听说过关于它的好消息。希望即将推出的音频 API 会解决这个问题。不过,他们首先需要就 API 达成一致。
7) 如今我们在开放技术中看到的许多“惊叹”之前都在 Flash 中实现过。你经常听到“这不是 Flash,即使它看起来像 Flash”。我们只是在反向工程过去封闭技术世界所做的事情,还是存在一些重用和知识共享?
而且,Flash 中实现的很多“惊叹”之前在 MSDOS 和 Amiga 中都实现过(是的,遗憾的是差距这么大)。但我们设法将 Amiga 用户多年来发现的一些技巧带到了这个平台。现在,随着 WebGL 的出现,Web 最终赶上了现代图形管道。现在的问题是网站制作成本会更高。有点像电子游戏世界,他们需要花费数月(或数年)的时间进行制作。
8) 让我们快速谈谈性能。当我用我的 MacBook Air 观看 Three Dreams of Black 时,声音就像我的真空吸尘器,而且电池电量很快耗尽。开放栈中最耗费资源的技术是什么?可以做些什么来解决这个问题?是否会出现自适应技术,例如为强大的机器提供更高多边形版本,为较慢的机器提供低多边形版本?
在视频方面,当涉及到流媒体时,Silverlight 和 Flash 中有一些类似的东西。在开放技术中是否有我们可以期待的工作?这里有一个小细节需要考虑,我以前有一台带有 ATI 显卡的 MacBook Pro,并且只要它开始渲染几个多边形,风扇就会发出噪音。现在我使用的是带有 NVIDIA 显卡的 MacBook,我几乎听不到风扇的声音。GPU 使用率相同,但恰好显卡的设计更安静。如果你碰巧有这样的显卡,性能问题就会大大降低——因为没有恼人的噪音。
但是,我们确实应该优化我们的代码,并且只在需要时渲染所需的内容。一旦 WebGL 在 Android/iOS 设备上可用,我们可能会开始认真考虑为这些设备提供低多边形对象。
9) 资源。假设现在有一个从学校毕业的有天赋的孩子想要成为 Mr.Doob 并带来惊喜。他们可以在哪里学习?他们应该专注于什么?
不确定……我想一个人需要花很多时间摆弄代码、进行实验和创建纯粹为了娱乐的项目。当你处于这样的循环中时,想法会不断涌现,剩下的唯一事情就是花费更多的时间将这些想法变为现实。
现在我们正在转向 HTML5/Javascript,你只需要右键单击并查看源代码。我仍然无法想象这个简单事实的影响。
10) 接下来的计划是什么?有什么很酷的事情可以让我们期待吗?此外,你想要什么?你认为是什么阻碍了我们在开放 Web 技术方面全力以赴?
好吧,现在我仍然试图“解决” three.js。现在感觉像是一项永无止境的任务,但我相信有办法。通过 stats.js、tween.js 和 sequencer.js 等库,我已经证明了自己,库可以达到不再需要更多功能的状态。
最近,我一直在个人发起一场运动,创建开源库和工具,使 Web 开发成为可能,而无需使用专有工具和操作系统。我有很多 .psd 和 .fla 文件,现在我运行 Linux 时无法打开它们。我想避免这种情况再次发生。
关于 Chris Heilmann
HTML5 和开放 Web 的布道者。让我们来修复它!
6 条评论