不成熟的标准化是我们唯一惧怕的
来源:Taobao.com UED 发布时间:2008-08-15 18:55:00
The Only Thing We Have To Fear Is Premature Standardization
原文地址:http://yuiblog.com/blog/2008/08/14/premature-standardization/
The web is made of open standards. This was a significant factor in the web’s displacement of proprietary application platforms. Openness is hugely attractive, so much so that the web dominates over competitors with better technologies. The difficult tradeoff that comes with a standards-based approach is that it is difficult to innovate. As a result, the basic technologies of the browser have been stalled for a decade. What innovation we’ve enjoyed, such as the Ajax revolution, has come by mining all of the latent, accidental potential of the existing standards. That potential has been used up.
互联网是由开放的标准组成的。这对互联网代替私有的应用平台是一个重要的因素。开放是非常有吸引力的,也正因为如此互联网凭借更好的技术控制着其他的竞争对手。然而当基于标准的方法来临时,无疑创新会变得越来越困难。结果是,浏览器最基本的技术停滞发展了一段很长的时间。一些让我们欣喜的创新,如AJAX革命等,是一种在现有标准上的再发掘的潜能。然而这种潜能已经几近枯竭。
If we are to go forward, we must repair the standards. This is something that must be done with great care. A revision to a standard is an act of violence, just like any surgical procedure. It should only be undertaken when the likely benefit far exceeds the cost and the pain and the risk. The web is particularly troublesome because it did not anticipate the management of software updates, which is why IE5, an ancient browser, still has more users than Safari and Opera combined. Changes to the standard can put developers in a very difficult position because the benefits to users of some browsers become the seeds of failure for the users of others. Developers must manage this gulf, and it is not easy. Developers are not well served by new standards that make their jobs even harder.
如果我们想继续往前走更远,我们必须修正标准。这是一项必须非常小心的事情。标准的修订是一种暴力行为,如同外科手术一样。只有在标准带来的好处远远高于它本身的耗费及缺点时,标准才能真正被使用。互联网并没有预先的软件升级管理,这使得它成为了一个非常复杂的环境,就比如IE5,一个非常非常古老的浏览器,其用户份额却比Safari和Opera加起来还要更多。正因为如此,标准的改变将使开发者陷入一个非常困难的环境,很多对于某些浏览器的优点却可能变成其他浏览器潜在的错误。开发者必须管理并减小这些差别,但这却是不容易的。同时,开发者未能更好的适应使用新标准也增加了他们工作的难度。
I think it is instructive to look at two approaches to managing innovation within a standards based system, one that I view as a success, and the other not so much. JavaScript was a promising but half-baked language that was irresponsibly rushed to market and then irresponsibly cast into a standard. That standard is called ECMAScript to avoid a trademark dispute. That standard was last revised in 1999.
我觉得,把基于标准的系统和并不十分标准的系统放在一起比较并产生革新是非常有益的。JavaScript是一个非常有希望的语言,但它的自身也非常不成熟,它被过快的不负责任地扔入了浏览器市场,又被不负责任地扔入了标准的圈子里。为了避免潜在的版权纠纷,这项标准被称为ECMAScript。它最后更新的时间是1999年。
It is clear that the language needs to be updated, but TC39 (the committee that is responsible for drafting a new standard) could not reach consensus on how to do it, so it split into two groups, each producing its own proposal. This was a good thing in that competition is healthy, and I believe that competition inspired improvements to both proposals. This was also a bad thing because no standards organization can adopt two proposal for the same standard. Without consensus, both proposals must fail.
非常显而易见的,这门语言需要更新升级了。但是TC39在如何更新的问题上,却不能达到一致。所以他们分成了两个小组,分别实现各自的目标。这样的健康的竞争是非常有帮助的,我也相信竞争会改善两组各自的目标。 但是,这也是个不好的事情,因为没有一个标准组织会接受一项标准拥有两个不同的提议。如果不能达成一致,这两个提议都将会失败。
On one side there was the proposal called ES4. It was unfortunate that it adopted that name because it strongly suggested that it was destined to be the Fourth Edition of ECMAScript, a fate that was not certain. The project was very open to new ideas and features, adopting a porkbarrel attitude that was almost Congressional in its expansiveness. Lots of good ideas were included without an adequate analysis of the language as a whole system. As a result, many overlapping features were adopted which would have significantly increased the complexity of the language.
其中一项提议被称为ES4。这个名称的使用很不幸运,因为它强烈的暗示了它一定会是ECMAScript的第四版,然而它并不一定会是。该项目对于新思想新特征非常的开放,并采纳了许多看法,尽管这些思想并没有基于这门语言系统进行充分的分析。结果,许多复杂的特征被采用,并最终提升了整个语言的复杂性。
ES4 was so large and so innovative that there were doubts about whether it could be successfully specified and implemented. More worrisome, there was no experience with the language itself. Would the interaction of features cause unintended problems as we saw in ES1 and ES3? The schedule for ES4 required that the standard be put in place and adopted by the browser makers before that question could be answered. This is a problem because once a bug is inserted into a standard, it can be extremely difficult to remove it. All of the features, considered individually, were attractive. But taken as a whole, the language was a mess.
ES4非常的庞大,也引入了许多新思想,这不禁令人们担心它会不会被成功的接受和使用。更令人不安的是,对于语言的本身,并没有任何使用经验。那些极富吸引力的新特性会不会如ES1和ES3一样产生许多潜在的问题?ES4的制定安排要求这项标准必须被浏览器开发者接受并植入浏览器后才能回答刚才的问题。这会是一个很大的问题,当一个小bug错误的加入了标准,到时候想要去除掉它就会非常的困难了。单独考虑ES4所有的新特性,都是非常有吸引力的。但是全部放到一起,语言非常的混乱。
On the other side was a proposal called ES3.1. Its name indicated a less ambitious proposal, being a smaller increment over the current Third Edition. This project was intended to repair as many of the problems with the language as possible while minimizing the pain of disruption. New syntax was considered only when it was already implemented and proven in at least three of the four major browsers. Feature selection tended to favor necessary improvements over desirable improvements.
另一项提议被称为ES3.1。它的名字暗示它相比于现在的ES3只有较少的变革。这个项目的目标是修复语言中存在的诸多错误。新的句法只有在至少三至四个主流浏览器植入并测试过之后才会被考虑加入。他们更多的选择必须的特性,而不是可拥有的特性。
ES3.1 was more minimal in approach. The set of feature interactions was much smaller and much easier to reason about. ES3.1 is likely to complete its specification and will be the candidate for the Fourth Edition.
ES3.1更容易接受。新特性的吸引力会较小,但是也更容易实现。ES3.1也可能完成它的文档,从而成为ES真正第四版的候选。
ES4 had a large head start (by as much as seven years by some estimates), but was unable to meet its deadlines. Ultimately, the project fell apart when some of the key members left.
ES4的制定起步很早(估计至少7年之前),然而我们看不到它到底什么时候能结束。最终,由于核心成员的离去,这项工程被搁浅。
Some of the features that were in ES4 were reasonable, so a new project, called Harmony, is starting which will look at adapting the best of ES4 on top of ES3.1. The success of this project will depend on the ability of TC39 to do a better job of managing the tradeoffs between innovation and stability, and adopting a discipline for managing complexity. Simplicity should be highly valued in a standard. Simplicity cannot be added. Instead, complexity must be removed.
现在,由ES4引入的一些合理的新特性,重新成为了一项新项目,被称为Harmony。这个项目的成功与否取决于TC39权衡创新与稳定二者的能力,以及对复杂度的管理上。在某种程度上,简约应受到足够的重视,而不应被矫饰。所以,一些冗余必须被剔除。
It turns out that standard bodies are not good places to innovate. That’s what laboratories and startups are for. Standards must be drafted by consensus. Standards must be free of controversy. If a feature is too murky to produce a consensus, then it should not be a candidate for standardization. It is for a good reason that “design by committee” is a pejorative. Standards bodies should not be in the business of design. They should stick to careful specification, which is important and difficult work.
现在看来标准的主体并不是一个创新的好地方。这也正是实验室存在的目的。标准必须经过一致的协商,也必须有充分的辩论。如果一个特性很难达成一致,那么它应 该从标准草案中去除。标准的主体不能在有商业目的的情况下设计。它们必须坚持谨慎的设计,这同时是一个相当困难的工作。
I see similar stories in HTML5. The early work of WHATWG in documenting the undocumented behavior of HTML was brilliant. It went off the rails when people started to just make new stuff up. There is way too much controversy in HTML5. I would like to see a complete reset with a stronger set of design rules. Things can be much worse than the way things currently are. Having smart people with good intentions is necessary but not sufficient for making good standards.
我也在HTML5里面看见了很类似的情况。WHATWG的早期对于文档化HTML中没有文档的特性的工作是非常棒的。然而当人们开始只关注创造新东西时,它们开始偏离轨道。在HTML5中存在太多的争议。事情可能会比现在存在的更糟糕。也许,让一些有目的的聪明人制定好的标准是必须却又不够的。


