Humanity

Edit the world by your favorite way

vim-jpがつないだVimプラグイン開発者とVimパッチ職人、もしくはなぜ最近Vimコミュニティが活発になったのか

ばよえ〜ん(訳:Vim Advent Calendar 2012への11回目の投稿です)
この記事はVim Advent Calendar 2012の115日目の記事になります。
114日目は@rbtnnさんのsetコマンドでエスケープすべき文字でした。


vim-jp以前ってmattnさん以外、Vimパッチ職人*1の人たちはあんまりLingrに寄り付かなかったなー。という事をふと思い出したのでなんとなくちょっと前のことについて書いてみる。
というより、何時の間にか書きあがってた。
取りとめないし、主観が多分に混じってると思う。


ここでいうVimパッチ職人、Vimプラグイン開発者はだいたいこんな感じ...
すごい大雑把な分け方なのでちょっとあれだけど...

Vimパッチ職人 mattnさん、KoRoNさん、中平さん、h-eastさん、...
Vimプラグイン開発者 thincaさん、Shougoさん、ujihisaさん、tyru(自分)、...

vim-jp以前

vim-jp以前、Vimパッチ職人&運用者は各々ブログやTwitterで、Vimプラグイン開発者はそれに加えてLingrでも情報発信していた。


Lingrは、なぜか今のvimrc読書会もないのにほぼ毎日書き込みがあった。
自分も書き込んでたけど、thincaさんとShougoさんがガンガンコミットやVimプラグインについて話し合ってるのを見て触発された。
あとはvim.orgやvim_devやvim_useで名前をよく見かける人については覚えてる程度。
あと前からあったvim_jpって名前のメーリングリスト(紛らわしい)。
当時のVim情報としてはLingrと、LingrのメンバーによるVim Hacksが大きかったと思う(少なくとも自分にとっては)。

vim-jp結成

そしてvim-jpができた。
GitHubのアカウントが先か、vim-jp.orgが先かは忘れた。結成した経緯も忘れた。


主な活動は日本語help
それ以前はGoogle Codeに置いていたのをGitHubに置けばpathogen(今だったらneobundleだろうけど)で管理できて更新も楽になるから、GitHubに置いてほしいみたいなことを誰かが言ってたような気がする。


でもまだその頃の主だった活動はtypo報告ぐらい。
thincaさんがガンガン報告してた記憶がある。(ぶっちゃけ自分が見てても結構あったし...)
Shougoさんは今と変わらずLingrTwitterで聞いたバグを黙々と修正したり、機能追加してた。ブレない。

issuesリポジトリ

だけど、その後vim-jpにissuesリポジトリができてから一気に変わった。
その時の事についてはmattnさんの記事が詳しい。
Big Sky :: 個々の作業はチームを作る事で効率を上げられる


もともとVimプラグイン開発者の間で何個もVimのバグらしき挙動は見つかってたけど、なかなかパッチ書くのはしんどい。なので放置されていた。
でもissuesリポジトリができ、積年の間積もり積もっていたバグ報告の場が設けられたことで、バグはどんどん報告され、Vimパッチ職人達の手によってまたたく間に修正されていく。
この勢いは本当半端なかった。みるみるバグが修正されていくのを見るのは爽快なんてもんじゃなかった。興奮していた。Vimパッチ職人の仕事の早さに感動していた。


しかも、それだけじゃない。
Vimプラグイン開発者達が書いたプラグインVimのバグと思しき挙動があるたびに報告する「流れ」が出来上がった。
もちろん最初は(自分含め)Lingrでよく発言してたVimプラグインをよく書いてる人達ばっかりだったけど、何時の間にかLingrのメンバー自体増えていた。
新しく入ったメンバーの人達は、「Vimのバグっぽかったんで報告したよー」な流れを見ていたため、自然とそれに倣うようになった。


更にそれに飽き足らず、Vimscriptの貧弱さにいい加減うんざりしていたVimプラグイン開発者達がVimscript書く上で欲しい機能のアイデアまでissuesに投稿するようになった。
そして機能追加パッチまで活発に投げられるまでになった。


