本能富可敵國,最后卻選擇拯救世界!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.pswp.cn/news/382549.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/382549.shtml
英文地址,請注明出處:http://en.pswp.cn/news/382549.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

linux 常用命令01

/bin/bash 就是linux默認的shell ls命令 ls -a 顯示所有文件 包含隱藏文件 ls -R 遞歸顯示子目錄 ls -l 顯示詳細信息 ls -lrt 按照時間排序,顯示文件信息 配合通配符使用 ls *.c *匹配任意多個字符 ls xx.? 匹配任意一個字符 cd 命令 cd - 為切換到上次目錄 cd 回…

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命令 圖解

linux 常用命令03--修改文件的權限與歸屬

chmod 命令 改變文件權限 第一種: chmod [u|g|o|a] [|-] [r|w|x] filename 比如: chmod ux filename 給所屬用戶增加執行的權限第二種: 給a.out 文件,所屬用戶可讀可寫,所屬組可讀可寫,其他的讀 chmod 06…

思維導圖:面試小結

文件:思維導圖

linux 常用命令04 查找和檢索

先說一下 文件的基本類型 文件類型 l 符號鏈接文件(軟連接) b 塊設備 (磁盤文件)c 字符設備p 管道設備(pipe)s 本地套接字(網絡編程)- 普通文件 用find命令的時候&…

linux 常用命令05 常用的壓縮與解壓縮文件

zip/unzip ----zip格式 使用方式:zip -r 壓縮包名 原材料 -r代表遞歸子目錄 原材料可以有多個 例如:zip -r bb.zip bb hello 對應的解壓縮:unzip bb.zip .gz格式的壓縮包 gzip和gunzip tar 最常用打包工具 .tar.gz tar相應參數介紹 -c 壓縮…

apt-howto

https://www.debian.org/doc/manuals/apt-howto/index.zh-cn.html#contents

Linux系統監控shell腳本

開源項目 https://github.com/atarallo/TECMINT_MONITOR #! /bin/bash # unset any variable which system may be usingunset tecreset os architecture kernelrelease internalip externalip nameserver loadaveragewhile getopts iv name docase $name ini)iopt1;;v)vopt1…

linux ubuntu 軟件安裝的三種方式

apt-get 自動安裝軟件,解決依賴關系 sudo apt-get update 更新源 源在 /etc/apt/sources.list 文件中sudo apt-get install softwarename sudo apt-get remove softwarenamedpkg 根據deb安裝包來安裝軟件 dpkg 是“Debian Packager ”的簡寫 sudo dpkg -i xxx.de…

linux 用戶管理以及其他命令

設置用戶組 sudo groupadd test 增加test用戶組創建用戶 選項: -s 指定shell -g 指定組 -d 用戶家目錄 -m 家目錄不在時,自動創建 sudo useradd -s /bin/bash -g test -d /home/newuser -m newuser設置密碼 sudo passwd newuser切換用戶 su xiaowan…

蒙特卡洛法求圓周率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…

No module named 'Tkinter'

sudo apt install python3-tk這一句就搞定了。網上長篇大論也真是醉了

Linux gcc 制作靜態庫01

制作步驟 編譯為 .o 文件 createliba目錄下 結構為 ├── head │ └── test.h ├── jia.c ├── jian.c ├── cheng.c ├── chu.c 這4個源文件&#xff0c;提供 - * /算數運算&#xff0c; 使用了 head目錄下 test.h文件 先編譯為.o文件 gcc -c *.c -I./head l…

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 進程控制塊 環…