本能富可敌国,最后却选择拯救世界!Bram的Vim和乌干达儿童

他本能富可敌国,最后却选择拯救世界

在命令行界面输入vim会出现一堆文件,但是一直有这么一句话

Help poor children in Uganda!

“帮助可怜的乌干达儿童”

查询了一下这里面相关的历史背景和知识

在Vim许可证文件结束后的部分翻译

-如果您在 Vim 中找到了乐趣,请阅读剩下的部分,并且考虑一下是不是可以帮助乌干
达的儿童。用这种方式来表达您的喜悦之情。

-如果您想更好地支持 Vim 的开发工作,请考虑成为一名 |sponsor|.
http://vimcdoc.sourceforge.net/vim70/doc/sponsor.html#sponsor

在上面作者提供的sponsor链接中,又找到了另一个关于乌干达的链接

如果您并不想赞助 Vim 的开发或成为一名注册用户,但是想帮助那些贫穷的儿童,请考虑向 ICCF 的荷兰基金会捐赠。这是 Vim 的作者建议我们做的慈善事业。这些钱会用到乌干达南部的儿童中心,那里有很多艾滋病的感染者。参见 |uganda|。
http://vimcdoc.sourceforge.net/vim70/doc/uganda.html#uganda

Kibaale 儿童中心 kcc

Kibaale 儿童中心(Kibaale Children’s Centre 简称 KCC)位于 Kibaale。Kibaale是乌干达南部的一个小镇,靠近坦桑尼亚。这里属于 Rakai 地区。大多数人是农民。虽然人们很穷,但是食物很充足。这是世界上受艾滋病影响最严重的地区,有人说这里是艾滋病的发源地。据估计,有 10% - 30% 的乌干达人受到感染,是 HIV (人类免疫缺陷病毒,即艾滋病病毒。译者)的携带者。由于父母双亡,这里有许多孤儿。在这个
仅有 35 万人口地区,却有大约 6 万儿童失去了双亲或单亲,而且这种状况正在持续。

孩子们需要很多帮助。KCC 一直很努力地提供一些帮助,比如:食物、医疗和教育。食物和医疗使他们保持健康,而教育可以让他们在以后的生活里照顾自己。KCC 是一个以基督教为基础的组织,但是他们为任何宗教信仰的孩子提供帮助。

解决问题的关键是这一地区的教育。然而在 Idi 总统执政期间以及后来的国内战争的几年时间里都把这一问题忽视了。现在政局已经稳定,孩子们和他们的父母有必要学会怎样照顾自己,以及如何避免感染。饥饿的人和生病的人也同样需要帮助,但我们最主要的目的是让他们远离疾病,教他们怎样种植健康的食物。

大多数孤儿都住在亲戚家里,由叔叔和稍大一点的姐姐照顾他们。因为家庭很大,所以收入(即使有的话也)很少。一个孩子如果能得到健康的食物就很幸运了。衣服、医疗、受教育,这些都是奢望。于是,为了帮助这些可怜的孩子,一套捐助程序启动了。一个孩子可以通过人们的捐助来收养。每月捐助几美元,由KCC来管理,给孩子们必须的、卫生的东西,让他们上学。KCC 还帮助孩子们和支持它的家庭做一些别的需要做的情。

除了直接帮助孩子外,孩子们的成长环境也有待改善。KCC帮助学校改进他们的教学方法。
在中心有一个示范学校,老师们可以在那里得到培训。健康的工人接受培训,卫生教育活动也展开了,人们在家里面建造合适的洗手间。我帮忙建设了生产水泥板的地方,水泥板可以用来做一个很好的洗手间。它们的出售价格低于成本价。

我们还建了一个小诊所,可以给孩子和他们的家庭提供一些药物,如果需要,病人可以被转往医院。接种疫苗的程序也已经启动,并且在传染病肆虐的时候起到了作用(麻疹和霍乱曾经是一个问题)。

