为什么我偏爱用 GitHub 来写书?

885 阅读5分钟
原文链接: mp.weixin.qq.com

GayHub作为一个全球著名的社交网站,它的用途可不仅仅只有约基那么简单。

今天,让我们来说说为什么我越来越喜欢用Git来写书——只是电子书,并且将它发布到GitHub上。

我在GitHub上写的第一本书是《一步步搭建物联网系统》,它是我的毕业论文与博客的合集。

在这本电子书里,我和我的同学小兵一起协作来编写内容。在今天看来,这仍是一本不错的物联网指南。只是物联网这个领域一直都不温不火,并且在GitHub上比较流行的都是Web开发的项目。

随后只是因为这个项目,一个PACKT出版社的编辑在GitHub上找到了我,帮他们审阅《Learning Internet of Things》这本书——英文版的。

从这个过程中,我学到了两件事:

  • 协作写作是可能的

  • 在GitHub上写作意味着机会

接着,我就开始尝试去写一本物联网的书,并且我使用Git来管理。

使用Git管理内容

在开始之前,希望你对于Pandoc这个软件及LaTeX有一点点概念:

  • Pandoc是由John MacFarlane开发的标记语言转换工具,可实现不同标记语言间的格式转换,堪称该领域中的“瑞士军刀”。如我们可以将Markdown转化为Word,然后统计字数——这是我最常用的功能。

  • LaTeX 是 Leslie Lamport 在 TeX 基础上按内容/格式分离和模块化等思想建立的一集 TeX 上的格式。TeX是诞生于20世纪70年代末到80年代初的一款计算机排版软件,用来排版高质量的书籍论文,特别是包含有数学公式的文章书籍。

结合上面的两种工具,我们可以用Pandoc结合LaTex来将md文件转化成PDF格式,又或者用Pandoc结合kindlegen将其转化为Kindle能阅读的mobi格式。

(PS: 我的毕业论文的初稿就是拿Pandoc + LaTeX完成的。)

版本控制

关于使用Git来作为数据库已经不是一个新的概念了。在那篇《编辑-发布-开发分离》中我们还提到了,拿Git作为一个NoSQL数据库。它是一个很好的数据存储器,我们可以将其PUSH到我们所能创建的私有仓库里。并且这个过程中是持续递增的,你不再需要不断地复制你的文件了——以免丢失造成的影响。

但是这: 少了一个脱稿的理由了

Diff Change

Git让人最爽的莫过于可以Diff修改了。如果你遇到下面的一些情况:

  • 需要对比两个不同的JSON文件的字段差异

  • 查看一个文件的修改历史

请拥抱Git,并添加一次提交来完成这个工作。

如果我们的写作项目与不同的人一起完成的话,那么这可能会变成一场恶梦。在我之前的翻译项目里,我们使用Git来完成这个工作。通过Git,我们可以发现:谁做了一些修改,如添加内容、删除某些内容。并且我们都很熟悉Git的话,那么我们只会在一次提交里修改尽量少的文件,并提交代码。这样做会避免我们破坏其他人正在修改的文件。

我在GitHub上写的第二本电子书是《GitHub漫游指南》,这本电子书完全没有任何写作计划——它就是一个博客全集(PS: 谁让我写过的博客多呢!)。

而这本书里,我最大的感受是增量性添加——我可以不断地往这个Repo里添加内容,而不需要担心影响人们的阅读。这也是纸质书不能比拟的,当一本书出版后,只能等下一次修订。只是修订只是少数书的命运,而另外一个明显的感受是,我们只需要写一点内容就可以判断是不是用户想要的内容:

在早期做出一个最小化可行产品,然后投向市场,来观察用户的反馈。而在这本书里,很好的验证了我的想法是对的,因此就被添加到Growth中去了。

GitHub协作

使用GitHub来写书的最大理由就是协作。对于熟悉GitHub的用户来说,他们看到错误就很乐意帮你提一下,或者是帮你来一个Pull Request来帮你修复错误。这样做也可以增加自己的Contributions,同时也可以帮助到别人。

  • 持续部署。GitHub有一个很大的优势,即GitHub Page,使用GitHub Page可以让我们实现持续性部署。即我们只能一PUSH我们的修改,我们就可以将我们的最新版本呈现给用户。

  • 支持CNAME。这样我们就可以使用一个简单的域名就可以完成一个高逼格的整合。

  • 支持评论功能。如果你在某个修改里说了,JavaScript是这个世界最流行的语言,那么有人就会在评论里说了吧。

在那本《一步步搭建物联网系统》有一个很大的问题是,内容并不是受到GitHub上的用户欢迎的,受众在网上也比较少——需要依赖于线下渠道。

而《GitHub漫游指南》有一个天生的不足是:在一开始的时候并没有好好策划,虽然主题很受欢迎。

因此Growth就结合了上述两者的优势,即在一开始的时候做了一个MVP,发现还不错。然后还好好地编写了内容。

单单只有努力看上去是不够的,还要有一点点小技巧。

最后一个偏爱的理由是:人们并不缺乏学习的意愿,只是不知道学习什么。

在GitHub上一个流行的库可以帮助你完成工作,但是仍然需要有有文章来帮助你成长,帮助你变得更好。