neovimの件。neovimについてそんなに詳しくはないし、vimについても興味はあまりないし、リファクタリングすることについてはいいことだと思うので別にこのポストを批判するわけでもなんでもなくて。
ちょっと思ったのは、「良いソフトウェアは良いコードである」もしくは「良いコードであれば良いソフトウェアである」とは必ずしも言えないということ。ベストプラクティスな見地というか、ソフトウェアのお作法からみればお粗末なコードであっても実用的で良いものはゴマンとある。Vimもその一つなのだろう。
歴史的な背景というか、そのソフトウェアが歩んできた歴史の爪痕のようなものが、コードを混沌とさせることはよくある。私はその混沌さという部分にむしろ愛着を感じてしまう。洗練された設計のコードはもちろんアリだが、歴史をひきずり紆余曲折を経て混沌としたスパゲティなコードもありかなと。
私がそういうのを感じたのは「STED」というMIDIシーケンサーのコードを読んだ時である。このソフトはX68000で作られ、Windowsにも移植された。そのWindowsのソースコードをみるとアプリのコードはX68000のコードほぼそのままで、BIOSコールをエミュレートするコードを付け足したものであった。直接APIを呼べば簡素になるし、古いCで書かれているせいか変数名も極端に短いし非常に読みにくいけれども、なんかこうX68000の元コードをそのまま尊重して固定しておこうというような意志も感じられるような気もしてなぜか嬉しく思ったのである。単に移植が面倒なので下駄をはかせただけかもしれないけれどもね。