从 1994 年夏天到 1995 年夏天,我作为志愿者在中心工作了整整一年的时间。其间,我帮助参与了中心的扩建,水质检测和疾病的预防工作。我觉得KCC所提供的这些帮助真的是很有用。现在我回到了荷兰,但是我想继续支持KCC。于是我筹措资金组织了这个捐助项目。请考虑下面几种捐助方式:

1、捐助一个读小学的孩子:每月17欧元(或更多)。
2、捐助一个读中学的孩子:每月25欧元(或更多)。
3、捐助诊所:每月或每季度,数额不限。
4、一次性捐助。

相对于其它组织而言,儿童基金募集的这些钱就显得微不足道了。这是因为款项直接进入中心,其中不到 5% 的捐款用于管理,对于一个志愿者组织来说,做到这一点并不难。如果您想捐助一名儿童,那么您应该有至少捐助一年的准备。

您怎么知道这些钱用到了该用的地方?首先,以我个人(Vim 的作者)的名义向您保证。
我信任在中心工作的人,并且非常了解他们。再者,中心是合作捐资建成的,受到世界宣明会(World Vision), 保护儿童基金会(Save the Children Fund) 和世界关注儿童基金会(International Child CareFund)的审视。我们几乎每年都自费到中心去查看进展状况,我先后在 1996, 1998, 2000, 2001 和 2003 年访问过中心,在 ICCF 的网站上有相关报道。

Bram给捐助的人士提供了一个投票权,作为回报

https://www.vim.org/sponsor/vote_results.php

节选投票结果前5名(2018/10/13)

points voters feature
1 127 (-3) 43 -2 fix all problems, big and small; make Vim more robust
2 113 38 improve syntax highlighting speed
3 104 34 add more and better omni completion plugins
4 98 (-4) 26 -2 improve folding
5 88 26 improve the performance of scrolling and displaying

欧洲以外国家如果捐款

世界其它地方:
通过邮局汇款,这应该在任何国家都可以。
我的名字(护照上的名字):Abraham Moolenaar
如果有可能,请兑换成欧元。
。。。。。。
好像有信用卡还可以怎样,我也不太懂!总之很复杂 ,建议开通支付宝

感谢Bram为我们带来开源的编译器,也希望乌干达的儿童能茁壮成长。

同时在最近刚出来Top20编辑器Vim没有上榜,不禁感叹也许喜欢用Vim编辑器的人越来越少。作为一个Vim编辑器的爱好者,仿佛就像是一个拥有传统工艺的老手艺人!

2018/10/20 更新

Bram Moolenaar
VIM编辑器的作者

Moolenaar先生,能介绍一下你自己吗?

我居住在荷兰东边,现在全职搞开源软件。我一个人生活,这样我就不必供养一个家庭。那会很难,因为我做的大部分工作没有报酬。我在家里工作,这样就避免了因为交通阻塞而浪费时间。我和外部世界的大多数沟通是通过email完成的。为了补偿自己,在假期我会到离家很远的国家旅游。我喜欢了解不同的国家及其文化。


你创造了一个VI编辑器的克隆产品。为什么你会选择VI?


最初那是个偶然的选择。因为在大学的课堂上我们被迫使用这个复杂得可怕的编辑器,却只有一页纸的文档。我开始欣赏VI是很长时间以后的事情了,那时我发现VI让我可以快速编辑文档。一旦我的手指习惯于VI,任何其它的编辑器就显得如此迟钝。因此一旦我拥有了一台amiga计算机,我必须要做一个类似VI的编辑器。那就是我决定开发VIM的原因。


VIM是你从头开发的还是派生于其它的VI克隆?


我开始于Stevie。这是Atari ST电脑上的VI克隆,后来移植到了Amiga。它仍有大量的问题,尚不能完成VI能做的任何事情,但是自从放出源代码,我可以自己修正它们。那也是我怎么开始欣赏软件开源的原因。一旦修改代码的数量超过Stevie最初代码,我就把它命名为VIM。


