当前位置: 首页 > news >正文

Doc as Code (3):业内人士的观点

06f30fa33c174ee5bc05bffd3d5253ae.png 

作者 | Anne-Sophie Lardet

在技术传播国际会议十周年之际,Fluid Topics 的认证技术传播者和功能顾问 Gaspard上台探讨了“docOps 作为实现Doc as Code的中间结构”的概念。在他的演讲中,观众提出了几个问题,我们想分享Gaspard的见解!

首先,让我们从Doc as Code的介绍开始。

- 1 -

什么是Doc as Code

Doc as Code是应用软件开发流程和工具来交付技术文档。它使用与开发团队相同的工作流程和工具,包括版本控制系统、自动化测试、问题跟踪器等。它还依赖于轻量级文件的生产和管理。

Doc as Code相当容易获得且易于使用。 需要的工具是极简的,通常是免费的,并且像文本编辑器一样简单。Markdown 或 AsciiDoc 等轻量级格式是开始使用Doc as Code的最快方法,因为它们都可以处理纯文本文件。

与任何技术范例一样,Doc as Code有其优点和缺点。

优点

  • 它促进TW和开发人员之间的合作

  • 您可以使用与开发人员相同的工具

  • 它让开发人员一起参与文档生产制作

  • 它降低了软件许可和支持服务的总体成本

缺点

  • 需要更深的技术知识

  • 最适合软件产品的文档

许多机构和公司已转向Doc as Code作为他们的文档流程。英国政府的技术文档团队使用Doc as Code来提供服务和平台。Spotify、Cloudfare、Kubernetes、Twitch、Arundo、Netflix设备,甚至Bitcoin等公司都使用静态站点生成器(SSG)Jekyll,这是Doc as Code场景最常见的发布工具之一。

- 2 -

与DITA可能存在哪些交互?

Doc as Code和DITA的基本原理是不同的,但两者可以共存。

2019年6月,Heretto联合创始人兼首席执行官Patrick Bosek发表了《和睦相处:DITA和Markdown》。他做了如下类比:

Markdown就像一把铲子,DITA就像一台挖土机。有些人从未使用过挖土机,认为它太复杂了。然后,建造大型建筑的建筑工人说:你不能用铲子建造大型建筑。

如果你一个人开始一个项目,却不知道如何操作挖土机,那么铲子似乎是显而易见的选择。他们俩在世界上都有一席之地,任何建筑工地都会有铲子和挖土机。

Bosek强调了这样一个事实,即每个文档标准都有其优势,我们应该利用每一个标准的长处。

DITA和Doc as Code常用的格式之间存在潜在的联系。

  • 轻量级DITA

您可以使用轻量级DITA来弥合结构化内容和连续文档之间的差距,轻量级DITA是DITA的简化版本,使用DITA元素类型、属性、内容模型的子集和简化的功能子集。轻量级DITA旨在结合HTML5(HDITA)和Markdown(MDITA),它不是为了取代DITA。它主要针对那些将不懂DITA的员工融入文档组织。它允许作者跨不同的部门来进行编辑、协作或发布。

  • DITA辅助编辑模式

当有良好用户体验的界面提供支持时(即:有好用的编辑器),利用 XML 的好处可能是有意义的。随着文档化自动化技术向最终用户友好界面发展,开发人员可能需要访问专门的编辑和管理环境。有一些解决方案可以帮助生成一致的DITA,如Oxygen XML、IXIASOFT、Heretto、DitaToo、Composize等。

- 3 -

可以添加元数据吗?

有些内容需要比其他内容有更多的语义。在DITA系统中,有不同的方法可以在Topic或Map级别声明和添加元数据。不幸的是,使用Markdown,虽然可以调整现有内容并添加元数据,但没有像DITA那样提供语义化。以下是一些如何做到这一点的提示:

  • 使用YAML文件将元数据与模板语言相结合

  • 利用Markdown文件的header或为每个相关目录创建一个README文件

  • 使用Markdown特定风格,如Kramdown,它向内联元素添加类和ID

  • 将带有class属性的HTML标签与Markdown内容结合起来

  • 利用类似AsciiDocsy的SSG,它使用内联语义。

    例如:.term, .cite, .cmd, .code, .gui, .path, .case和.tip

