你所未知的FarBox

我们经常能看到一些关于FarBox的介绍/推荐,但也常因为市面上存在着的类似产品,会让大家产生惯性认知,于是会给FarBox打上一些常见的标签。
坦率地说,这些标签多数并不太正确。

初心

创作FarBox时,主要解决两个问题:

  • 用博客记录生活的时候,希望回归于纯粹的写作。
  • 旅行归来,把照片放到电脑里,无需上传,大家就能在我的个人网站里看到。

另外,我们则致力于创作一些简洁的产品,来改善少数人的互联网生活。

于是,这样,就开始了FarBox之旅。

致力于简洁, 应该很多事情都会变得简单与轻松吧。 但开发FarBox的基础引擎,消耗了我们一年半多的时间。

为什么选择个人的云端存储

个人的云端存储,典型的如Dropbox,已经成为一种多数人使用的服务了。如果通过云端,进行数据的传输,那么带来的两个最大的好处:

  1. 任何时候、任何设备,只要保存、编辑、删除文件,就能操作你在FarBox上的数据;
  2. 你的数据永远有一个备份。

所以,这个选择是不言而喻的。

虽然,我们接入Dropbox的API,表面上看也是Dropbox上的一个文件夹变成了网站。

每每有人赞叹道Dropbox好厉害呀,我们的心情其实很复杂…… Dropbox提供的只是基础API,就是数据同步;而剩下的大量工作,都是FarBox完成的。如果赞叹下FarBox,我们就开心了。:)

关于静态博客

首先,FarBox不是静态博客,其实没有可比性;
但经常被拿来与静态博客对比,所以,我们就谈谈静态博客。

选择静态博客的唯一原因

唯一的原因就是了,不论Jekyll(像黑客一样写作), Octopress(Jekyll的再开发), Hexo(Node.js写的,编译速度比前两者快),本质上都是一致的。

但是,真正酷的事情,不是从这些工具中选择一个,而是自己创建一个!写一个静态博客生成器,并没有多大的难度,重点是能体现自己对代码的品位。

除此之外,我们并不推荐去使用静态博客,它远比你想象中要不方便。

FarBox的同类产品

Site44、DropPages

都是基于Dropbox的静态网站托管,并且都已经停止更新了。

本想一笔带过,毕竟静态托管,只是FarBox特性当中的一小部分。
但还是要介绍下Site44团队的两名成员,一个是Todd Proebsting,大学老师,教计算机科学的;另外一名是Steve Marx, 曾经在微软工作(Windows Azure首席构架师), 2013年6月加入了Dropbox(Site44在这之前创办的)。

scriptogr.am/calepin.co

两者很类似,相当于将静态博客与Dropbox结合起来了。

calepin.co是基于开源的静态博客引擎Pelican,所以,到现在,它还在持续(偶尔)更新中。FarBox在最开始的时候,有寻找过类似的框架,如果可用,就可以节省大量的开发时间;所以有研究过Pelican,但并不合适,不论是设计思想、性能、扩展性,跟我们自己想象当中的偏差比较大,只能重写一个。

scriptogr.am是一个知名度比较高的Dropbox博客平台。但它已经停止更新了。在停止更新之前,曾有一个新版要呼之欲出的……

scriptogr.am团队表面上有5个成员,但是,关注下创始人,就明白这一切了:Andreas Pihlström于2013年6月(呃,怎么又是这个月份)跑去Pinterest当产品设计师了。

发生了什么?我们能隐约感受到里面的苦楚。前几年也和几个斯坦福的PhD做一个产品,然后就挂了。团队的能力没有出现瓶颈之前,团队就出现了问题;常常是如此。

我们有时候会想,如果不是花这么多时间去雕琢FarBox,也许她也会很快地凋零了。

postach.io

postach.io+Evernote类似于scriptogr.am+Dropbox的组合。在做FarBox之初,我们有研究过Evernote的API,从API能大概感觉到一个产品的基本结构;好吧,Evernote的结构看起来非常古董,就没有了兴趣接入。

postach.io目前很受Evernote官方的待见,确实在他们如此的API之下,做出这样一个产品并不是一件太容易的事情。如果你是Evernote的重度使用者,倒可以尝试一下;但除此之外,并不推荐,功能不如FarBox,且价格更贵。

BackLift

这个产品常被大家忽略,BackLift是2013年YC孵化的一个项目。