猜你喜欢
- 页面上有些重要内容需要提醒客户,可采用的方法有很多。提醒用户关注某一区域(div),可以给该div加上边框闪烁的效果,达到吸引用户眼球的效果
- 这里为大家推荐一些不错的学习python基础的网站Python是一种计算机程序设计语言。你可能已经听说过很多种流行的编程语言,比如非常难学的
- 阅读上一篇:javascript面向对象编程(三)继承是面向对象语言中的一个重要概念,现在我们来探讨一下继承。在网上搜一下javascrip
- 有时在项目中会遇到通过在页面中采用iframe的方式include其它页面,这时就会考虑不要因出现滚动条而影响页面效果,但include页面
- 意思就是画四条直线,四条直线都不能相交即可。#!/usr/bin/python#coding: UTF-8import turtleimpo
- 我们经常见到很多网站留言系统的显示访客的IP地址都是隐藏了一部分,以达到隐蔽访客真实地理位置的功能。如:111.222.333.*,当然在系
- 1. 页面在手机端不能上下滑动,在PC端浏览器正常滑动说明:在设置了overflow:auto;属性的前提下,H5页面在PC端浏览器里展示可
- 用python做大型工程时,经常会出现import问题。比如,当你import另一个py文件时,这个py不存在于你的运行路径下,便会报错。大
- 这一款是用原生javascript实现的分页插件pagenav,页码显示jquery插件,只需要存在#pageNav,则会在其中显示页码,调
- 在 python2 中,如果想要自定义评价标准的话,可以这么做def cmp(a, b): # 如果逻辑上认为 a < b ,返回 -
- digo工具地址:https://github.com/werbenhu/digo特性使用注释中的注解自动代码生成自动检测循环依赖编译时期依
- 一、go语言内存布局想象一下,你有一个如下的结构体。type MyData struct {
- 先给大家展示下效果图,大家感觉不错,请参考实现代码:实现原理:点击按钮,往需要动画的div中添加或移除拥有动画效果的class。由于微信小程
- Numpy创建矩阵并等间隔抽取数据1、利用Numpy创建向量和二维矩阵1.1 创建向量得到需要强调的是,向量的维度,在python中并不是书
- 前言写过前端Javascript代码的同学肯定不会对console对象感到陌生,在调试的过程中我们经常会用console对象在控制台输出一些
- 分析在Python中,字符串是不可变的。所以无法直接删除字符串之间的特定字符。所以想对字符串中字符进行操作的时候,需要将字符串转变为列表,列
- 首先我们应当了解什么是math库:math库是python提供的内置数学类函数库,math库不支持复数类型,仅支持整数和浮点数运算。math
- 简介背景Pandas 是 Python 的一个工具库,用于数据分析。由 AQR Capital Management 于 2008 年 4
- 多线程适合于多io操作多进程适合于耗cpu(计算)的操作# 多进程编程# 耗cpu的操作,用多进程编程, 对于io操作来说,使用多线程编程i
- 前言和Word、Excel承载数据的能力相比,PPT的应用重点在于表演。比如一场发布会、一场演说、一次产品展示、一次客户沟通&hel