ipad发布会ipad
There have been a number of interesting and thoughtful retrospectives on the 10th anniversary of the iPad’s announcement. Steven Sinofsky used a Twitter thread (gathered into this post) to talk about the Windows team response to the iPad announcement. John Gruber, Jean-Louis Gassée and Ben Thompson also had interesting takes. Those last posts express disappointment, especially with recent attempts to expose a (rather unintuitive) multi-window, multi-tasking user interface on the iPad.
iPad发布10周年之际,有许多有趣而周到的回顾。 史蒂文·辛诺夫斯基(Steven Sinofsky)使用Twitter线程(聚集在本文中)讨论Windows团队对iPad公告的回应。 John Gruber , Jean-LouisGassée和Ben Thompson也有一些有趣的作品。 这些最新文章表达了失望,尤其是最近尝试在iPad上公开(而不是直观)的多窗口,多任务用户界面。
I thought I’d reflect a bit on my experience from the Microsoft Office side. I had been running development in Office for about four years and was working on finishing up Office 2010 and starting planning for the next big release when Apple made the iPad announcement.
我以为我会从Microsoft Office方面反思一下我的经验。 我已经在Office中进行了大约四年的开发工作,并且正在完成Office 2010,并在苹果发布iPad时开始计划下一个重要版本。
My real first response came not at the announcement but a few months later when I walked into the Bellevue Apple store and actually got my hands on a device. More than anything else, the thing that blew me away was the responsiveness of the device. Yes, weight, battery life, overall performance and the quality of the display were all impressive. But the thing that stood out for me was how smooth and responsive all the applications felt.
我真正的第一React不是在发布会上发布,而是几个月后,当我走进Bellevue苹果商店并真正接触到设备时。 最让我震惊的是设备的响应能力。 是的,重量,电池寿命,整体性能和显示器质量都令人印象深刻。 但是对我而言突出的是,所有应用程序感觉到如何流畅和响应。
The emotion I felt was mostly frustration and anger. This will require a bit of an aside to explain where all this emotion was bubbling from.
我感觉到的情绪主要是沮丧和愤怒。 这将需要一点时间来解释所有这些情绪从何而来。
I had been building complex graphical applications since the early eighties — almost 30 years by that point. The challenge in any non-trivial application is staying responsive — providing immediate feedback even as the user edits a large, complex artifact like a long document, complex web page, spreadsheet or CAD model. The approach I had taken in virtually all the applications I had written was one that is familiar to any developer trying to do something complicated in a browser application today. Design a data model that makes most user actions quick to execute. Break any large synchronous computation into small pieces so you do not block the user interface for long periods of time. Figure out how to provide intermediate feedback during that computation so the user knows progress is being made on whatever action they took that launched the computation. For any interaction over the network, use asynchronous designs, since the performance is virtually guaranteed to be highly variable with much higher error rates than is typical for purely local interactions. Blocking on a network request, which inherently has to have a long timeout, is a guaranteed hang.
从八十年代初期开始,我一直在构建复杂的图形应用程序,到那时已经将近30年了。 在任何不平凡的应用程序中,挑战都是保持响应能力-即使用户编辑大型复杂文档(例如长文档,复杂网页,电子表格或CAD模型),也要提供即时反馈。 我几乎在所有已编写的应用程序中采用的方法,是今天尝试在浏览器应用程序中执行复杂操作的所有开发人员所熟悉的。 设计一个数据模型,使大多数用户操作可以快速执行。 将所有大型同步计算分解为小块,这样您就不会长时间阻塞用户界面。 弄清楚如何在该计算过程中提供中间反馈,以便用户知道他们执行该计算所采取的任何措施都在取得进展。 对于网络上的任何交互,请使用异步设计,因为实际上可以保证性能具有高度可变性,并且错误率比纯本地交互的典型错误率高得多。 固有地必须具有较长超时的对网络请求的阻止是保证的挂起。
Windows (really the Win32 application programming interface or API) had gone down a different path. Win32 generally used synchronous, blocking APIs, even for interfaces that interact with the network. There were thousands of such APIs, developed during the explosion of client-server computing over the previous 20 years. Synchronous APIs allow a developer to write simpler sequential code rather than requiring they use asynchronous techniques (with callbacks, state machines, etc.). The approved way to write responsive applications in this environment was to “wrap a thread” around any API that might block on a network interaction. (This actually might involve wrapping a thread around a larger sub-component that calls lots of such APIs rather than a separate thread per-API. And other things block besides just network interactions.) An operating system thread is separate from the special main thread used for user interactions and allows computations to proceed in the background (or in practice, do blocking waits in the background) while the main thread keeps the application responsive.
Windows(实际上是Win32应用程序编程接口或API)走了一条不同的道路。 Win32通常使用同步,阻塞的API,甚至用于与网络交互的接口。 在过去的20年中,随着客户端-服务器计算的迅猛发展,已经开发了数千种此类API。 同步API允许开发人员编写更简单的顺序代码,而不是要求他们使用异步技术(带有回调,状态机等)。 在这种环境下编写响应式应用程序的公认方法是将“线程”包裹在可能阻止网络交互的任何API周围。 (这实际上可能涉及将线程包装在一个较大的子组件上,该子组件调用许多这样的API,而不是每个API单独使用线程。并且除网络交互之外,其他情况也会阻止。)操作系统线程与特殊的主线程是分开的用于用户交互,并允许计算在后台进行(或在实践中,在后台进行阻塞等待),同时主线程保持应用程序响应。
There were a lot of practical problems with this approach. I remember being stunned by the obliviousness of a Windows kernel engineer at an internal workshop when I talked about application hangs and he said “everybody knows you’re not supposed to call a blocking API on the main thread!”
这种方法存在很多实际问题。 我记得当我谈到应用程序挂起时,在内部研讨会上,Windows内核工程师的疏忽使我震惊,他说:“每个人都知道您不应该在主线程上调用阻塞API!”
The first and most obvious problem is that there is nothing in either the structure of an API or its documentation that tells you whether an API blocks! A Windows kernel engineer know the six APIs that he cares about that block. The Office developer is faced with thousands of such APIs.
第一个也是最明显的问题是,API的结构或其文档中没有任何内容可以告诉您API是否阻塞! Windows内核工程师知道他关心的六个API。 Office开发人员面临着数千种此类API。
As new features like network printers or network file systems were added, APIs that would not block in one release became blocking APIs in the next. This allowed new operating system features to be “slipped in” without requiring applications be re-written — but those applications would occasionally start hanging instead.
随着添加了诸如网络打印机或网络文件系统之类的新功能,不会在一个发行版中阻塞的API会在下一个发行版中变为阻塞API。 这允许“滑入”新的操作系统功能,而无需重写应用程序-但是这些应用程序有时会开始挂起。
The Windows driver model, where a single API was layered on top of code provided by lots of third parties (for printers and other devices) meant that an API might block when talking to one kind of printer or other device and not block when talking to another.
Windows驱动程序模型,其中一个API层叠在许多第三方提供的代码之上(用于打印机和其他设备),这意味着API在与一种打印机或其他设备通信时可能会阻塞,而在与某种打印机或其他设备通信时不会阻塞另一个。
These APIs were especially pernicious because they were often designed so they might display UI, therefore requiring that they be called on the user interface thread as well as sometimes block — these APIs were impossible to use without exposing potential (actually certain) hangs.
这些API尤其有害,因为它们经常被设计成可能显示UI,因此要求它们在用户界面线程上被调用,有时甚至被阻止-如果不暴露潜在的(实际上是肯定的)挂起,这些API是不可能使用的。
An API might cache the result of some network call locally to speed up repeated calls. A side-effect was that the performance of the API varied wildly — sometimes local and fast and sometimes interacting with a remote service with lots of variation in latency. This made it hard to reproduce and recognize these problems.
API可能会在本地缓存某些网络调用的结果,以加快重复调用的速度。 副作用是API的性能变化很大-有时是本地的,速度很快,有时是与远程服务进行交互的,而延迟的变化很大。 这使得很难重现和认识这些问题。
The multi-threaded programming necessary to use these techniques effectively has large aspects of “rocket science” to it and there were no general acceptable composable patterns — mostly it was roll your own. So while a single sequential algorithm might be easier to write using this blocking API design, orchestrating a large complex application was much much harder.
有效使用这些技术所必需的多线程编程在很大程度上涉及“火箭科学”,并且没有通用的可接受的可组合模式-多数情况下它是自己开发的。 因此,尽管使用此阻塞API设计可能更容易编写单个顺序算法,但是编排大型复杂应用程序却要困难得多。
Early development of these APIs (and the overall approach) were on hard-wired machines, reliably connected to local departmental servers. As the operating environment became dominated by intermittently connected laptops with flaky wireless connecting to more and more remote services, the practical network environment changed to one where any application designed in a way that assumed network communication was fast and reliable was going to suffer.
这些API(以及整体方法)的早期开发是在硬连线的机器上进行的,并可靠地连接到本地部门服务器。 随着操作环境逐渐被断断续续的笔记本电脑所控制,并且不稳定的无线连接到越来越多的远程服务,实际的网络环境变成了一种以假定网络通信快速可靠的方式设计的应用程序。
On top of these structural challenges, laptops, and especially inexpensive netbooks, had become “unbalanced”. Memory had grown in capacity, processors were continuing to improve and the capacity of magnetic harddrives had expanded dramatically. But IOPS — Input/Output Operations per Second — had trailed significantly behind these other improvements. That meant there was space for all those large programs on disk and space for them in dynamic memory, but getting from disk to memory was painfully slow, especially on boot and resuming from sleep. Even programs that tried to protect themselves from hangs on network interactions would be slow and glitchy while competing with other applications for precious reads or writes to the disk. This on top of problems introduced by invasive anti-virus and anti-malware (as well as actual virus and malware) that plagued the platform and introduced pervasive performance anomalies.
除了这些结构性挑战之外,笔记本电脑,尤其是廉价的上网本,已经变得“不平衡”。 内存容量不断增加,处理器不断改进,磁性硬盘驱动器的容量已大大扩展。 但是IOPS(每秒的输入/输出操作)远远落后于这些其他改进。 这意味着磁盘上的所有大型程序都有空间,而动态内存中则有空间,但是从磁盘到内存的访问非常缓慢,特别是在启动和从睡眠中恢复时。 即使试图保护自己不受网络交互影响的程序在与其他应用程序竞争对磁盘的宝贵读取或写入时,也会很慢且容易出错。 这是由入侵性防病毒和反恶意软件(以及实际的病毒和恶意软件)引起的,这些问题困扰着平台并导致普遍存在的性能异常。
I had been beating the drum about hangs and responsiveness inside Microsoft for around 5 years at that point, including writing a paper with another engineer for one of Bill Gate’s famed “Think Weeks”. Inside Office, we were getting data from the remote crash reporting system (Windows Error Reporting, known internally as “Watson”). Those reports were showing that hangs (where the user got so frustrated they actually killed the program) were a significantly larger source of abnormal program exits than crashes. This was on top of all the other little glitches and temporary hangs that could so impact user experience and satisfaction. We were starting to invest a lot more effort in addressing these hangs, which typically required significant redesign because of the deeper underlying issues I alluded to above. Crashes could often be fixed with a small code change; hangs might require redesign of a large component.
那时,我一直在敲打有关Microsoft内部的死机和响应能力的鼓声,大约5年了,其中包括与另一位工程师为Bill Gate著名的“ Think Weeks”之一写论文。 在Office内部,我们从远程崩溃报告系统(Windows错误报告,内部称为“ Watson”)获取数据。 这些报告表明,挂起(使用户感到沮丧的事实是他们实际上杀死了程序)是导致异常程序退出的主要原因,比崩溃更重要。 这是所有其他可能导致影响用户体验和满意度的小故障和临时挂起事件的基础。 我们开始投入更多的精力来解决这些问题,由于我上面提到的更深层的潜在问题,通常需要进行大量重新设计。 只需更改少量代码即可解决崩溃。 挂起可能需要重新设计大型组件。
I was standing in that Apple store holding a device that seemed to have none of these problems. The iPad used a fast SSD drive for storage so did not suffer from the “unbalanced PC” problems. It was built on top of the iPhone’s iOS operating system. Many of the most interesting operating system innovations in iOS were focused on guaranteeing application responsiveness as well as the good battery life that made it possible to build such a light-weight device that could run for a day on a single charge. We had seen these innovations in applications on the iPhone and I was now seeing this for applications that more directly competed with our Office apps.
我当时站在那家苹果商店,那里的设备似乎没有这些问题。 iPad使用了快速的SSD驱动器进行存储,因此没有遭受“ PC不平衡”问题的困扰。 它建立在iPhone的iOS操作系统之上。 iOS中许多最有趣的操作系统创新都集中在保证应用程序的响应能力以及良好的电池寿命上,这使得构建轻巧的设备(一次充电一天即可运行)成为可能。 我们已经在iPhone上的应用程序中看到了这些创新,现在我看到的是与Office应用程序更直接竞争的应用程序。
According to Apple press, the iWork applications (Keynote, Pages, Numbers) had been “rewritten from the ground up” for the iPad. I thought that dubious, but they certainly felt smoothly responsive in quick testing that I did on the store device. (In fact they had slash and cut these products, introducing file and experience incompatibilities with the Mac versions that they would struggle with over the next few years.)
根据Apple的报道,iWork应用程序(主题演讲,页面,数字)已被iPad重新“重写”。 我以为这很可疑,但是他们肯定感到在我对商店设备进行的快速测试中React流畅。 (实际上,他们削减并削减了这些产品,引入了文件和经验,与他们在未来几年内将要使用的Mac版本不兼容。)
Microsoft had been working on Tablet PC’s for over 10 years at that point. They were generally clunky devices, typically heavier than normal laptops with odd displays that could fold over to hide the keyboard and present a tablet-like form factor with a special pen for input. Most hardware, OS and application work had been on supporting the pen for both UI gestures and ink content creation. They were built on Intel processors like any other PC and had no special innovations for general responsiveness and battery life. Office had done work to support ink content (including targeting a new application, OneNote, for inking scenarios), but had done no extensive architectural work to target this type of device. There was no way to simply iterate to the device I was holding in my hands.
那时,微软已经在平板电脑上工作了10多年。 它们通常是笨拙的设备,通常比带有奇异显示器的普通笔记本电脑重,可以折叠起来以隐藏键盘并呈现类似平板电脑的外形,并带有专用笔进行输入。 大多数硬件,操作系统和应用程序工作都在支持笔进行UI手势和墨水内容创建。 它们与其他PC一样,都是基于Intel处理器构建的,并且没有针对一般响应能力和电池寿命的特殊创新。 Office已经完成了支持墨水内容的工作(包括针对墨水场景的新应用程序OneNote),但是并没有针对这种类型的设备进行大量的架构工作。 无法简单地迭代到我手中拿着的设备。
Was this the future of personal computing?
这是个人计算的未来吗?
Let me frame the challenge facing Windows, since that drove much of the early Office response.
让我描述Windows面临的挑战,因为这推动了Office早期的许多响应。
Windows had remained committed to Intel which had struggled to deliver power-efficient processors for the phone and nascent tablet market. Apple had just shown that the efficient ARM processors used in 100’s of millions of phones could scale up to the needs of a light-weight tablet. Less obviously, Apple was turning the tables on Microsoft in how power and influence drove other aspects of the device hardware business. The high-volume PC market had put Microsoft in a position of power for almost three decades when dealing with makers of screens, memory and other critical graphics and communication chips used in these devices. But Apple had just linked the phone and tablet market which was one to two orders of magnitude larger than the PC market and would give them key leverage in driving innovation in these adjacent supplier markets.
Windows一直致力于英特尔,英特尔一直在努力为电话和新兴的平板电脑市场提供高能效处理器。 苹果公司刚刚证明,在数以百万计的手机中使用的高效ARM处理器可以满足轻型平板电脑的需求。 不太明显的是,苹果公司在力量和影响力如何推动设备硬件业务的其他方面转向微软。 当与这些设备中使用的屏幕,内存以及其他关键图形和通信芯片的制造商打交道时,大批量的PC市场使微软处于将近三十年的地位。 但是苹果公司刚刚将手机和平板电脑市场联系起来,该市场比个人电脑市场大一到两个数量级,这将为它们在推动这些相邻供应商市场的创新中发挥关键作用。
Apple’s strategy (which was controversial both before and shortly after the iPad release) was to move up from the phone rather than down from the Mac in designing a tablet. This was a decision about hardware choices (the iPhone ARM processor vs. the Mac Intel processor) but also the OS and applications. They immediately got access to millions of iPhone apps. This not only meant the immediate body of applications but also meant leveraging and reinforcing the growth and momentum of the iOS API. This was only two years after the opening of the App Store, but it was already clear that Apple was replaying the “API moat” strategy that Microsoft had used so effectively with the Windows Win32 API. A compelling device attracted users. Users attracted developers programming unique applications to the device API, attracting yet more users in a virtuous cycle. It was a strategy Microsoft was very familiar with and understood how powerful and long-lasting it could be. By betting on the iOS API for this new device category, Apple was reinforcing rather than diluting that advantage. Building on the phone’s processor power management advantages and the OS and application changes for performance and responsiveness allowed them to build that light-weight long-running device that Microsoft’s tablet efforts had failed to do.
苹果的策略(在iPad发行前后都存在争议)是在设计平板电脑时从手机上移走而不是从Mac上移下来。 这是有关硬件选择(iPhone ARM处理器与Mac Intel处理器)以及操作系统和应用程序的决定。 他们立即可以访问数百万个iPhone应用程序。 这不仅意味着应用程序的直接主体,还意味着利用和加强iOS API的增长和势头。 App Store开业仅两年后,但很明显,苹果正在重演Microsoft在Windows Win32 API中如此有效使用的“ API护城河”策略。 引人注目的设备吸引了用户。 用户吸引了开发人员为设备API编写独特的应用程序,从而在一个良性循环中吸引了更多的用户。 这是微软非常熟悉并了解其强大而持久的一项策略。 通过押注针对该新设备类别的iOS API,Apple增强了而不是削弱了这一优势。 利用手机处理器电源管理的优势以及操作系统和应用程序对性能和响应能力的更改,他们可以制造出重量轻,可长时间运行的设备,这是微软平板电脑无法做到的。
Perhaps less clear immediately as so much attention was played to the special features of the iOS API was that the Unix OS and the lowest level OS APIs underlying iOS were the same low-level APIs used by MacOS. This meant that much low-level open-source code that was used by third-party developers could move over to the new device platform with few changes. This ease of transfer also applied to large developers (who often program to the lowest level of the OS API) moving their code bases as our Mac Office team would find when looking to build the iPad version of Office.
立刻引起关注的不是iOS API的特殊功能,而是Unix OS和iOS底层的最低级别的OS API与MacOS所使用的相同的低级API。 这意味着第三方开发人员使用的许多低级开放源代码都可以在不做任何更改的情况下转移到新的设备平台上。 这种转移的简便性也适用于大型开发人员(他们经常将程序编程到OS API的最低级别),从而移动他们的代码库,就像我们的Mac Office团队在构建iPad版本的Office时会发现的那样。
On the Windows side, Microsoft’s mobile efforts were based on Windows CE, an independent OS kernel from the Windows PC. Some APIs were shared but in an ad-hoc way. Microsoft was in the midst of rebooting the phone platform with Windows Phone 7 (which wouldn’t release until September 2010) and it had a different OS and API strategy. The cacophony in Microsoft’s OS and API strategy was also reflected in organizational strategy, with Windows Phone in a separate division from the Windows PC business and with a distinct strategy and mission to compete with iPhone.
在Windows方面,Microsoft的移动工作基于Windows CE,这是Windows PC的独立OS内核。 某些API是共享的,但是临时的。 微软正在使用Windows Phone 7(要到2010年9月才发布)重启电话平台,并且采用了不同的OS和API策略。 微软的操作系统和API策略的混乱也反映在组织策略中,Windows Phone与Windows PC业务处于不同的部门,并且具有与iPhone竞争的独特策略和使命。
The App Store (and its lack in Windows) was also proving to play a much larger role in the ecosystem than had been obvious when it was first announced. Initially, it looked to be simply a way to discover, install new applications and update existing ones. By itself, this was a significant improvement over the situation in Windows where there was no central way to discover new applications, applications had ad-hoc and custom installation processes and often would have special updating tools that would run in the background and each interact in unique ways with the user in order to update their applications.
与最初发布时相比,App Store(及其在Windows中的缺失)在生态系统中的作用也被证明是更大的。 最初,它看起来只是发现,安装新应用程序和更新现有应用程序的简单方法。 就其本身而言,这是对Windows情况的重大改进,因为Windows没有找到新应用程序的集中方式,应用程序具有临时安装和自定义安装过程,并且通常具有在后台运行并在其中交互的特殊更新工具。用户独特的方式来更新他们的应用程序。
More importantly, the App Store was proving to be a key point of leverage for Apple in driving and controlling the ecosystem. The App Store approval and update process allowed them to vet applications, especially around security, performance and responsiveness. On a mobile device, one poorly performing application can tank battery life, so this approval process was clearly in the users’ interest. It also greatly increased user trust in the safety of trying new applications (the typical PC application installation process at the time was just as likely to install some malware). Importantly, over time, it also enabled Apple to require that developers move to new APIs and abandon obsolete ones. Any platform has the challenge that as they build up that body of applications that serve as the critical platform moat, it becomes harder and harder to move the platform and the applications forward together in concert and effectively deliver new capabilities and innovations to the user base. The App Store would be a critical asset in that process.
更重要的是,事实证明,App Store是Apple推动和控制生态系统的关键点。 通过App Store的批准和更新过程,他们可以审查应用程序,尤其是在安全性,性能和响应能力方面。 在移动设备上,一个性能不佳的应用程序可能会消耗电池寿命,因此此批准过程显然符合用户的利益。 它还极大地提高了用户对尝试新应用程序的安全性的信任度(当时典型的PC应用程序安装过程很可能安装了某些恶意软件)。 重要的是,随着时间的流逝,它还使Apple能够要求开发人员转移到新的API并放弃过时的API。 任何平台都面临的挑战是,当他们建立起充当关键平台护城河的应用程序主体时,将平台和应用程序一起向前推进并有效地向用户群交付新功能和创新变得越来越难。 在此过程中,App Store将是至关重要的资产。
The strengths of the Windows position were just as critical to its response. 2011 would prove to be a high-water mark in PC sales, with 365M devices sold. Windows 7 was unlocking a wave of corporate deployments that had been blocked by the challenges with Windows Vista and the slow response of device makers to deep changes in the Vista driver model. Internally, a dysfunctional Windows engineering organization had been transformed by Steven Sinofsky and was riding the success of delivering Windows 7.
Windows的优势对其响应同样重要。 事实证明,2011年将是PC销售的高峰,售出365M设备。 Windows 7释放了一系列企业部署的浪潮,这些浪潮被Windows Vista的挑战以及设备制造商对Vista驱动程序模型的深刻变化的缓慢响应所阻止。 在内部,一个功能失调的Windows工程组织已由Steven Sinofsky进行了转型,并成功地交付了Windows 7。
And we had Office. A key part of Microsoft’s internal myth was around the synergistic roles Office and Windows had played in each other’s success. Ballmer’s preferred key metric of Office business success was typically measured as “PC attach” — what percentage of those hundreds of millions of PCs were sold with a copy of Office on it?
我们有办公室。 微软内部神话的一个关键部分是围绕Office和Windows在彼此的成功中所起的协同作用。 鲍尔默(Ballmer)首选的Office业务成功关键指标通常用“ PC附件”来衡量-在亿万台PC中,有多少销售Office副本的百分比是多少?
When Windows was 90–95% of the “personal computing device” market (1995 through 2008 or so), most of the discordance between Windows and Office was about whether to support older versions of Windows or have new versions of Office require the latest Windows. These arguments would generate all kinds of internal drama, but ultimately had little consequence. But as these powerful phones and tablets came to market, the tension between the Windows business model and a distinct Office business model became more explicit. It’s also worth a reminder that when your business model is working really well, it becomes like water to a fish — you’re living in it but it is oddly almost transparent. When you have to fight and scratch and focus on your business model, it becomes much better understood by the overall organization. We had been fish for over a decade.
当Windows占据“个人计算设备”市场的90-95%时(1995年至2008年左右),Windows与Office之间的主要矛盾在于是否支持较旧版本的Windows或具有新版本的Office要求最新的Windows 。 这些争论会引起各种各样的内部戏剧,但最终没有什么结果。 但是,随着这些功能强大的手机和平板电脑进入市场,Windows业务模型与独特的Office业务模型之间的张力变得更加明显。 还值得提醒的是,当您的业务模型运行良好时,它就像鱼到水一样—您生活在其中,但是奇怪的是几乎是透明的。 当您需要为自己的业务模式而奋斗和抓挠时,整个组织会更好地理解它。 我们做鱼已有十多年了。
Getting back to the tablet market, how much would it be additive or distinct from the PC market? How much would it be disruptive? How should Office take advantage of this new class of device? Could Office be a competitive differentiator for a Windows tablet? How should we think about the value to Windows of limiting Office to a Windows tablet vs. the cost to the Office business?
回到平板电脑市场,它将与PC市场相加或相差多少? 有多少破坏性? Office应该如何利用这种新型设备? Office能否成为Windows平板电脑的竞争优势? 我们应该如何考虑将Office限制为Windows平板电脑对Windows的价值与Office业务的成本?
The Windows team made a number of hugely ambitious bets as they launched into Windows 8 development. They would deliver a new version of Windows for ARM tablets, targeting a device Microsoft would design and manufacture itself. They would also build an Intel-based tablet. These would be explicitly targeted as productivity devices, with integrated cover/keyboards. They would design a new API, WinRT (Windows Runtime) that would support building a new class of managed, secure, responsive applications. These would be delivered through a new Windows Store. They would bet on touch devices, radically redesigning the Windows shell and much Windows UI for touch.
Windows团队在进行Windows 8开发时做出了许多雄心勃勃的赌注。 他们将针对ARM平板电脑提供Windows的新版本,目标是Microsoft自行设计和制造的设备。 他们还将构建基于Intel的平板电脑。 这些将明确目标为具有集成式盖板/键盘的生产力设备。 他们将设计一个新的API,即WinRT(Windows Runtime),它将支持构建一类新的托管,安全,响应式应用程序。 这些将通过新的Windows应用商店提供。 他们将赌注放在触摸设备上,从根本上重新设计Windows Shell和许多Windows UI进行触摸。
Explicit in this was a decision to address the tablet market by moving down from the PC rather than up from the phone. In some sense, this was an easy decision because although Microsoft had been in the mobile phone business for a decade and had a significant share of the feature phone market, we were scrambling to deliver our first real smartphone (Windows Phone 7 would not ship till September 2010) and were seeing iOS and Android building a rapidly accelerating installed base in smartphones.
明确决定通过从PC下移而不是从电话上移来占领平板电脑市场的决定。 从某种意义上说,这是一个容易做出的决定,因为尽管微软从事移动电话业务已有十年之久,并且在功能电话市场中占有很大份额,但我们仍在努力交付我们的第一款真正的智能手机(Windows Phone 7直到2010年9月),并且看到iOS和Android在智能手机上建立了快速加速的安装基础。
There were a number of direct consequences for Office. We would build an ARM version. We would start work on new WinRT versions of Office. Office would partner actively with Windows in ensuring the new API met our demanding needs. We would start early work on iOS versions, but we would not set a clear delivery target or make a final decision on when to ship them. We would run the experiment of what impact Office exclusivity could have on the tablet market.
对Office有许多直接后果。 我们将构建一个ARM版本。 我们将开始开发Office的新WinRT版本。 Office将与Windows积极合作,以确保新的API满足我们的苛刻需求。 我们将在iOS版本上开始早期工作,但我们不会设定明确的交付目标或就何时发货进行最终决定。 我们将对Office独占性可能对平板电脑市场产生的影响进行实验。
There was some early waffling about how to deliver on ARM (“just port” an earlier version? use a version of our web apps in some fashion?) but ultimately we settled on building these as simply a separate build target off the main branch of our new Intel development. This was a pretty easy decision in reality. The other options were trying to reduce impact on Office, but all guaranteed throwaway or off-strategy work that inevitably would have grown over time. In practice, virtually all the interfaces we needed were available in Windows ARM version since this was a complete version of Windows. Almost all the actual code changes were in support of performance and battery work that were just as valuable on Intel devices as they were for ARM. The changes for touch also applied equally well for all versions. It made no sense to strive for a false economy with a separate branch of development.
早期有一些关于如何在ARM上交付的问题(“只是移植”一个较早的版本?以某种方式使用我们的Web应用程序的版本?),但最终,我们决定将它们构建为一个简单的独立构建目标,脱离ARM主分支。我们新的英特尔开发。 实际上,这是一个非常容易的决定。 其他选择是试图减少对Office的影响,但是所有保证的随手可得或脱离战略的工作不可避免地会随着时间而增长。 实际上,由于我们是Windows的完整版本,因此实际上所需的所有接口都在Windows ARM版本中可用。 几乎所有实际的代码更改都是为了支持性能和电池工作,这在英特尔设备上与对ARM一样重要。 触摸的更改也同样适用于所有版本。 试图通过一个单独的发展分支来追求虚假的经济是没有道理的。
Perhaps most importantly, we were seeing the burst of new devices and OS platforms arriving. I knew our only long-term strategy for managing this complexity had to be to simplify our engineering processes and unify where ever possible. I was trying to avoid any off-strategy work that wasn’t clearly contributing to a larger goal and which would introduce complexity and impossible trade-offs at the small team level.
也许最重要的是,我们看到了新设备和OS平台的到来。 我知道,管理这种复杂性的唯一长期策略是简化我们的工程流程并尽可能统一。 我试图避免任何无法明显促进更大目标的非战略性工作,这些工作会给小型团队带来复杂性和不可能的取舍。
As we got deeper into development, the discordance grew. The phone market was exploding, with Android and iOS both gaining large share. We were just dipping our toes into supporting these platforms, with ports of our Office Mobile applications. Office Mobile had originally been built for our Windows Mobile product (with small screens and physical keyboards) and were completely different code bases from the desktop apps with significant feature incompatibility. That might have been acceptable for feature phones where use was limited but was significantly off strategy in the context of platforms that were expanding in capability for productivity work. In addition, at least in the back of our minds (and in front of our eyes in various envisioning videos) was whether a single powerful device that you could carry around and wirelessly connect to larger screens and keyboards might be the future of productivity devices. In that scenario you would want to make sure you were positioned with the ability to deliver your most complete offering on these devices.
随着我们对开发的深入了解,分歧越来越大。 手机市场呈爆炸式增长,Android和iOS都获得了很大份额。 我们只是想通过Office Mobile应用程序的端口来支持这些平台。 Office Mobile最初是为我们的Windows Mobile产品(带有小屏幕和物理键盘)构建的,并且与桌面应用程序的代码库完全不同,具有明显的功能不兼容。 对于功能受限的功能手机来说,这可能是可以接受的,但是对于那些正在扩大生产力工作能力的平台而言,这显然是不可行的。 此外,至少在我们的脑海中(在各种预想的视频中,在我们的眼前)是,您可以随身携带的一个功能强大的设备并无线连接到较大的屏幕和键盘,这是否可能成为生产力设备的未来。 在这种情况下,您需要确保自己具有在这些设备上交付最完整产品的能力。
At the same time we were barely investing in these exploding platforms, we were spending a tremendous amount of effort on porting to the new WinRT APIs. Windows had completely bought into all the arguments about asynchrony (I’ll take responsibility there), but the implications were pervasive and were forcing significant internal design changes in the applications. The sandboxing and process lifetime changes (necessary to move to a model where it was safe to install and run a new application from the store) were also pervasive and had rippling consequences for all the code Office used from other parts of the company. I would reread Arthur C. Clarke’s short story, Superiority, at regular intervals during this period and wonder whether we were making a classic mistake.
同时,我们几乎没有在这些爆炸性的平台上投资,我们在移植到新的WinRT API上花费了大量的精力。 Windows已经完全接受了有关异步的所有论点(我将在那里负责),但是其含义无处不在,并迫使应用程序进行重大的内部设计更改。 沙箱和流程生命周期的更改(必须迁移到可以安全地从商店安装和运行新应用程序的模型中来)也很普遍,并且对Office其他公司使用的所有代码产生了严重影响。 在此期间,我会定期重读亚瑟·克拉克(Arthur C. Clarke)的短篇小说《优越》 ,想知道我们是否犯了经典错误。
Windows leadership was not tremendously helpful in thinking through the strategy here despite the fact that they were friends and close colleagues. They didn’t want us to “just port” the applications — “think different about what this new platform makes possible”! At the same time, I was struggling with the question — “is this really the new Windows API? Where are the devices where this API will be the only effective way to program to it?” For other devices and platforms there was a direct relationship between the device and the APIs you needed to use to run on that device (let’s leave browser-based apps out of the discussion for now). These new Windows devices would still run the old Win32 APIs as well as the new WinRT APIs. Windows really wanted applications to move over to these new APIs or Windows, as an ecosystem, would not see the benefits necessary to deliver the power, responsiveness and security improvements to compete in the tablet space. But they wanted to also bring the Win32 APIs along to benefit from that huge installed base of applications.
尽管Windows领导者是朋友和亲密的同事,但他们在思考此策略时并没有太大帮助。 他们不希望我们“仅移植”应用程序-“对这个新平台可以做什么有所不同”! 同时,我还在为这个问题而苦苦挣扎-“这真的是新的Windows API吗? 该API唯一有效的编程方法在哪里?” 对于其他设备和平台,该设备与在该设备上运行所需的API之间存在直接关系(暂时将基于浏览器的应用程序排除在讨论之外)。 这些新的Windows设备仍将运行旧的Win32 API和新的WinRT API。 Windows确实希望应用程序迁移到这些新的API或Windows,因为生态系统不会看到为在平板电脑领域竞争而提供的功能,响应能力和安全性改进所必需的好处。 但是他们也希望带上Win32 API,以从庞大的已安装应用程序中受益。
Over the past twenty-five years, Office had had a love-hate relationship with other parts of the company bearing new APIs. There was the Office-Windows origin story where our internal teams had bet early on Windows and rode a wave to success there as we beat out Lotus and WordPerfect. But the Windows API had been the only way to deliver graphical applications on those machines. We had seen that committing to where the OS was putting their investment was important in the long-term, but we had also seen a bunch of fits and starts and dead-ends where buying into Windows’ story of their direction would have been a colossal mistake. The whole managed code diversion was the best example of that but there were many others (my first manager at Microsoft, Chris Peters, had told me, probably partly in jest, that Office’s secret advantage wasn’t that it got early insight into what Windows was going to do but that our knowledge of the people involved allowed us to predict whether they were actually going to be successful or were overselling and we should avoid using what they were building).
在过去的25年中,Office与该公司其他拥有新API的部门之间产生了讨厌的恋爱关系。 有一个Office-Windows起源的故事,我们的内部团队很早就押注Windows,并在击败Lotus和WordPerfect的过程中大获成功。 但是Windows API是在这些计算机上交付图形应用程序的唯一方法。 我们已经看到,从长远来看,致力于操作系统投入的资金很重要,但是我们也看到了很多合适的方法,无论是开始还是死胡同,购买Windows有关其发展方向的故事都将是巨大的错误。 整个托管代码转移是最好的例子,但还有很多其他例子(我在微软的第一任经理Chris Peters告诉我,也许是在某种程度上开玩笑地说,Office的秘密优势不是,它可以早日洞悉Windows是什么将会这样做,但是我们对参与人员的了解使我们能够预测他们实际上将是成功的还是超额销售的,我们应该避免使用他们正在建造的东西。
Windows got stuck in the middle. They wanted the benefits of that market of 100’s of millions of PCs to help them push into this new world (attracting developers who could attract new users) but that meant they ended up building a device that worked much more like a lightweight laptop. In fact, the laptop market has proved to be a much more resilient use case for productivity work than was feared when the tablet first appeared. And that laptop-like device could be programmed using the old Win32 APIs. So why do all the work to learn and use the new APIs? And if you really were going to target an application for a new tablet use case, why not target the market-leading device?
Windows卡在中间。 他们希望从拥有数亿个PC的市场中受益,以帮助他们进入这个新世界(吸引可能吸引新用户的开发人员),但这意味着他们最终制造出了一种功能更类似于轻便笔记本电脑的设备。 实际上,事实证明,与平板电脑首次面世时相比,笔记本电脑市场是生产力工作更具弹性的用例。 而且,可以使用旧的Win32 API对类似于笔记本电脑的设备进行编程。 那么,为什么要花所有的精力来学习和使用新的API? 而且,如果您真的要针对新的平板电脑用例定位应用程序,为什么不定位市场领先的设备呢?
One of the biggest benefits for Office ended up being that the radical changes in API motivated a much more disciplined and rigorous approach to cross-platform (the largest divergence in API design across the platforms we were seeing was between Win32 and WinRT). In fact our Mac Office team working on the iPad version found that the commonality in the lowest levels of the API allowed them to bring much code directly over.
Office的最大好处之一是,API的根本改变促使跨平台的规范化和严格化得多(我们所看到的跨平台的API设计最大的差异在于Win32和WinRT之间)。 实际上,我们的Mac Office团队在iPad版本上工作时发现,API最低级别的通用性使他们可以直接携带很多代码。
As we were struggling with the goals here and a viable Windows strategy, our long-term opportunity in the productivity market provided a very different perspective. The movement to services looked like an historic inflection point in the market. Google was attempting to ride this inflection point to dethrone Office from its position as the leader in productivity tools. From our perspective, we had a unique opportunity to bring together our server assets (Exchange, SharePoint, Lync/Skype/Teams) with our rich client applications into a compelling service productivity offering with a long-term sustainable and defensible position. In this world, the rich clients project the service on to the devices customers own. Limiting ourselves to Windows devices created doubt in customers minds about whether we were the right productivity service to commit to and project on to all their devices.
当我们在为实现这些目标和可行的Windows策略而苦苦挣扎时,我们在生产力市场中的长期机会提供了截然不同的观点。 向服务的转移似乎是市场上一个历史性的拐点。 Google试图利用这一转折点,将Office取代其作为生产力工具领导者的地位。 从我们的角度来看,我们有独特的机会将我们的服务器资产(Exchange,SharePoint,Lync / Skype / Teams)与我们的富客户端应用程序整合到一个具有长期可持续性和防御性地位的引人注目的服务生产力产品中。 在这个世界上,富客户将服务投影到客户拥有的设备上。 将自己限制在Windows设备上会在客户心中产生疑问,即我们是否是对所有设备进行承诺和开发的正确生产力服务。
Trying to defend Windows’ collapsing position was directly putting the more robust Office opportunity at risk. This perspective is what ultimately unblocked the release of a version of Office for iPad, but it was after the release of Windows 8 and the Surface tablets demonstrated that Office exclusivity would not prove decisive. We had taken such a rigorous approach with cross-platform in the WinRT work, that we were also able to release an Android version in less than a year once we made the decision to do so.
试图捍卫Windows的崩溃地位,直接会使更强大的Office机会面临风险。 这种观点最终使发布Office for iPad版本不受阻碍,但是正是在Windows 8和Surface平板电脑发布之后,Office的独占性并没有被证明是决定性的。 我们在WinRT工作中采用了跨平台如此严格的方法,因此一旦决定,我们也可以在不到一年的时间内发布Android版本。
I want to return to those iPad retrospective posts by other writers that I linked to above. Except for Sinofsky’s post, which was mostly a retrospective on the immediate context and response to the iPad announcement, all the articles express disappointment in what the iPad has *not* become, especially ridiculing the complexity of Apple’s efforts at a multi-window, multi-tasking interface. Thompson focuses on the lack of support in Apple’s store policies for business models that could support the kind of on-going R&D that more complex productivity applications typically require and how this has prevented innovation in tablet-specific productivity applications.
我想回到上面我链接到的其他作家的iPad回顾性帖子。 除了Sinofsky的帖子(主要是回顾近期情况和对iPad公告的回应)外,所有文章都对iPad没有变成*感到失望,尤其是嘲笑Apple在多窗口,多窗口环境下所做工作的复杂性任务界面。 汤普森(Thompson)着眼于苹果商店政策中缺乏对商业模型的支持,这些商业模型可能支持更复杂的生产力应用程序通常需要的那种持续进行的研发,以及这如何阻止了针对平板电脑的生产力应用程序的创新。
I come from a different perspective. I lived through the period from 2000 on when Windows continued to scramble to somehow define a new use model for the PC by more and more complex APIs and application building blocks and language environments. In fact, all the major use cases for the PC were all supported by 2000. Every single thing about the PC could continue to be improved — weight, battery life, connectivity, processor speed, memory and storage capacity, screen quality (as well as security, reliability, performance, etc.) But the major use cases were defined by a large screen, a keyboard, a precision pointing device and a high-speed Internet connection. “Sufficiency” was anathema to the internal thinking, but such a view would have put focus much more on channeling continuing hardware improvements than thrashing on software strategies.
我来自不同的角度。 我经历了从2000年开始的那个时期,那时Windows继续争夺通过越来越复杂的API和应用程序构建块以及语言环境为PC定义新的使用模型的机会。 实际上,到2000年,所有PC的所有主要用例都得到支持。有关PC的每件事都可以继续得到改进-重量,电池寿命,连接性,处理器速度,内存和存储容量,屏幕质量(以及安全性,可靠性,性能等),但是主要用例是由大屏幕,键盘,精密定点设备和高速Internet连接定义的。 “自给自足”是内部思想的反感,但这种观点本来应该更多地关注于引导持续的硬件改进,而不是着眼于软件策略。
The iPad reached a level of sufficiency faster than any other computing device category. That first one was great and subsequent improvements in screen, processor, memory and camera have been important as well as obvious (not ncecessarilyteasy, but obvious). It seems the worst thing they could do (which you could argue the thrashing on multi-window interface is an example of) is to not accept that the device is great at what it does and accept that.
iPad达到充裕程度的速度比任何其他计算设备类别都要快。 最初的功能很棒,随后在屏幕,处理器,内存和摄像头方面的改进也很重要而且很明显(不一定很容易,但很明显)。 他们可能要做的最坏的事情(您可能会说在多窗口界面上的th动是一个例子)是不接受设备擅长于其工作并接受它。
ipad发布会ipad