很快,BackLift改名了(或者说前个项目被废弃而新开了一个...)Brace, slogan也从 Turn your design into a functional website 变为 Host static websites from the comfort of Dropbox. 估计可能是BackLift的前景不太明朗,因为按照它的设计,是面向前端(程序员)的。

简而言之,Brace是一个静态站点的托管服务。虽然,Brace也增加了一些特性,比如版本管理、以及利用了Amazon云的CDN服务;它的角色跟FTP+CloudFront没有本质的区别;但是,却极大得提高了原有的体验,是一个目的性非常明确的产品,应该会开辟自己的一个领域。

举几个特性与FarBox进行对比,会帮助大家更了解彼此。

1. 动态与静态
FarBox是动态框架,虽说不需要用户部署数据库,但却可以像数据库查询一样,获取指定的数据;这是静态站点无法做到的。

另外,基于FarBox的API,用户自己就能实现很多特性,比如Brace说我们推出了Code Editor, 而在FarBox上,则是你还可以自己创造一个Code Editor出来。

2. CDN与速度
CDN应对静态页面很有效,但是动态页面不是太好。所以FarBox自己设计了Nano NetWork,基本接近CDN的性能与速度。

但是Amazon的云不是万能的(Brace接入AWS的CDN,是一种最简单的办法而已),比如链接中国大陆的时候,它的CDN就不是很灵敏了,因为Amazon亚太区的节点,很可能是从澳大利亚过来的,并且同是澳洲,但不同节点,速度还不稳定。

而Nano Network可以直接命中香港的节点。最最酷的是,Nano Network可以让动态站点达到CDN的效果!

3. Dropbox
都是基于Dropbox的同步接口,本身不会有多大差异。但是FarBox在这个基础之上,提供了AutoReload这样高级的支持。

其它产品

WordPress

一个巨无霸的存在。很多人离开的原因很简单,因为它看起来不像一个博客了。

Ghost

一个以挑战WordPress,用Node.js写的开源博客;同时也进行博客的托管,但价格非常高大,最低5美金/1月,1W页面浏览量(如果你使用FarBox,页面不要太复杂,那么,同样的5美金,同样的额度,你可以使用60个月……)。

市场推广做得超赞,吸引了不少模板设计师;但实际产品,可能就打了巨大的折扣。本质上跟WordPress一样(btw, 其创始人以前是在WordPress工作的),需要安装程序,需要数据库,需要服务器(或者虚拟机)。

如果你正在学习Node.js或者追逐潮流,可以尝试下。

FarBox一些基础结构与功能

文件夹数据库

从Dropbox获取的数据,都是基于操作系统的文件路径的,我们必须要将这种结构,转化为可高速查询的数据库结构。

这个数据库真实存在于FarBox的服务器中,但又是每个文件夹内文件结构、内容的映射;所以,可以通过操作文件、文件夹来修改这个数据库,而让我们感受不到这个数据库的存在。

这个数据库是FarBox的基础核心,因为是各个数据的来源,否则,FarBox就只能做一个静态博客了,扩展性弱了,也没有了想象力。

数据结构层

除了刚才讲到的数据库之外,我们还有一个全文搜索的数据库,同时,有一个临时的内存数据库作为缓存系统。三者组成了完整的数据结构层,彼此补充,彼此加速。

如果想把动态的网页,做到静态页面的加载性能,需要把渲染完成的页面全部放在内存中(性能要求);同时,要保证这个缓存是实时更新的(不然,又成了静态页面)。

API

虽然FarBox默认情况下,就是一个博客平台;但我们设计API所考虑的是Web版的WebFrame

基于文件路径的数据库,可以让我们更加直观地获得数据,另外一方面,模板API的语法除了Jinja2外,还支持Jade。我们喜欢使用Jade语法在FarBox上写网站,代码如诗,这样的感觉很好。像doc.farbox.com,一个功能完整的文档生成器,而主代码只有60行左右。

FarBox还可以通过获得fb_token开放所有的权限,甚至允许别人匿名往你的某个站点目录内上传文件。比如we.farbox.com就是基于这样的原理。

FarBox除了从Dropbox这边同步数据之外,也有自己的数据API平台,并能和Dropbox端的数据去重和再同步。比如我们做了个todo.farbox.com

为了让模板文件的修改能直接生效,我们增加了AutoReload的支持;为了CSS结构更加容易维护,我们支持SCSS的自动编译。

