关于降价的思考

2022-02-20 23:06:52

降价是我们许多人的第二天性。回顾过去,我记得在2004年John Gruber与Aaron Swartz合作开发了第一个基于Perl的解析器后不久,我就开始输入Markdown。

Markdown的语法有一个目的:用作网络写作的格式。-约翰·格鲁伯

那差不多是20年前的事了-哎呀!它最初是一种更适合于编写和阅读HTML的语法,现在已经成为程序员和精通技术的人编写和存储技术文章的宠儿。

Markdown是开发者和文本修补者文化的象征。但自推出以来,数字内容的世界也发生了变化。虽然降价在某些方面还不错,但我认为它不应该再成为内容的首选。

当然,这种立场受到为结构化内容平台工作的影响。神志清醒。在io方面,我们大部分时间都在思考内容作为数据是如何释放出很多价值的,我们也花了很多时间深入思考编辑体验,以及如何节省人们的时间,让处理数字内容变得愉快。所以,游戏中有一些肤浅之处,但我希望我能够描述,尽管我反对将降价作为内容的主要形式,但我仍然对其重要性、应用和遗产有着深刻的理解。

在我目前的工作之前,我曾在一家机构担任技术顾问,在那里,我们必须通过将客户内容嵌入演示文稿和复杂数据模型(是的,甚至是开源模型)来对抗那些将客户内容锁定的CMSE。我观察到,人们在与降价语法作斗争,在编辑和内容创作者的工作中缺乏动力。我们花了数小时(和客户的钱)来构建从未使用过的自定义标记呈现器,因为人们没有时间或动机使用这种语法。即使是我,在积极性很高的时候,也已经放弃了对开源文档的贡献,因为基于组件的降价实现引入了太多的摩擦。

但我也看到了硬币的另一面。Markdown提供了一个令人印象深刻的生态系统,从开发人员的角度来看,纯文本文件非常简单,对于习惯于阅读代码的人来说,语法也很容易解析。有一次,我花了好几天时间制定了一个令人印象深刻的多重降价计划——>;乳胶->;实时PDF预览管道在崇高的文本为我的学术写作。而且自述也很有意义。md文件可以在代码编辑器中打开和编辑,并在GitHub上很好地呈现。毫无疑问,在某些用例中,降价为开发人员带来了便利。

这也是为什么我想通过回顾最初引入降价的原因,以及通过浏览一些主要的网络内容发展,来构建我的建议,以对抗降价。对我们中的许多人来说,我怀疑降价是一种我们认为理所当然的“存在的东西”但所有技术都有历史,都是人类互动的产物。当你,读者,为他人开发技术时,记住这一点很重要。

Markdown的设计目的是让网络作者在网络出版需要编写HTML的时代更容易处理文章。因此,目的是简化与HTML中文本格式的接口。这不是地球上第一个简化的语法,但却是多年来最受欢迎的语法。如今,标记的使用已经远远超出了它的设计意图,即更简单地读写HTML,成为在许多不同上下文中标记纯文本的方法。当然,技术和想法的发展可以超越它们的意图,但今天使用降价的紧张关系可以追溯到这一起源及其设计中的限制。

对于那些不熟悉语法的人,请阅读以下HTML内容:

<;p>;这个<;a href=”https://daringfireball.net/projects/markdown/syntax#philosophy“>;标记语法<;/a>;设计为<;em>;易于阅读<;/em>;和<;em>;易于书写<;/em>;<;/p>;

这就像一条自然法则,技术采用伴随着发展和增加功能的压力。Markdown越来越受欢迎,这意味着人们希望根据自己的用例来调整它。他们想要更多的功能,比如支持脚注和表格。最初的实现带有一种固执己见的立场,这在当时对于设计意图是合理的:

对于Markdown语法未涵盖的任何标记,只需使用HTML本身。不需要在它前面加上前缀或分隔符来表示您正在从Markdown切换到HTML;你只需要使用标签。-约翰·格鲁伯

换句话说,如果你想要一张桌子,那么使用<;表></表>;。您会发现,对于最初的实现,情况仍然如此。Markdown的精神继承者之一MDX采用了同样的原则,但将其扩展到了JSX,一种基于JS的模板语言。