你是用开源协议发布VIM的,向我们描述一下该协议。为什么你不选择GPL?

VIM和其它许多开源项目的区别在于我完成大部分工作。基本上来说它是我的项目,即使许多其它人曾在工作上帮助过我。我决定什么特性能加进去什么不能。需要考虑一种符合运行该项目的协议。它允许随意部署未修改的VIM副本。修改过的代码我必须能获取到。该协议的一项重要条款是,我可以决定如何处理这些修改。这样如果经过我的允许,一些人就可以把VIM代码用到非自由、非开源的项目中。GPL协议则不允许那样做,因此从那个方面看GPL自由度小一些。理论上你可以在其它协议下使用以GPL协议发布的代码,但是你必须从所有版权人那里获得授权才行。那将非常复杂。实际上我只在很久之前申请了一次特殊授权。VIM的协议从6.1版起升级到兼容GPL。那要求可以部署用GPL协议的代码库编译的VIM副本。这也凸显GPL协议的主要缺点:它事实上是通过限制自由来实行自由的。

籍助于VIM捐助,你援助了乌干达的孩子们。你能看到自己慈善行动的明显成绩吗?

我定期拜访乌干达的孩子中心。每次去那里我都能看到进展。中心的学校在不断发展,我认识的许多孩子持续接受更多的教育。幸运的是,乌干达政局非常稳定,经济也在发展。这让该项目能够专心于改善学校和诊所。这意味着我们寄去的钱真的有助于改善条件并保持长期影响。我们现在看到,孩子完成他们的学业并返回中心工作来帮助教育更年幼的孩子。


最初的ex/vi的设计怎么可能仍如此实用?

基本想法一直是这样的,最重要的命令都是通过键盘的一些标准键来传达的,大多数是字母键。这使我们可以很快输入命令。VIM保留了VI的这一设计,但增加了许多在其它编辑器里发现的特性。这样你在两个世界里都得到了最优秀的编辑器:常用命令可以快速键入,还有一些高级特性可用。


人们通常对它既爱又恨,为什么?


在你能上手之前你要花费很长时间来学校Vi或VIm。如果你只试用十分钟就放弃它,那么你将只会记住受它折磨的痛苦时刻。当你不曾花费时间学习超越基本命令的部分的时候,你将不会获益于可能的有效编辑。但是当你的确学会使用Vim时,你能非常有效地工作,并会喜欢使用它。之后你会开始觉得其它编辑器很麻烦。比如,大多数其它编辑器不能重复一项变动。当我偶然使用word,结果我在编辑器里输入了":w"和"jjj"。


是的,比如当记笔记时这非常有帮助。当你在VIM上工作时你在用VIM吗(开玩笑)?

当然了。我用Vim来处理所有问题。大多时间使用最近版本,这样如果我犯了某个错误,我会是第一个注意到的人。


关于这个问题你透露一下:你使用什么操作系统?

我的主战场运行于freebsd4.9。它非常可靠,虽然有一些保守。我的桌面是KDE,虽然在实际工作中我大多时间运行xterms。我也有一台运行windows的机器,它用来进行Vim开发和运行一些驱动程序只兼容windows的特殊硬件。偶然我也切换到我的Amiga2000机器上,Vim开发是在那里开始的。


我们(整个编辑部门)常常使用Vim,我们认为它的开发已经结束。你认同我们的观点吗?


我也奇怪我是否应该停止加入特性并只是修改bug。所以我让赞助人投票决定是否加入某个特性。其中一项就是“停止加入特性,已经足够了”。它位于投票列表的最底端,这样就很清楚Vim用户的确希望加入新的特性。


所以你不想和Knuth先生对待他的Tex那样的激进。
告诉我们有关编辑器整体设计的一些事情,你使用什么语言和技术?