除了创作者,我们希望为Coder也提供友好的体验。

我们下一步,考虑增加基于WebSocket的Realtime接口。

FarBox Editor

Mac上虽然有不少优秀的写作APP,典型的如Mou;但我们需要可以有网站文件夹这个概念的管理器。

开始做FarBox的时候,Windows上其实没有用得舒服的写作APP。

另外,我们希望能打开这个一个软件,就直接写,(一般情况下)不用再管文件要保存到哪。

还有一个原因,很多(普通)人对Markdown并不熟悉,我们在解析Markdown的时候,便做了些许的改造;因此,如果有个自己的Editor做预览,效果会更好。

既然是基于文件夹,我们也希望可以将一个文件夹,直接导出为PDF电子书

好吧,承载了这些期望,我们决定做一个桌面的写作APP。对我们没有写作桌面程序的人来说,确实比较难;但无所谓,觉得应该做的事情,那便开始做了。

这就是FarBox Editor的由来。

评论系统

除了文章、图片,它们自己的评论,也是与Dropbox保持同步的。

虽然使用第三方评论系统,也是一个常见的现象。但我们希望达到一种开箱即用的状态,总不能强迫每个人都去注册第三方的评论系统吧。

这就是FarBox评论系统的由来。

但也是蛮麻烦的一个系统,比如@xxx产生的回复以及对应的邮件通知,比如数据冲突的处理,最麻烦的是spam。始终不想增加验证码这样影响体验的东西,防spam的系统,也连带着要设计开发。

网站后台管理

一开始的时候,我们没有打算增加后台管理,网站的属性扩展与设置,用Markdown格式的site.txt进行控制就可以了。

但慢慢地感觉不友好,所以,增加了一个后台管理的系统,可以将一个文本文件渲染为一个网站的管理后台;保存之后,会形成一个新的site.txt

不但如此,后台管理系统是由一个interfece.json控制的,每个人根据默认的规则,可以定制自己的后台管理。

Nano Network

原来,我们只是计划把FarBox单机结构,重新设计为分布式的就可以了。

但是机房从日本迁到了美国,发现与大陆的连线,有些时候拥堵了,网站的速度就很慢。

原本计划很久以后才能开发的Nano Network也提上议程。

Nano Network的原理其实很简单,当请求DNS的时候,会自动给你匹配一个最近的Nano节点。 第一次请求这个Nano节点的时候,会从主服务器中获取内容,并呈现给访客。同时,还会与主服务器保持通讯,来判断当前页面是否需要更新了,以及更新其它节点同步过来的数据变化。

那这不就是一个高级点的CDN么? 当然不是! Nano从主服务器获得的内容,不但是一个HTML页面,更是一个可以重新渲染的微型框架;下次请求的时候,会重新渲染一次页面,而无需再从主服务器中获取。

简而言之,Nano Network本身还是很复杂的;但是效果很惊人。

其它

FarBox其实还有很多特性,可能有部分存在于文档,有部分存在于使用者的直觉之中。

另外,我们也在不断的尝试新想法。
比如Dig系统,它可以让文章排序的时候,挖掘到最近最受欢迎的文章,并且这个数据挖掘系数还可以自定义。

写在最后

凡是罗列功能的文章,必然看起来让人头大。 估计本篇也是如此。

我们希望大家能够明白FarBox的与众不同,她不是XXXX,也不是XXXX,她就是FarBox。

最后,我们用一句被用坏了句子作为总结:

FarBox在不断弥合人文与技术之间的沟壑。

