2014-02-23

興味深かった記事

Ubuntu desktop moving application menus back into application windows | Ars Technica

UbuntuのUnityは、長らくウインドウのメニューをウインドウ自体ではなく、画面上部のバーに表示するUIを採用してきた。これには賛否両論あったが、賛同する者達でさえ、問題点は皆無とは言えない状況であった。

グローバルなバーが表示するのは、現在フォーカスのあたっているウインドウのメニューであるので、ダイアログを開くソフトウェアなどが使いづらい。

Ubuntu 14.04では、どうやらメニューをウインドウごとの表示に戻すようだ。

The world’s fastest VP9 decoder: ffvp9 | Ronald S. Bultje

ffmpegによる、最初から自由なVP9デコーダーの実装ffvp9を開発し、Googleの実装であるlibvpxと比較した結果、ffvp9の方がパフォーマンスで上だったという主張の記事。

H.264を使うよりは、Googleが邪悪であるそぶりをみせないうちは、VP9を使ったほうがまだマシだという気がする。ただし、真にクソのような物理法則と関わらないにも関わらず認められている特許から解放されるためには、いまと全く違った動画の圧縮技術が必要とされる。

neovim/neovim

Neovimというレポジトリだ。

確かに、Vimは世界一素晴らしいエディターであり、Vim本体とプラグインには多数の開発者がいる。Vimより優れたテキストエディターが存在しない現状で、Vimの牙城は少しも揺るがない。

しかし、Vimのコードは汚い。20年以上もの歴史を持ち、いまだにC89を使っていて、30万行もあり、その全容を理解している者は少ないし、理解しようという勇者も少ない。

さらに、事実上唯一のメンテナーであるBram Moolenaarは、パッチの受付にとても保守的である。というのも、一度パッチを受け入れたならば、そのコードは、彼が一生保守しなければならないのだから。

Neovimは、現在のVimのソースコードを劇的にリファクタリングすることを目的としたプロジェクトで、以下の目標を設定している。

  • 保守を簡単にし、バグ修正や機能をマージする速度を改善する
  • 複数の開発者で作業を分担できるようにする
  • コアのソース部分に手を加えずに、新しい近代的なユーザーインターフェースを実装できるようにする
  • コプロセスベースの新たなプラグインアーキテクチャにより、拡張性を高める。エディターから特別にサポートしなくても、プラグインを好きな言語で書けるようにする

レガシーコードや、対象コンパイラーがC89という制限を完全に撤去する。また、いままでVimが独自にやっていたプラットフォーム別の実装も、既存のライブラリを利用する。

プラグインは、それぞれ別のプロセスで動作させ、stdin/stdoutを経由して、msgpack-rpcかjson-rpcでプロセス間のメッセージやりとりで動作するという。これにより、Vimのバイナリで言語を一つづつサポートする必要はなくなる。

このマルチプロセス設計は、GUIアーキテクチャにも適用される。Vimのコアプロセスと、VimのGUIプロセスは分離され、これもやはりstdin/stdoutを経由して、プロセス間のメッセージやりとりで動作する。

これはあくまでVimの大幅なリファクタリングであって、Vimのゼロからの再実装ではないし、VimをIDEへと変身させるようなものでもないという。

freenodeで#neovimが作られている。

No comments: