拯救你的文档 – 【DevOps敏捷开发动手实验】开源文档发布
今天上海的天气真是不错,风和日丽。再次来到微软上海紫竹研发中心,心情很是愉快,喜欢这里的大草坪,喜欢这里的工程气氛,更喜欢今天来陪我的小伙伴们。

这次动手实验培训与以往最大的不同就是采用了开源文档的方式。其实,小编一直在寻找一种更好的技术文档编写方式。说到文档,我在过去的几年中也写了不下500份不同类型的文档。我估计,每个写过技术文档的同学都有类似这样的文件夹。

是不是很有一种蛋疼的感觉,没有办法啊,需求改来改去,客户的要求变来变去 … … 最后么,就没有最后了,你就自己苦逼去吧。
所以,自从开始筹划这次培训开始,我就希望能够有一种更好的方式来编写技术文档,直到我发现了

这是微软下一代 ASP.NET的技术文档,但吸引我的是它右上角的这个 Edit on Github 链接,点进去一看果然发现它的源代码是在GitHub上开源的。

顺藤摸瓜,我找到了这个神奇的网站 https://readthedocs.org/

研究一下,我发现使用GitHub + ReadTheDocs.org,终于可以满足我对技术文档的编写要求了:
– 你所编写的内容是与展现形式无关的:这里使用的格式是reStructuredText,这是一种类似Markdown的标记语言,比如:
文档源代码

生成的HTML效果

是不是很cool,特别是最下面的 练习列表 部分,只要直接引用相关的文件,就可以生成很漂亮的链接。
– 文档的源码仍然具备很好的可读性:相比HTML而言,reST格式的各种标记与内容融合在一起的,而不是环绕在你的源码周围的,比较一下表格的写法,你就知道我是什么意思了。
源码

生成的HTML效果

想象一下如果要编写这样的表格,用HTML代码如何写你就知道我的意思了。
– 文档可以以多种格式输出:reST可以被很容易的解析成HTML,PDF,ePub等多种发布格式,便于在不同的设备上进行访问,注意左侧的Downloads部分

– 可以很容易的比较和跟踪内容变更:类似word/html这种文档,是很难进行版本比较的,但reST让着一切变得无比容易,而且你可以使用很简单的纯文本编辑器,不在需要笨重的Word。
使用Visual Studio Code进行内容比较

– 可以借助git丰富的分布式协作来支持多人同时编辑,离线编辑,多分支,合并等复杂的协作场景。
这次的培训中所使用的文档编写流程:

– 在我的github中建立了文档的主版本
https://github.com/ups216/vsalm-hols
– 在同事的github中fork我的主版本
– 可以同时编辑文档,并通过pull request互相分享最新的文档源码
– 在ReadTheDocs上建立了项目,同时设置了webhook,在向github push代码后直接部署到以下地址
https://vsalm-hols.readthedocs.org/
这样,我们可以同时编写文档,就算同时修改了一个文件,也可以很容易的diff其中的区别,进行合并。同时,发布以后又可以很容易的分享给感兴趣的人。ReadTheDocs上面的文档是可以自动适应不同的设备的:
在PC浏览器中是

在手机浏览器中是这样的

在这次的培训中,学员也普遍反映这种文档非常好用,便于分享,还可以通过github的issue来反馈问题。
好吧,最后给出这次发布的VSALM-HOLs动手实验文档链接,感兴趣的同学可以通过以下链接访问,或者在github上fork我们的文档,如果遇到问题也欢迎通过github给我们提issue,甚至提交pull request,谢谢。
文档链接:
https://vsalm-hols.readthedocs.org
GitHub库地址:
https://github.com/ups216/vsalm-hols
拯救你的文档 – 【DevOps敏捷开发动手实验】开源文档发布的更多相关文章
- 【DevOps敏捷开发动手实验】开源文档 v2015.2 stable 版发布
Team Foundation Server 2015 Update 2版本终于在2周前的//Build 2016大会上正式发布了,借这个东风,小编也完成了[DevOps敏捷开发动手实验]开源文档的第 ...
- 秦俊:开放 DevOps 敏捷开发套件,助力开发者驰骋云端
欢迎大家前往腾讯云技术社区,获取更多腾讯海量技术实践干货哦~ DevOps可以让人工智能(AI).大数据(Bigdata).云计算(Cloud)更加高效地落地,越来越多的企业和团队在践行DevOps. ...
- IceScrum敏捷开发工具的安装文档-官方最新版
Welcome to the iceScrum iceScrum install guide. If you don’t want to manage your own iceScrum instal ...
- 用户故事驱动的敏捷开发 – 2. 创建backlog
本系列的第一篇[用户故事驱动的敏捷开发 – 1. 规划篇]跟大家分享了如何使用用户故事来帮助团队创建需求的过程,在这一篇中,我们来看看如何使用这些用户故事和功能点形成产品backlog.产品backl ...
- 传统开发模型vs敏捷开发模型——过程模型的变革
一.概念框架 在了解一个新概念的时候,最好的方法就是把它插入到原有的概念体系中.在不仅有助于对概念的记忆,更利于深刻地认识概念的本质.精髓.下图说明了"敏捷开发"在软件工程理论体系 ...
- 敏捷开发方法-Scrum
为了不落后他人,于是我也开始学习Scrum,今天主要是对我最近阅读的相关资料,根据自己的理解,用自己的话来讲述Scrum中的各个环节,主要目的有两个,一个是进行知识的总结,另外一个是觉得网上很多学习资 ...
- 敏捷开发 与 Scrum
敏捷开发以用户的需求进化为核心,采用迭代.循序渐进的方法进行软件开发.在敏捷开发中,软件项目在构建初期被切分成多个子项目,各个子项目的成果都经过测试,具备可视.可集成和可运行使用的特征.换言之,就是把 ...
- 敏捷开发与Scrum
敏捷开发以用户的需求进化为核心,采用迭代.循序渐进的方法进行软件开发.在敏捷开发中,软件项目在构建初期被切分成多个子项目,各个子项目的成果都经过测试,具备可视.可集成和可运行使用的特征.换言之,就是把 ...
- 开源文档管理系统LogicalDOC测试报告---安装篇
开源文档管理系统LogicalDOC测试报告---安装篇 分类: Linux2011-06-22 15:40 7436人阅读 评论(3) 收藏 举报 文档管理测试mysql数据库installerja ...
随机推荐
- 取消vs2013在solution中单击打开文件的功能
2013用了一段时间,不错,就是单击会打开文件,有点恼人(因人而异吧).解决方案: 取消红色框框里面的那个checkbox就ok了. 来自为知笔记(Wiz)
- js 获取当前的时间
第一个小程序,用js获取当前的时间,,比较特殊的是 月是从0开始算的,显示的时候要加1,获取日用getDate(),获取周 getDay(), 直接上代码 <!DOCTYPE html> ...
- Ubuntu下搭建ryu环境
RYU环境搭建总共四步: step1:首先下载相应的python套件,并且更新pip $ sudo apt-get install python-pip python-dev build-essent ...
- 自定义iOS 中推送消息 提示框
看到标题你可能会觉得奇怪 推送消息提示框不是系统自己弹出来的吗? 为什么还要自己自定义呢? 因为项目需求是这样的:最近需要做 远程推送通知 和一个客服系统 包括店铺客服和官方客服两个模块 如果有新的消 ...
- 加入一个线程:join
在启动一个线程之后调用该线程的join()方法,会使该线程先执行,该线程执行完成后,再执行调用该线程的线程. 例如如下的任务: public class LiftOff extends Thread ...
- javabean和jsp动作元素
model1就是利用了jsp和javabean 的组合来处理问题.jsp页面如果有太多的逻辑代码的话,维护起来和扩展起来是相当的麻烦的.所以jsp的逻辑代码部分都打包到一种java类当中进行编写.这种 ...
- Redis所需内存 超过可用内存怎么办
爬虫和转载请注明原文地址:博客园蜗牛 http://www.cnblogs.com/tdws/p/5727633.html Redis所需内存 超过可用内存怎么办 Redis修改数据多线程并发—Red ...
- Android使用ViewPager实现左右循环滑动及轮播效果
边界的时候会看到一个不能翻页的动画,可能影响用户体验.此外,某些区域性的ViewPager(例如展示广告或者公告之类的ViewPager),可能需要自动轮播的效果,即用户在不用滑动的情况下就能够看到其 ...
- 【C#进阶系列】25 线程基础
线程的概念 线程的职责是对CPU进行虚拟化. CPU为每个进程都提供了该进程专用的线程(功能相当于cpu),应用程序如果进入死循环,那么所处的进程会"冻结",但其他进程不会冻结,它 ...
- ExpandableListView实现展开更多和收起更多
[需求]: 如上面图示 当点开某个一级菜单的时候,其他菜单收起: 子级菜单默认最多5个: 多于5个的显示"展开更多" 点击"展开更多",展开该级所有子级菜单,同 ...