@2014-03-24 12:50
  • Hepo2014-03-26 16:00

    Sorry, 昨天将blog.farbox.com也加入了测试版的NanoNetwork进行提速,Nano有个bug,对POST的数据也进行了缓存,导致无法评论。

  • zisong2014-03-26 16:37

    bug已修复,就补上我被缓存了的评论吧。大意是:“点32个赞,对提到的Dig系统很是期待!加油”,另一条评论是:“看了上面的文件数据库的简介,我在想这是不是说明文章在不同文件夹移动或文件夹改名导致访问量清空是很难解决的问题,我还一直奢望对文章文件按照分类目录重新整理了”

  • hepochen2014-03-26 16:48

    @zisong 原来是已经解决了的,但是分布式系统中,又无法处理了。

    A文件的移动会被当做删除、新增;我们是并发着处理这两个任务,彼此没有交集;如果是单机的话,也没有问题。问题是,FarBox不是单机系统,服务器之间也有延时,所以还比较难弄。

    临时性的,我们将删除文章的访问数进行了保存, 内置的一个存储库,不知能不能看到;但没有做多余的应对。

  • zisong2014-03-26 17:03

    @hepochen 翻墙之后看到了,数据的确都有保存。像上面说的farbox不是一个静态博客,相信以后终归会解决的。

  • 伤心凉粉2014-03-27 15:44

    Farbox 在人文和技术的十字路口~

  • 612014-03-28 10:56

    简单是为了追求一种乐趣~ 过度的简单就会让产品变得冷冰冰

  • hepochen2014-03-28 10:59

    @伤心凉粉 LOL,这个路口站的人太多了,我们就往后靠一靠,马路边坐坐也好。

  • hepochen2014-03-28 11:01

    @61 自然如此。简洁的复杂程度,通常是超过复杂本身的。如果一个产品只有简单的表面,而没有复杂的支持,基本上是属于偷懒的了。 :)

  • 雨帆2014-03-31 18:48

    总感觉评论这一块需要加强,WP的迁移中最头大的就是评论。

  • Jreen2014-03-31 21:37

    我想问下,就是Farbox对注册用户是怎么区分的?
    因为我看到说2014-5-1之前注册的用户,不会产生第一个5年的费用。

  • 木昜人2014-04-01 22:11

    希望能保持这份简洁。

  • 尽心2014-04-08 22:48

    “一个巨无霸的存在。很多人离开的原因很简单,因为它看起来不像一个博客了。”的确,这也是我离开的原因

  • Seaborn Lee2014-05-10 12:51

    Farbox加油,试过大部分的博客系统,最喜欢还是Farbox。

  • YT2014-05-13 14:51

    今后会不会出安卓或者IOS的客户端呢

  • Hepo2014-05-13 16:28

    @Seaborn Lee, Thanks, 老朋友了。 :)

    @YT 很长时间内不大可能,如果为了写文章,有很多既存的付费/免费应用;如果是为了同步数据,Dropbox的客户端也足以。 :)

  • wxd2014-05-21 13:43

    本页面的评论就是自带的评论框么,每次都要输入用户名邮箱网址什么的 有点麻烦

  • summer2014-05-29 16:36

    你好,我想问一下,在配置项中:允许其他人推送内容到你的网站(share目录下),这个功能是怎么使用的,也没看到相关的说明。

  • hepochen2014-05-29 16:40

    @summer

    相关文档参见: http://doc.farbox.com/read/sync-gateway#toc_5

    http://we.farbox.com就是在这个基础上创建的。

  • wonpn2014-06-15 20:05

    我问一个弱智一点的问题,farbox默认模板的网站封面图片是多大像素的,长宽多少

  • Hepo2014-06-16 02:19

    @wonpn 428x1280,不过不用管这个,模板会自动裁剪图片的,如果图片过大的话。 :)

  • ngedan2014-06-27 15:54

    去年弄过一段时间,后来dropbox里取消应用支持了,是不是算用户注销了...
    付费好麻烦,没有支付宝吗?

  • 土木坛子2014-06-29 01:00

    一直关注着FARBOX,说不出具体理由,总感觉和其它的博客产品有些不一样,让未来说明一切,祝好运!

  • Cambridge2014-07-28 17:04

    我来报告一个BUG吧,第一次打开我的主页,我的某篇文章访问量为5,刷新一次后,变成了1,然后就一直是1。不过,如果开着翻墙软件,一直是5。求解释。

  • tpircsboy2014-08-24 11:32

    我想问一下,那个 网站头像 (拖曳圖片更換) ,为什么我换了几个浏览器都拖拽不成功,包括最新版的chrome

  • Hepo2014-08-26 09:49

    @tpircsboy 可以自己本地对应位置存放就可以了,/_image/avatar.jpg对应头像, /_image/cover.jpg对应封面。

  • shenh062014-10-06 20:03

    小白求问,我用PS做了一张428*1280的图,为何放进去之后也被裁剪了,而且看起来是放大了,没有原图清晰。

  • j2-s2015-07-25 12:46

    用了twilog模板那个头像怎么无法更改?设置里面改的头像没用

  • 笔记本2015-10-29 22:16

    回归文字,持续关注中......