- 4 -

是否仅限于软件行业?

Doc as Code确实适合很多公司,但通常仍与软件开发有关。

重工业在编制技术文件时使用有约束力的规范,如航空、航天、海军、核能和铁路的S1000D标准。有一些特定的要求和时间表与软件行业不同,因此Doc as Code很难应用。

另一方面,Doc as Code作为一个全球的环境可能适用于不同的内容来源、知识库、教育内容,甚至依赖聊天机器人的技术。

- 5 -

给初次尝试团队的建议

  • 循序渐进,从试点开始,熟悉版本控制系统和协作工作流

  • 提升TW的GIT技能

  • 促进技术文档团队和开发人员之间的沟通,让他们参与到文档流程中,并帮助他们确定工作的优先级

  • 花点时间选择和评估用于发布的现有解决方案(如静态站点生成器)是否符合您的需求

  • 为每个存储库创建一个README文件,以了解项目范围、所需资源、原则和指南

  • 开发模板,实施样式指南,代码检查,并考虑将其集成到CI/CD管道中

  • 比较Markdown的不同风格,并考虑使用AsciiDoc甚至轻量级DITA进行创作

  • 随时了解专业社区共享的文章、研讨会和资源:

    • Write the docs:

      https://www.writethedocs.org/

    • Tom Johnson:

      https://idratherbewriting.com/

    • Anne Gentle:

      https://justwriteclick.com/

    • Brian Dominick:

      https://github.com/briandominick

 

英文原文地址: https://www.fluidtopics.com/blog/tech-talk/an-insiders-look-at-docs-as-code/

 

相关文章:

Doc as Code (3):业内人士的观点

作者 | Anne-Sophie Lardet 在技术传播国际会议十周年之际,Fluid Topics 的认证技术传播者和功能顾问 Gaspard上台探讨了“docOps 作为实现Doc as Code的中间结构”的概念。在他的演讲中,观众提出了几个问题,我们想分享Gaspard的见解&#x…...

【Kafka】消息队列Kafka基础

目录 消息队列简介消息队列的应用场景异步处理系统解耦流量削峰日志处理 消息队列的两种模式点对点模式发布订阅模式 Kafka简介及应用场景Kafka比较其他MQ的优势Kafka目录结构搭建Kafka集群编写Kafka一键启动/关闭脚本 Kafka基础操作创建topic生产消息到Kafka从Kafka消费消息使…...

Java的第十五篇文章——网络编程(后期再学一遍)

目录 学习目的 1. 对象的序列化 1.1 ObjectOutputStream 对象的序列化 1.2 ObjectInputStream 对象的反序列化 2. 软件结构 2.1 网络通信协议 2.1.1 TCP/IP协议参考模型 2.1.2 TCP与UDP协议 2.2 网络编程三要素 2.3 端口号 3. InetAddress类 4. Socket 5. TCP网络…...

【深度学习】High-Resolution Image Synthesis with Latent Diffusion Models,论文

13 Apr 2022 论文:https://arxiv.org/abs/2112.10752 代码:https://github.com/CompVis/latent-diffusion 文章目录 PS基本概念运作原理 AbstractIntroductionRelated WorkMethodPerceptual Image CompressionLatent Diffusion Models Conditioning Mec…...

前端学习——Vue (Day6)

路由进阶 路由的封装抽离 //main.jsimport Vue from vue import App from ./App.vue import router from ./router/index// 路由的使用步骤 5 2 // 5个基础步骤 // 1. 下载 v3.6.5 // 2. 引入 // 3. 安装注册 Vue.use(Vue插件) // 4. 创建路由对象 // 5. 注入到new Vue中&…...

STM32MP157驱动开发——按键驱动(tasklet)