報告する上でのテンプレートはない。
あるのは大まかなワークフローだけ。
足りない情報があれば都度聞かれる。
この挙動はなぜ問題だと思ったのか。
helpに記載がある(=仕様)のかどうか。
パッチを取り込ませるために、どうやってBramを説得すればいいのか。
また、Vimの画像を効率的に集めるためには?
日夜Vimmerは話し合っている。

「参加障壁?そんなのあったっけ?」

このような激動の流れの中、Vimコミュニティの参加障壁がどんどん押し下げられていく、というよりKoRoNさん曰く「(vim-jpは)気付いたら参加させられている」。*2
ハタ迷惑だと感じる人もいるかもしれないが、このうっとうしさこそVimコミュニティの真骨頂(?)とも言えるかもしれない。
「バグ報告したと思ったら『とりあえずアサインしといたよ』と言われた。な、何を(ry」となることもある。
振っても大丈夫そうだと思われると容赦なくタスクを振られる。
しかし振っておいて無理となればちゃんと助け舟を出してくれる(はず)。
ただしまぁOSSなので基本的に興味ベースで皆動いている。
なのでissue自体に興味がない場合、容赦なく放置される可能性もあると思われる。
(KoRoNさんのvim-jpのスライドを見てもらえると雰囲気がつかめるはず)

そして、今に至る

そうして、Vimプラグイン開発者は魔界とも言えるソースコードに踏み込めるVimパッチ職人のバイタリティに畏れ敬いながらVimのパッチを書きつつ、
Vimパッチ職人は貧弱なVimscriptをカバーするための変態的なハックの数々を平然と繰り出すVimプラグイン開発者の変態さに驚きつつ、
互いにノウハウを共有しながら、段々と両者の垣根がなくなっていく。
そもそも垣根なんてものは活動場所の違いだけで、みんなVimに関する事をやっていたのだから、当然のように一緒に活動するようになった。


Vim Magazineが始まった。
vim_devでパッチを一つ一つ見なくても済むようになった。
しかも最近は機能追加と修正のパッチを分けて表示までしてくれている。
vim.orgのフィードを巡回しなくてもまとめ読みできるようになった。素晴らしい。


vimrc読書会が始まった。
vimrcはVimscriptだから、Vimプラグイン開発者の変態的なアドバイスが聞ける。
mapは必要ない限りnoremapにした方がいい。
g:に続いて関数を定義するのはBramも想定してない書き方だからやめた方がいい。いつ動かなくなるか分からない。というか以前こんな書き方してたら突然動かなくなって...
あぁここはこんなオプションに影響されるからこうした方が...
こういう風に短く書いた方が速いよ... 等々。


これらのイベントは一人あるいは数人の思い付きだけど、今も続いてる。
しかも、どちらもただの一回も休まずに続いてる。
何があの人達をそこまで突き動かすのか...


ただ確かなのは、vim-jpのメンバーを見ていると、今後も新しい事が起きるだろうというワクワク感を感じている事だ。
最近はVimscriptをパースするvimlparserというライブラリを使い、ランタイムでLuaに変換して速度を100倍向上させ、さらにLuaJITを使うことで速度を1000倍向上させる試みも進行中で、見ていて飽きる事がない。アイデアがどんどん湧いてくる。
自分もこれからvimlparserで面白いものを作ろうと計画している。

回想

実は、Vimテクニックバイブルの発売日とissuesリポジトリが作られるのはほぼ同時期だ。
というか、今気付いた。
Vimテクニックバイブルが執筆されてる頃から徐々に人が集まり出したような気がする。


vim-users.jpができて、IRCができたり*3、その後Lingr@vim-users.jpに移動したり*4Vim Hacks ProjectやReal Vim Hacks Projectが始まって、記事が活発に投稿されたりしているので「なんだかVimコミュニティ元気良いなぁ」という印象を持つ人が増えて、Vimテクニックバイブルが発売されたりVim 7.3がリリースされたりして、段々とVimの記事&記事を書く人が増えていった、といった流れだと思う。
傍から見たら楽しそうに見えたんだと思う。
実際楽しかったし、今はもっと楽しいけど。

*1:他に言い方ないしこう呼ばせて頂く

*2:このコメントどこで見たのか、ググっても見つからなかった...

*3:自分はこの頃いなかったのでよく知らない

*4:詳しい経緯は忘れたけど、自分はこの頃すでにVimscriptを書いたりしててthincaさんにLingrに招かれて参加した