GayHub作为一个全球著名的社交网站,它的用途可不仅仅只有约基那么简单。
今天,让我们来说说为什么我越来越喜欢用Git来写书——只是电子书,并且将它发布到GitHub上。
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上写的第二本电子书是《GitHub漫游指南》,这本电子书完全没有任何写作计划——它就是一个博客全集(PS: 谁让我写过的博客多呢!)。
而这本书里,我最大的感受是增量性添加——我可以不断地往这个Repo里添加内容,而不需要担心影响人们的阅读。这也是纸质书不能比拟的,当一本书出版后,只能等下一次修订。只是修订只是少数书的命运,而另外一个明显的感受是,我们只需要写一点内容就可以判断是不是用户想要的内容:
在早期做出一个最小化可行产品,然后投向市场,来观察用户的反馈。而在这本书里,很好的验证了我的想法是对的,因此就被添加到Growth中去了。
GitHub协作
使用GitHub来写书的最大理由就是协作。对于熟悉GitHub的用户来说,他们看到错误就很乐意帮你提一下,或者是帮你来一个Pull Request来帮你修复错误。这样做也可以增加自己的Contributions,同时也可以帮助到别人。
- 持续部署。GitHub有一个很大的优势,即GitHub Page,使用GitHub Page可以让我们实现持续性部署。即我们只能一PUSH我们的修改,我们就可以将我们的最新版本呈现给用户。
- 支持CNAME。这样我们就可以使用一个简单的域名就可以完成一个高逼格的整合。
- 支持评论功能。如果你在某个修改里说了,JavaScript是这个世界最流行的语言,那么有人就会在评论里说了吧。
GitHub上的第三本书
在那本《一步步搭建物联网系统》有一个很大的问题是,内容并不是受到GitHub上的用户欢迎的,受众在网上也比较少——需要依赖于线下渠道。
而《GitHub漫游指南》有一个天生的不足是:在一开始的时候并没有好好策划,虽然主题很受欢迎。
因此Growth就结合了上述两者的优势,即在一开始的时候做了一个MVP,发现还不错。然后还好好地编写了内容。
单单只有努力看上去是不够的,还要有一点点小技巧。
最后一个偏爱的理由是:人们并不缺乏学习的意愿,只是不知道学习什么。
在GitHub上一个流行的库可以帮助你完成工作,但是仍然需要有有文章来帮助你成长,帮助你变得更好。