看起来Markdown对很多人的吸引力与其说是它与HTML的结合,不如说是它对明文的人体工程学和简单的格式语法的吸引力。一些内容创作者希望在网络上的简单文章之外的其他用例中使用降价。多标记等实现为希望使用纯文本文件但需要更多功能的学术作者提供了启示。很快,你就会有一系列接受标记语法的应用程序,而不必将其转换为HTML,甚至不必使用标记语法作为存储格式。

在很多应用程序中,你会发现编辑器为你提供了有限的格式选项,其中一些编辑器更受原始语法的启发。事实上,我从这篇文章的草稿中得到的反馈之一是,到目前为止,“降价”应该是小写的,因为它已经变得如此普遍,并且使其与最初的实现不同。因为我们认为的降价也变得非常多样化。

像冰淇淋一样,降价有很多种口味,有些口味比其他口味更受欢迎。当人们开始使用最初的实现并为其添加功能时,发生了两件事:

作为一名作家,你能做什么,不能做什么,这变得更加不可预测。

软件开发人员必须决定对他们的软件采用什么实现。最初的实现还包含一些不一致的地方,这给希望以编程方式使用它的人增加了摩擦。

这就开始了关于将降价形式化为规范的讨论。有趣的是,格鲁伯拒绝了这一点,而且现在仍然这样做,因为他认识到人们想为不同的目的使用降价,“没有一种语法能让所有人都高兴。”考虑到Markdown被转换为HTML,这是一个有趣的立场,HTML是一个不断发展以适应不同需求的规范。

尽管Markdown的原始实现包含在“类似BSD”的许可证中,但它也表示“未经事先书面许可,Markdown的名称及其贡献者的名称均不得用于认可或推广从本软件衍生的产品。”我们可以放心地假设,大多数将“降价”作为营销材料一部分的产品尚未获得该书面许可。

将降价引入共享规范的最成功尝试是今天所说的CommonMark。它由杰夫·阿特伍德(Jeff Atwood,以联合创立Stack Overflow and Discussion而闻名)和约翰·麦克法兰(John McFarlane,伯克利哲学教授,巴别马克和潘多克的幕后黑手)领导。他们最初将其作为“标准降价”发布,但在收到格鲁伯的批评后,将其改为“CommonMark”。Markdown的立场是一致的,它的目的是作为一种简单的创作语法,翻译成HTML:

@这就是CommonMark的缺陷所在。他们想让程序员的工作更轻松,这是他们的首要目标。他们没有抓住重点。

-约翰·格鲁伯(@Gruber)2014年9月8日

我认为这也标志着降价进入了公共领域。尽管CommonMark没有被标记为“降价”,但(根据许可证),本规范被认可并称为“降价”。今天,您会发现CommonMark是Discussion、GitHub、GitLab、Reddit、Qt、Stack Overflow和Swift等软件的底层实现。像unified这样的项目。js通过将语法转换为抽象语法树来架起语法桥梁,还依赖CommonMark提供标记支持。

CommonMark在如何实现降价方面带来了很多统一,并且在很多方面使程序员更容易在软件中集成降价支持。但它并没有给降价的书写和使用带来同样的统一。以GitHub风味降价(GFM)为例。它基于CommonMark,但扩展了更多功能(如表格、任务列表和删除线)。Reddit将其“Reddit风格的标记”描述为“GFM的变体”,并引入了标记破坏者的语法等功能。我认为我们可以有把握地得出结论,CommonMark和Gruber背后的团队都是对的:这当然有助于共享规范,但是的,人们希望对不同的特定事物使用降价。