我使用优秀的古老的C代码。为了和足够多的C编译器兼容,我在使用现代C编译器的某些特性方面非常保守。这大多时间只出现在GUI代码里,无论如何它还是需要一个现代C编译器。主代码甚至不使用ANSI函数原型,因为它们不兼容那些更古老的系统。使用纯C的主要优势在于它相对来说简单一些,有很多可以使用的工具。代码体积可以庞大一些,需要在释放分配内存时小心一些。但是它比C++容易得多。像Java或Python这样的语言可能更容易一些,但是他们运行起来要慢很多。

你认为Vim太艳丽了么?

在Vim里有很多途径来改变颜色。我个人更喜欢只对少数情况配色。它使快速辨认不同的文本块变得非常容易。你可以在C语法高亮里看到配色结果,这样很容易就找到注释。但并不是每块文本都高亮。运算符或函数名并不高亮。一些人写了对所有高亮每块文本的语法脚本,如果你不喜欢那样你可以修订语法脚本规则,为更多的规则选择标准文本颜色。


告诉我们一些关于最近稳定版本的新特性。


Vim6.3加入了一些新特性。我专心于修正所有报告的bug。加入了一些命令,主要为了使写脚本更为快捷。比如:keepjumps使我们可以在不影响跳转表(jumplist)的情况下在文件间跳转。一个真正的新特性是支持翻译的帮助文件。那是因为现在有意大利和法国的文档翻译。这样用户需要通过“helplang”选项来选择他们喜欢的语言。以后会陆续增加更多的文档翻译。


你的近期和长期计划是什么?

Vim7将加入许多新特性。我已经开始加入人们发送给我的补丁。现在已经支持KDE了,使用的是Qt库。已经支持在PostScript打印机打印多字节文本。我计划往Vim脚本语言中加入列表和字典,这样使编写高级脚本变得更容易些。Vim脚本语言起初非常简单,但是Vim用户用它编写了越来越多的复杂脚本。在www.vim.org上可以发现超过一千个脚本。加入两个数据类型会使脚本编写更为简单。不知何故Vim用户不喜欢使用Python和Perl接口,这样扩展Vim脚本语言是势在必行的了。

我也计划加入一些大特性。我会用投票列表来决定先加入哪个。目前位于列表顶端的是智能补全,也可以称之智能感知(intellisense)。那个实现将是个挑战,尤其假设它应该支持许多语言和所有的平台。

我也需要清理一下代码。大量东西被加入,长时间的修改,导致代码混乱和函数冗长。这不仅是为了使代码看起来好看,它也应该避免犯错误。一些部分已经变得非常复杂,要想修改而不引入新的bug非常困难。但是我很谨慎,代码清理本身也可能引入问题。为了防止这种情况,需要增加更多的测试,这也是Vim7的另一个目标。


你认为linux发展的方向正确吗?

我不认为对linux而言只存在一条路径。它可以在同一时间无错误地往许多方向发展。我的确看到了一个危机:目前的linux开发大多数是由技术人员驱动的。他们是为linux工作机制做选择的最佳人选。商业和市场人员将尝试把linux朝不同方向推动,目的只有一个:赚更多的钱。我确实希望,这将不会导致错误的选择。


你害怕软件专利权吗?你在源代码里有专利审计吗?

我意识到软件专利权的危机。幸运的是,在欧洲软件专利权仍未被承认。这意味着要想控告我个人在代码里使用有专利的概念是困难的。仍存在一个危机,公司可能停止部署Vim,因为他们需要通过我的授权。这仅是一个很小的风险,因为我没看到哪家公司因为停止部署Vim而获利。很明显,没人会向他们支付一笔协议费。我将只是删除那些侵权代码。

专利审计只能由那些管理大量钞票的专门人员来完成。为Vim不值当做那些。我不确信为了几篇代码的小软件值得那样做,因为为了发布软件那将需要好几年才能申请下来一个专利。因此甚至当审计不出任何问题,次年才出来的专利仍会导致问题。专利系统执行情况实在太恶劣了,尤其在美国。真正获利的人只有那些律师和专利局的雇员。那就是为什么他们是承认软件专利权的主要支持者。



