作为多人协同编辑器,文档需要在网络中存放和传输,安全的重要性可想而知。在文档的存放方面,我们将决定权给用户。作为Netpad的用户是非常幸运的,因为您可以有很多的决定权:您可自行选择是将您的文档存放在自己的机器上还是我们为您提供的服务器上。如果想将文档存放在自己的机器上,只需要将本机的文档通过共享的方式与其他人协同编辑,这些文档就存放在您自己的机器上了。这样,您就不用再担心由某某服务故障而导致无法访问您的文档了,也不用担心您的文档内容是否会被泄露。
在传输方面,Netpad使用TLS(Transport Layer Security Protocol),以确保您的文档在协同编辑过程,文档的传输是绝对安全的。
Netpad和其它普通本编辑器的最大不同之处在于:她是一款多人协同文本编辑器。在您的机器上,有着许多文本文件,你经常编辑或查阅他们。随着日益发达的计算机网络,人们通过网络的沟通越来越容易。因此,在您编辑本机上的文件,其中某些内容是您不熟悉的、或者文件中的某些内容根本就是分工给别人完成的、或者您想要的信息存在于您朋友的电脑中,如是等等,您就可以通过Netpad和您的朋友或者同事同时编辑或查阅同一个文件。
由于是多人协同编辑同一个文本文档,我的朋友和同事会经常提醒:多人同去写一篇文档,那文档的内容不就乱了,这个人要在一个地方插入些文字,那另一人又想删除一些文字,如此等等,不乱才怪。
于是我笑着告诉他们,Netpad所要解决的核心问题就是这个。这叫“计算机支持的协同工作”(Computer Support Cooperative Work),简称CSCW。目前在这方面已经有了很多的科研成果,这些科研成果告诉我们,作为文本协同编辑器,需要解决下面两个问题:
文档内容一致性维护:是指在多人协同编辑过程中,任何时候,每个协编者看到文档内容都是一致的。
操作意愿维护:是国际上提出的新概念,旨在使用户产生该操作时希望选到的效果与该操作实际执行后所产生的效果一致,属于并发操作的一致性维护范畴。
Netpad使用了一种叫作“操作转换”的算法,以确保在多人协同编辑时,文档在每个协编者看到的文档内容是完全一致的。同时,很好维护了每个协编用户的操作意愿。
我们不希望做一个集中式的服务器,并且将用户的文档都存放在这个服务器上。我们将这个选择的权利交给用户。也就是说:我们提供这种集中存放文档的服务,但却不是必须的,用户可以自己选择是将文档存放在自己的机器中,还是存放在我们为用户提供的服务器。
为了满足上面的需求,我们采用了P2P架构,即每个Netpad都可以提供服务给别的Netpad使用。同时,每个Netpad也都可以使用其它Netpad的服务。
基于这种P2P的架构,Netpad可以通过两种模式完成多人协同编辑:一是通过互联网进行协同编辑,二是通过办公网(局域网)进行协同编辑。
.
通过互联网进行协同编辑
当希望和您一起编辑文档的人与您不在同一个办公网时,您需要通过互联网进行协同编辑。由于Netpad是P2P架构,因此协同编辑时是点到点直接联系。而在茫茫的互联网中,我们是很难找到一台上网的机器而且同时使用了Netpad。为了解决这个问题,我们提供了一个叫做“Netpad协同编辑社区”的网站,只要您在“Netpad协同编辑社区”注册一个用户,而您的机器又能联到互联网,Netpad就会自动登录到“Netpad协同编辑社区”,以使得每个Netpad用户可以相互发现。 具体操作如下:
1. 打开“Netpad协同编辑社区”(http://www.cnetsoft.net)页面;
2. 注册成为Netpad协同编辑社区会员,并记住您的用户名和密码;
3. 启动Netpad,通过Tools=>Preferences=>Collaborate功能设置用户名和密码,如下图:

4. 其中[User Name]和[Password]即为您在Netpad协同编辑社区上注册的用户名和密码。[Editor area color]为您在协同编辑的时候您所编辑过内容的背景色。
5. 点击上图中的[Login]按钮,登录到Netpad协同编辑社区。设置好后,后续启动Netpad时会自动登录到Netpad协同编辑社区。登录成功后您会在Netpad底部的Log窗口中看到如下提示:

6. 登录后,在左侧导航栏上即出现您的协作者,也是在Netpad协同编辑社区中的好友列表,您可以双击这些协作者,看到他们的共享文档,打开后就可以进行协同编辑。
“Netpad协同编辑社区”只是一个中间人,当Netpad用户相互发现对方后,在协同编辑过程中,是不需要“Netpad协同编辑社区”参与的,以更好的利用带宽,并同时减少对集中服务器的依赖。
.
通过办公网(局域网)进行协同编辑
当通过办公网进行协同编辑时,我们认为Netpad的用户是知道自己在办公网中的IP地址等基本信息的。因此,找协作者的过程我们就交给Netpad用户自己去完成了。这样处理的好处是:如果您只通过办公网进行协同编辑,您甚至不需要在“Netpad协同编辑社区”注册用户,也就是说,通过办公网进行协同编辑,无须任何一台中间服务器或中间人,将自由完全交给用户自己,使用上没有任何限制。
如今上网越来越方便,速度来越来越快。同时,用于上网的主要终端“电脑”的配置也越来越高。而现在基于网终的应用没能有效的同时利用带宽和越来越快的电脑:
=>基于WEB的应用:除了无法解决的与用户交互不好问题外,数据安全也是一个问题。而且这种集中是式的服务,一方面用户数过大就会形成网络瓶颈,另一方面却浪费着上面所提到的越来越快的电脑;
=>下载:以BT为首的各种P2P下载应用,充分的利用了带宽和越来越快的电脑,但这大部都是娱乐,与工作无关;
上述这些基于网络的应用,都不能达到协同工作的要求。
那么就让我们从0开始,以满足人们协同工作为目标,开发一些基于网络的应用,岂不是很棒。而协同工作的应用软件又非常多,作为开始,我们选择了最常用的本文编辑器。
1.在准备开发这款多人协同编辑器的前几天,我的几个朋友告诉我,某某服务器发生故障,他们的邮件不能正常收发,但他们却不能做什么;于是,他们建议:希望这个新一代的协同文本编辑是基于P2P的,不要因为某某服务问题造成用户的损失。尤其对于文档而言,万一丢失,损失可不小;
2.对于企业、家庭或个人,他们有很多文档是机密的,安全性很重要。他们不希望将这些文档寄存在别处,而希望放存他们自己的机器中;
3.日常的工作对用户交互性要求很高,在这方面,现有普通的文本编辑做的就非常棒。因此,我们希望这款多人协同文本编辑器也具有同样的用户感受,最好是他们感觉不到用是款协同编辑器;
4.对于通过互联网工作的人们,他们希望通过互联网找到能帮助他完成文档某一部分的工作,因此我们希望建立一个能够方便找到一起协同编辑的人的社区;
Netpad是款文本编辑器,她可以替代您机器上Windows自带的Notepad。
Netpad是WIN32平台上首款真正意义上的多人协同文本编辑:即她支持多人协同编辑。所谓多人协同编辑是指多人(每个人称之为协编者)可以同时编辑同一篇文档,相互协同,共同完成一篇文档的编写,并在协编的同时可以相互讨论。
所以她的名字叫Netpad,来自Notepad,我们Net取代了Note,因此她可以通过网络协同协同编辑。
Netpad启动后,她就通过网络向其它Netpad用户提供服务,您也可通过Netpad使用别的Netpad提供的服务。当您的文档需要邀请别人帮您 一起编辑、阅读、评审时,您就可以共享您的文档,那些受邀人员就可以通过Netpad打开您共享的文档,和您一起协同工作:
1, 您在编辑文档一部分内容时,而您的协编者在同时编辑文档的另一部分,而不会有编辑冲突;
2, 您一边在编辑文档的内容,您的协编者同时在评审您所写的内容,并且在遇到明显的错误时直接修正;
3, 您写的文档是您协编者的参考,你边写他们就可以边参考,而不是在一旁等你写完后再Email给他们;
4, 在您工作时,您可能随时收到您的同事给您发送的协编邀请,让您给他的文档把把关,或者帮他完成一个文档的部分内容;
5, 您和您的同事是一个软件项目的编码人员,您们总是在同时编码一个源文件,现在你们Netpad进行编码,再也不需要check in和check out了;
6, 您和互联网上志同道合者决心做一个开源项目,也想用敏捷开发,也想结对编程,但你们身处异地,相隔甚远。现在你们使用Netpad编程,一个编码,一个同步review,还可以通过“讨论”功能进行实时交流,做到远程结对编程;
7, ……;
除了强大的协同编辑功能外,Netpad几乎支持所有目前流行文本编辑器的常用功能。在这些常用功能的基础上,她还特有以下功能:
1, 书签管理:可以随意增加、删除和修改书签,方便书签间的跳转;
2, 位置历史跟踪:对于较大的文本文件,在阅读时经常要回头看看上次阅读的地方,这个功能就是帮助您方便跳转到您所有的阅读轨迹;
3, 方便的视图放大和缩小:满足您临时放大或缩小字体;
4, 执行DOS命令行:很好用的辅助功能;
5, FTP功能,可以远程联到FTP服务器上编辑服务中的文档,并直接保存;
6, 支持ANSI、UNICODE、UTF编码;
7, 支持文档比较;
8, 支持将文档及格式输出成HTML、RTF等文档格式;
9, 同时她也是款为程序员精心设计的代码编辑器:
1), 支持几乎所有编程语言的着色,如C/C++、Java、PHP、HTML、Perl等等;
2), 支持代码折叠;
3), 支持自动缩进;
4), 支持自动完成;