格鲁伯拒绝将降价形式化为一个共享规范,因为他认为这会让它不再是作家的工具,而是程序员的工具。我们已经看到,即使广泛采用了规范,我们也不会自动获得在不同上下文中可以预测的相同语法。像CommonMark这样的规范虽然很受欢迎,但其成功也有限。一个明显的例子是Slack的降价实现(称为mrkdown),它将*this*转换为strong/bold,而不是emphasis/italic,并且不支持[link](https://slack.com)语法,但使用<;链接|https://slack.com> 相反

你还会发现,你可以使用类似Markdown的语法在Concept、Dropbox Paper、Craft等软件的富文本编辑器中初始化格式,在一定程度上,谷歌文档(例如,新行上的星号+空格将转换为项目符号列表)。支持的内容以及转化为变化的内容。所以,在这些应用程序中,你不一定要带着你的肌肉记忆。对一些人来说,这很好,他们可以适应。对于其他人来说,这是一种剪纸,可以防止他们使用这些功能。这就提出了一个问题,降价是为谁设计的,现在它的用户是谁?

跳伞后还有更多!继续阅读下面的内容↓ 满足“移动界面触摸设计”这本关于移动界面设计的全新畅销书的要求,该书采用了经验证的、通用的、以人为中心的指导原则。400页,塞满了深入的用户研究和指南,你可以立即申请。2022年1月初开始发货。

跳转到目录↬

我们已经看到降价存在于不同用例、受众和用户概念之间的紧张关系中。它最初是专门为精通HTML的网络作者设计的一种标记语言,后来成为开发人员的宠儿。

2014年,网络作者开始不再通过Perl和FTP中的解析器移动文件。WordPress、Drupal和Moveable Type(我相信Gruber仍在使用)等内容管理系统(CMS)已经稳步发展,成为网络发布的热门工具。他们提供了富文本编辑器等功能,网络作者可以在浏览器中使用。

这些富文本编辑器仍然假定HTML和标记是底层富文本语法,但通过添加按钮在编辑器中插入这种语法,它们减少了一些认知开销。越来越多的作家不需要也不需要精通HTML。我敢打赌,如果你在20世纪10年代使用CMS进行web开发,你可能必须处理这些编辑器在人们直接从Word粘贴时产生的“垃圾HTML”。

今天,我要说Markdown的主要用户是开发人员和对代码感兴趣的人。Slack让WYSIWYG成为默认输入模式并不是巧合,因为他们的软件被技术部门以外的更多人使用。事实上,这是一个有争议的决定,以至于他们不得不把它作为一个选项带回来,这表明开发者社区对降价的热爱有多深。没有太多庆祝Slack试图让每个人都更容易、更容易获得。这就是问题的症结所在。

事实上,降价已经成为通用语言的写作风格,以及大多数网站框架所迎合的,也是我对发表这篇文章感到有点不安的主要原因。人们常说它是一种固有的、不可否认的好东西。降价已经成为开发人员友好的标志。聪明而有技能的人在各种情况下都投入了大量的集体时间来实现降价。因此,挑战其霸权肯定会惹恼一些人。但希望它能引发一些富有成效的讨论,这些讨论通常被认为是理所当然的。

我的印象是,人们与降价相关的开发人员友好性主要与三个因素有关:

我并不是说这些立场是错误的,但我会建议它们带有权衡和一些不合理的假设。

数据库是了不起的东西。但它们也赢得了前端开发者难以接近的声誉。我认识很多优秀的开发人员,他们回避后端代码和数据库,因为它们代表了他们不想花费时间的复杂性。即使是WordPress,它做了很多开箱即用的事情,让你不必在安装后处理它的数据库,但它也是启动和运行的开销。

但是,纯文本文件更为有形,而且推理也相当简单(只要您习惯了文件管理)。尤其是与一个系统相比,该系统会将内容分解为具有某种专有结构的关系数据库中的多个表。对于有限的用例,比如带有图片和链接的简单富文本博客帖子,降价可以完成这项工作。您可以复制文件并将其粘贴到文件夹中,或将其签入git。由于文件的有形性,内容让人感觉像是你的。即使它们托管在GitHub上,这是一个由微软所有的营利性软件服务,因此受其服务条款的保护。

在这个时代,你实际上必须建立一个本地数据库,才能让你的本地开发顺利进行,并处理与远程同步的问题,纯文本文件的吸引力是可以理解的。但随着后端作为一种服务的出现,这个时代几乎已经过去了。Fauna、Firestore、Hasura、Prisma、PlanetScale和Sanity的Content Lake等服务和工具在开发者体验方面投入了大量资金。与10年前相比,即使是操作关于当地发展的传统数据库也变得不那么麻烦了。

如果你仔细想想,如果你的内容托管在数据库中,你拥有的内容会更少吗?而且,随着SaaS工具的出现,开发人员处理数据库的经验不是变得非常简单了吗?如果说专有数据库技术影响了内容的可移植性,这公平吗?今天,你可以启动本质上是一个Postgres数据库,而不需要系统管理技能,创建表和列,将内容放入其中,并随时将其导出为一个数据库。sql转储。

内容的可移植性与你首先如何构建内容有很大关系。以WordPress为例,它是完全开源的,您可以托管自己的数据库。它甚至有一个标准的XML导出格式。但是,任何试图摆脱成熟WordPress安装的人都知道,如果你试图摆脱WordPress,这对你的帮助是多么小。

我们已经触及了巨大的降价生态系统。如果你看看当代的网站框架,大多数框架都认为降价是一种主要的内容格式,有些框架是唯一的格式。例如,Smashing Magazine使用的静态站点生成器Hugo仍然需要标记文件才能分页发布。这意味着,如果Smashing杂志想要使用CMS存储文章,它必须与降价文件交互,或者将所有内容转换为降价文件。如果你在文档中查找下一步。js,Nuxt。js,VuePress,盖茨比。js等等,降价将占据重要地位。这也是GitHub上自述文件的默认语法,GitHub也使用它来格式化请求注释和注释。

有一些荣誉提到了将降价的人体工程学带给大众的倡议。Netlify CMS和TinaCMS(林业的精神后代)将为您提供用户界面,其中标记语法主要是为编辑抽象出来的。您通常会发现CMSE中基于标记的编辑器为您提供了格式预览功能。有些编辑器,比如Concept,可以让你粘贴标记语法,并将其转换为本机格式。但我认为可以肯定地说,为降价而进行创新的精力并没有惠及那些不喜欢编写其语法的人。它并没有像以前那样一点点地往上爬。

对于制作博客的开发人员来说,使用降价文件可以减少启动和运行博客的一些开销,因为框架通常带有内置解析,或者通常将其作为启动程序代码的一部分提供。没有什么额外的东西可以报名。可以使用git将这些文件与代码一起提交。如果你对git Diff感到满意,你甚至可以像编程习惯一样进行修订控制。换句话说,因为标记文件是纯文本的,所以它们可以与开发人员工作流程集成。

但除此之外,开发人员的体验很快变得更加复杂。最终,你会牺牲你的团队作为内容创造者的用户体验,而我们自己的开发者体验也会被降价所困扰,以解决远远超出其设计意图的问题。

是的,如果你让你的内容团队使用git并检查他们的更改,这可能会很酷,但同时,这是对他们时间的最佳利用吗?你真的希望你的编辑器遇到合并冲突,还是想知道如何重新设置分支的基础?Git对于每天使用它的开发人员来说已经足够难了。这种设置真的代表了主要处理内容的人的最佳工作流程吗?在这种情况下,开发人员的经验不是已经超过了编辑人员的经验吗?为用户提供更好的服务所需的成本、时间和精力不是都在增加吗?

因为内容和编辑环境的期望和需求已经发生了变化,我认为降价不会对我们有帮助。我不明白一些开发人员的人机工程学最终会如何偏向非开发人员,我认为即使对开发人员来说,降价也会阻碍我们自己的内容创作和需求。因为自21世纪初以来,网络上的内容发生了重大变化。

如果你想要更复杂的东西,Markdown总是可以选择不使用HTML。当作者还是网站管理员,或者至少了解HTML时,这种方法很有效。它也很有效,因为网站通常都是HTML和CSS。你设计网站的方式主要是创建整个页面布局。您可以将标记转换为HTML标记,并将其与您的样式放在一起。css文件。当然,我们在2000年代也有CMSE和静态站点生成器,但它们的工作原理基本相同,在模板中插入HTML内容,而不在组件之间传递任何“道具”。

但我们中的大多数人不再像过去那样编写HTML了。网络上的内容已经从主要是具有简单富文本格式的文章演变为具有用户互动性的合成多媒体和专门组件(这是一种称为“时事通讯注册行动呼吁”的奇特方式)。

20世纪10年代初,Web2.0处于鼎盛时期,软件即服务公司开始使用we

......