如果软件专利权被承认了并且一些公司为“使用H,J,K,L来移动光标移动”申请了专利,你将采取什么措施?我们说的一些拥有商业化vi克隆产品的公司,他们想消灭对手。你会从vim里移除这项特性吗?

不可能为已经众所周知的方法申请专利。这被称为现有技术(prior art)。很明显像使用hjkl来移动光标这样的方法在专利申请之前就已经存在了。然而,专利局不可能知道这个,无论如何也会授权该专利。那时我将不得不为了自卫而展开一场合法的战争。我不知道我从哪里获得这笔活动资金。专利律师太昂贵了。


感谢你接受这次采访,我们希望你在个人生活和职业生涯都能取得成功。

--------------------------------------------------------------------------

原文:http://www.moolenaar.net./interv_czech_en.html
译者:http://www.yeeyan.com/space/show/joshyu

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/382549.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Linux基础查漏补缺

文章目录第二遍重新回顾Linux基础查看主机名修改主机名查看IP地址Linux的 “--”和“-”根目录文件的意义和作用alias直接在命令行界面输入firefox数组越界发生什么命令行光标移动的几个操作重定向第二遍重新回顾Linux基础 1.查找忽略的知识点 2.再次记忆一些基础知识 3.巩固基…

linux 常用命令02--文件属性 以及软硬链接