文章目录 “tasklet”机制:内核函数定义 tasklet使能/ 禁止 tasklet调度 tasklet删除 tasklet tasklet软中断方式的按键驱动程序(stm32mp157)tasklet使用方法:button_test.cgpio_key_drv.cMakefile修改设备树文件编译测试 “tasklet”机制: …...

PostgreSQL构建时间

– PostgreSQL构建时间 select make_timestamp(2023,7,27,7,34,16);...

2023-将jar包上传至阿里云maven私有仓库(云效制品仓库)

一、背景介绍 如果要将平时积累的代码工具jar包,上传至云端,方便团队大家一起使用,一般的方式就是上传到Maven中心仓库(但是这种方式步骤多,麻烦,而且上传之后审核时间比较长,还不太容易通过&a…...

嵌入式linux之OLED显示屏SPI驱动实现(SH1106,ssd1306)

周日业余时间太无聊,又不喜欢玩游戏,大家的兴趣爱好都是啥?我觉得敲代码也是一种兴趣爱好。正巧手边有一块儿0.96寸的OLED显示屏,一直在吃灰,何不把玩一把?于是说干就干,最后在我的imax6ul的lin…...

关于element ui 安装失败的问题解决方法、查看是否安装成功及如何引入

Vue2引入 执行npm i element-ui -S报错 原因:npm版本太高 报错信息: 解决办法: 使用命令: npm install --legacy-peer-deps element-ui --save 引入: 在main.js文件中引入 //引入Vue import Vue from vue; //引入…...

Selenium多浏览器处理

Python 版本 #导入依赖 import os from selenium import webdriverdef test_browser():#使用os模块的getenv方法来获取声明环境变量browserbrowser os.getenv("browser").lower()#判断browser的值if browser "headless":driver webdriver.PhantomJS()e…...

浅谈 AI 大模型的崛起与未来展望:马斯克的 xAI 与中国产业发展

文章目录 💬话题📋前言🎯AI 大模型的崛起🎯中国 AI 产业的进展与挑战🎯AI 大模型的未来展望🧩补充 📝最后 💬话题 北京时间 7 月 13 日凌晨,马斯克在 Twiiter 上宣布&am…...

【CesiumJS材质】(1)圆扩散

效果示例 最佳实践: 其他效果: 要素说明: 代码 /** Date: 2023-07-21 15:15:32* LastEditors: ReBeX 420659880qq.com* LastEditTime: 2023-07-27 11:13:17* FilePath: \cesium-tyro-blog\src\utils\Material\EllipsoidFadeMaterialP…...

实战-单例模式和创建生产者相结合

实际中遇到了这样一个问题: The producer group[xxxx] has been created before, specify another instanceName (like producer.setInstanceName) please. 发生的原因是:一个进程内,创建了多个相同topic的producer。 所以问题就转换成了如何…...

[SQL挖掘机] - 窗口函数介绍

介绍: 窗口函数也称为 OLAP 函数。OLAP 是 OnLine AnalyticalProcessing 的简称,意思是对数据库数据进行实时分析处理。窗口函数是一种用于执行聚合计算和排序操作的功能强大的sql函数。它们可以在查询结果集中创建一个窗口(window)&#xf…...

原生js实现锚点滚动顶部

简介 使用原生js API实现滚动到指定容器的顶部,API是scrollIntoView 使用 let eldocment.querySelector() 获取dom元素el.scrollIntoView()该元素滚动到其父元素的顶部 高级用法 scrollIntoView(Options)//option可以配置如下 options{behavior:smoot…...

使用mysql接口遇到点问题

game_server加入了dbstorage的代码。dbstorage实现了与mysql的交互:driver_mysql。其中调用了mysql相关的接口。所以game_server需要链接libmysql.lib。 从官网下载了mysql的源码:在用cmake构建mysql工程的时候,遇到了一些问题。 msyql8.0需…...

excel绘制折线图或者散点图

一、背景 假如现在通过代码处理了一批数据,想看数据的波动情况,是不是还需要写个pyhon代码,读取文件,绘制曲线,看起来也简单,但是还有更简单的方法,就是直接生成csv文件,csv文件就是…...

ChatGPT长文本对话输入方法

ChatGPT PROMPTs Splitter 是一个开源工具,旨在帮助你将大量上下文数据分成更小的块发送到 ChatGPT 的提示,并根据如何处理所有块接收到 ChatGPT(或其他具有字符限制的语言模型)的方法。 推荐:用 NSDT设计器 快速搭建可…...

FFmpeg-swresample的更新

auto convert的创建 在FFmpeg/libavfilter/formats.c中定义了negotiate_video和negotiate_audio,在格式协商,对于video如果需要scale,那么就会自动创建scale作为convert,对于audio,如果需要重采样,则会创建…...

Qwen3-Embedding-0.6B深度解析:多语言语义检索的轻量级利器

第一章 引言:语义表示的新时代挑战与Qwen3的破局之路 1.1 文本嵌入的核心价值与技术演进 在人工智能领域,文本嵌入技术如同连接自然语言与机器理解的“神经突触”——它将人类语言转化为计算机可计算的语义向量,支撑着搜索引擎、推荐系统、…...

高危文件识别的常用算法:原理、应用与企业场景

高危文件识别的常用算法:原理、应用与企业场景 高危文件识别旨在检测可能导致安全威胁的文件,如包含恶意代码、敏感数据或欺诈内容的文档,在企业协同办公环境中(如Teams、Google Workspace)尤为重要。结合大模型技术&…...

【决胜公务员考试】求职OMG——见面课测验1

2025最新版!!!6.8截至答题,大家注意呀! 博主码字不易点个关注吧,祝期末顺利~~ 1.单选题(2分) 下列说法错误的是:( B ) A.选调生属于公务员系统 B.公务员属于事业编 C.选调生有基层锻炼的要求 D…...

JavaScript 数据类型详解

JavaScript 数据类型详解 JavaScript 数据类型分为 原始类型(Primitive) 和 对象类型(Object) 两大类,共 8 种(ES11): 一、原始类型(7种) 1. undefined 定…...

站群服务器的应用场景都有哪些?

站群服务器主要是为了多个网站的托管和管理所设计的,可以通过集中管理和高效资源的分配,来支持多个独立的网站同时运行,让每一个网站都可以分配到独立的IP地址,避免出现IP关联的风险,用户还可以通过控制面板进行管理功…...

微服务通信安全:深入解析mTLS的原理与实践

🔥「炎码工坊」技术弹药已装填! 点击关注 → 解锁工业级干货【工具实测|项目避坑|源码燃烧指南】 一、引言:微服务时代的通信安全挑战 随着云原生和微服务架构的普及,服务间的通信安全成为系统设计的核心议题。传统的单体架构中&…...

Neko虚拟浏览器远程协作方案:Docker+内网穿透技术部署实践

前言:本文将向开发者介绍一款创新性协作工具——Neko虚拟浏览器。在数字化协作场景中,跨地域的团队常需面对实时共享屏幕、协同编辑文档等需求。通过本指南,你将掌握在Ubuntu系统中使用容器化技术部署该工具的具体方案,并结合内网…...

前端高频面试题2:浏览器/计算机网络

本专栏相关链接 前端高频面试题1:HTML/CSS 前端高频面试题2:浏览器/计算机网络 前端高频面试题3:JavaScript 1.什么是强缓存、协商缓存? 强缓存: 当浏览器请求资源时,首先检查本地缓存是否命中。如果命…...

JS红宝书笔记 - 3.3 变量

要定义变量,可以使用var操作符,后跟变量名 ES实现变量初始化,因此可以同时定义变量并设置它的值 使用var操作符定义的变量会成为包含它的函数的局部变量。 在函数内定义变量时省略var操作符,可以创建一个全局变量 如果需要定义…...

java+webstock

maven依赖 <dependency><groupId>org.java-websocket</groupId><artifactId>Java-WebSocket</artifactId><version>1.3.5</version></dependency><dependency><groupId>org.apache.tomcat.websocket</groupId&…...