Date: 2013-12-15
Tags: python, sphinx

Sphinx-1.2 をリリースしました & 1.3の計画

Sphinx-1.2リリース

先日、12/10(火)に Sphinx-users.jpの総会 を行いましたが、ちょうど総会開始1時間ほど前に Sphinx-1.2がリリース されました。

昨年2012年11月頭にSphinxのco-maintainerになり(コミッターとは違うの?)その年の年末から年明け頃にリリースされるはずだったバージョン1.2ですが、1年かかってようやくリリースすることができました。

リリースメールに更新のハイライトを箇条書きで載せましたが、主に自分がコードを書いたのは以下のような部分でした。

  • Python 2.4 サポートの終了 (Georg)

  • Python 3.3 サポートの追加 (清水川)

  • 国際化機能の改善 (清水川)

  • ビルダーの改善: html, texinfo, latex

  • ビルダーの改善: gettext の出力対象範囲拡大 (清水川/knzm2011)

  • ビルダーの改善: text の全角文字幅出力対応 (清水川)

  • ビルダーの追加: xml, pseudoxml (Jon)

  • 拡張の追加: sphinx.ext.linkcode

  • 非ASCII文字列ディレクトリ名・ファイル名に対応 (清水川)

  • テーマプラグイン機構の追加 (清水川)

  • 10個のロケールを追加・更新

  • 並列ビルドオプション -j を実験的に追加 (Georg)

  • ドキュメント追加: 詳細な "Sphinxのインストール" (r_rudi/清水川)

  • ドキュメント追加: 詳細な "Sphinx開発者のためのガイド" (Jon)

他に、バグ修正もけっこうがんばったので主張しておきます。ただし、新しい実装にバグがあったら自分が埋め込んだ可能性が高いですね。はい。

総会までにリリース出来ればと思いGeorgにリリースの相談をしたところ、 Since you've done so much for this releases I feel that you should be the one at least to do the announcement -- if you like. という感じで、リリースアナウンスを任されたのが超嬉しかったです。 [1]

1年間、Sphinx開発して思ったこと

コードのクセを把握するまでけっこうかかりました。不具合にしろ機能追加にしろ、必ずテストを書いてから変更するようにしていましたが、そもそもその機能がどんなものか調べたり、既存のSphinxのテストはあまり充実していないため、どうやってテストを書けばいいか調べたりでかなり時間がかかる作業でした。Sphinxのテストコードはだいぶイケテナイので、これから改善のし甲斐がありますね。

しかし、そういう技術的なことよりも、報告されるIssueのうち、何を取り込んで何を却下するのかが悩ましかったところです。Sphinxは十分に複雑なコードになってしまっているので、「より便利になる」という視点で機能を取り込んでいくとコードが更に複雑化してしまうので、「本当に必要な機能」を選んで実装していかないといけないし、むしろコードと機能を減らしていきたいところです。さしあたっては、古いPython対応コードを削除するとか。

Sphinx-1.3の計画

ということで、1.3に向けては、新機能を入れるよりも、コードを削減してテストを速く書けて、速く実行できるようにする、という辺りをやりたいと思っています。

まだ誰とも相談してないですが、自分が思ってるSphinx-1.3の計画です。

  • Python-2.5 終了 (2.4対応コードも残っているので削除)

  • Python-3.1 終了 (コード削除)

  • docutils-0.7, 0.8, 0.9 終了

  • PILをやめてPillowを前提とする

  • 2to3によるPython3対応をやめてsixを使う

  • Python-3.4 追加

  • sphinx-intlの機能を取り込み

  • testの分割、特に肥大化してるrootディレクトリを細分化

  • testの高速化 1回実行するのに4,5分かかる

利用者としては嬉しいところあんまりないかも?機能の要望があれば、Sphinx-users.jp MLまでご連絡下さい。

個人的には Unihandecode を使って日本語文字列をひらがなでindex対応させたいとかあるけど、日本語だけうれしい機能って「本当に必要な機能」な気がしないのでたぶん無理だろうなあ。1.2で対応した非ASCII文字列パスは、日本語以外の非英語圏で使えるのでまだセーフかなと思ってるけど、価値と負債の損益分岐点ギリギリな気がする。

うーん、1.3リリースに向けての作業は、Sphinxの価値と向き合う期間になりそうですね。