我与 IT 这三十年:2007,桌面开始失去中心
上一篇写 2006 年,我说服务器开始变得不一样。S3、EC2、Hadoop、jQuery、Twitter、Java 开源,这些东西都在把软件从“装在某台机器上”推向“运行在一整套基础设施里”。到了 2007 年,另一个方向也开始松动:桌面不再是计算世界的唯一中心。1 月 9 日,乔布斯在 Macworld 上发布 iPhone。6 月 29 日,第一代 iPhone 正式开卖。今天再看那场发布会,很多细节已经被反复讲过:多点触控、全屏浏览器、iPod + 电话 + 互联网通信设备,乔布斯说今天要发布三个产品,最后告诉大家其实是一个。可是如果把它放回 2007 年的程序员现场,它真正刺痛人的地方不只是“手机更好看了”,而是它改变了软件运行的重心。在很长时间里,软件的主战场是桌面。Windows 桌面、Linux 桌面、浏览器、Delphi、MFC、GTK、Qt、企业客户端,都是围绕“用户坐在电脑前”展开的。服务器当然重要,但很多业务软件的用户界面仍然假定用户面对的是一台电脑、一块屏幕、一只鼠标、一个键盘。iPhone 出现后,这个假定开始被动摇。那一年我并没有立刻转去做移动开发。我仍在 Linux 公司体系里,做的是偏底层、偏服务器、偏管理软件的活。可也正是因为这样,2007 年在我的记忆里有两条线并行:一条是手机把计算入口往口袋里拉;另一条是我继续在 Linux 服务器和桌面管理工具之间打转。手机不是小电脑,是新的入口早期智能手机当然不是从 iPhone 才开始。Palm、BlackBerry、Symbian、Windows Mobile 都已经存在。很多技术人甚至会觉得,iPhone 一开始不开放原生应用,功能也不够“专业”。但它真正改变的不是参数表,而是人和软件的关系。手机不再只是电话加一些功能。它开始成为随身的计算入口。桌面时代的软件,用户通常是“坐下来使用”。移动时代的软件,用户是“随时拿出来用”。这两个动作差别很大。坐下来意味着时间较长、上下文较稳定、输入设备完整;拿出来意味着碎片化、位置相关、网络不稳定、注意力随时被打断。软件如果要适应这种入口,就不能只把桌面界面缩小。它需要新的交互、新的状态管理、新的同步方式、新的网络容错、新的通知机制,也需要重新理解用户行为。2007 年当然还没有今天这样成熟的 App 生态。App Store 是 2008 年才出现的。可第一代 iPhone 已经把问题摆在那里:如果用户未来更多时间不在桌面前,桌面软件的中心地位还能维持多久?对我这样还在 Linux 桌面和服务器世界里工作的人来说,这个变化有点远,又有点近。远的是,我们日常仍然在写 C++、GTK、系统服务和管理工具;近的是,所有人都能感到,计算设备的重心开始移动。And