文件属性和用户用户组 通过ls-l 显示文件详细信息 drwxrwxr-x 2 user usergroup 4096 10月 30 20:55 stu1drwxrwxr-x d代表目录文件, -代表普通文件 rwx rwx r-x 归属用户的权限 归属组的权限 其他用户的权限 权限位数字表示法(8进制数…

linux查漏补缺之常用命令

wc命令 -c, --bytes, --chars输出字节统计数。-l, --lines输出换行符统计数。-L, --max-line-length输出最长的行的长度。-w, --words输出单词统计数。grep命令 图解

思维导图:面试小结

文件:思维导图

蒙特卡洛法求圆周率100亿数据

代码 import time import random hits0 pi0 DARTS100000*100000 starttime.perf_counter() for i in range(DARTS):x,yrandom.random(),random.random()distpow(x ** 2y**2,0.5)if dist < 1.0:hits1 pi4*(hits/DARTS) print("圆周率的值是{:.10f}".format(pi)) p…

linux gcc 简单使用记录01

大体编译流程 gcc 参数&#xff1a; I 包含头文件路径 L 包含库文件路径 l 库名 比如libxxx.so 对应着 -lxxx(掐头去尾) O 优化选项 1&#xff0c;3 W 警告 all 显示更多的 c 编译成 .o 文件&#xff08;二进制&#xff09; E 输出到标准输出&#xff0c;宏替换&#xff0c…

Ubuntu 18的中文界面切换《图解教程》亲测成功

然后找到Chinese simple 把汉语挪到第一行

linux gcc 制作动态库

编译与位置无关的代码&#xff0c;生成.o&#xff0c;关键参数 -fPIC createlibso目录下 ├── cheng.c ├── chu.c ├── head │ └── test.h ├── jia.c └── jian.cgcc -fPIC -c *.c -I ./head在createlibso目录下生成 与位置无关的.o文件 ├── cheng.c ├…

Ubuntu的中文是哪种字体?python的词云分析和 三国演义人物出场统计

Ubuntu的默认中文是哪种呢&#xff1f; fc-list :langzh 用这个命令查看出来 NotoSerifCJK-Bold.ttc 为什么要知道这个呢&#xff1f; 来看一块python3代码 import jieba import wordcloudf open("threekingdom.txt","rb") t f.read() f.close() ls …

linux 系统课程-进程控制01

进程的状态转化 进程拥有四种状态&#xff08;切换&#xff09;&#xff0c;他们之间的关系如图 运行 挂起 终止 就绪内存管理单元 MMU &#xff08;Memory Management Unit&#xff09; mmu 负责 a. 虚拟内存与物理内存的映射 b. 设置内存的访问级别 pcb 进程控制块 环…

linux c++ 多进程初步01

fork函数 fork函数 ps ajx 这个命令可以查看进程与进程之间的血缘关系 kill 给进程发送一个信号SIGKILL 9号信号kill -SIGKILL pik 杀死进程进程共享 子进程会复制父进程的几乎所有信息&#xff1a;子进程复制父进程用户空间所有数据&#xff1b; 子进程复制父进程内核空间P…

Ubuntu怎么设置桌面快捷方式(图片详解)

然后找到你要的copy然后到桌面&#xff0c;点开然后允许权限&#xff01;就搞定了

linux C++ 多进程初步02

ps:疑惑的地方&#xff0c;1 进程pcb的概念&#xff0c; 还有 ulimit -a 显示的信息 是一个进程可以最大占用资源的上限吗&#xff1f; 还有 文件描述符的概念&#xff1f;&#xff1f; 这里不是很明白&#xff01;记录一下2还有WIFEXITED 孤儿进程 与僵尸进程 孤儿进程&#…

软件工程学习笔记《一》什么是软件工程

文章目录软件工程学习笔记目录软件工程过程软件工程方法软件质量软件质量如何评价软件的质量模型ISO9126模型易用性&#xff1a;效率可维护性可移植性为什么内存缓冲区是2048或4096软件工程学习笔记目录 [https://blog.csdn.net/csdn_kou/article/details/83754356] 单纯摆出一…

linux C语言 文件相关知识01

ps:文件描述符表&#xff0c;与文件指针 有什么联系&#xff1f;&#xff1f;&#xff1f; 1. linux 系统&#xff0c;一般一个进程 允许打开的最大文件数量是 1024&#xff0c; 对应内核区的进程控制块&#xff08;pcb&#xff09;中的文件描述符表的范围&#xff0c; 在shell…

软件工程学习笔记《二》代码规范

文章目录软件工程学习笔记目录google代码规范节选python来自google翻译错误注释的示例命名规范import语句的规范import this 源码软件工程学习笔记目录 [https://blog.csdn.net/csdn_kou/article/details/83754356] google代码规范 https://github.com/google/styleguide 节…

PyCharm和git安装教程

文章目录先到官网下载git进入setting&#xff0c;如黄色部分如果你用的是github那么直接setting登陆就行了如果你是gitee的话首先进入setting然后Plugins点击browse查找gitee如图所示&#xff01;最后点击重启ok《不要自己关闭&#xff0c;否则安装失败》安装好了以后,输入你的…

linux 进程通信子mmap

mmap 文件–内存映射 函数原型 #include <sys/mman.h>void *mmap(void *addr, size_t length, int prot, int flags, int fd, off_t offset);参数介绍&#xff1a; add 传 NULL length 映射区的长度 protPROT_READ 可读PROT_WRITE可写 flagsMAP_SHARED 共享的&#xff0c…

linux信号学习02

未决信号集与阻塞信号集(信号屏蔽字) 阻塞信号集&#xff1a; 将某些信号加入集合&#xff0c;对他们设置屏蔽&#xff0c;当屏蔽x信号后&#xff0c;再收到该信号&#xff0c;该信号的处理将推后(解除屏蔽后) 未决信号集&#xff1a; a. 信号产生&#xff0c;未决信号集中描述…

软件工程学习笔记《三》代码优化和性能测试

文章目录软件工程学习笔记目录如何在开源社区提问&#xff1f;代码审查代码优化运行结果参数解释代码优化原则对常见的数据结构排序算法进行测试关于冒泡排序优化的探讨结果软件工程学习笔记目录 [https://blog.csdn.net/csdn_kou/article/details/83754356] 如何在开源社区提…