2012-12-17 [長年日記]

前回の続き

体調不良で二日ほど穴をあけてしまったが、前回ひとまず完成したので、公開にむけたタスクを消化していく。Dive Into Pythonとか、setup スクリプトを書くとかを参考にしながら。

パッケージ名・モジュール名

作り始めた当初はとりあえず作り始めてしまったので、プロジェクト名はtrac、プラグイン名/パッケージ名/モジュール名/クラス名は適当すぎるQueryStatusHelperPlugin, query, doubleclick, Checkbox になっている。これら、公開するにあたり不自然ではないか?

パッケージ名は、実行環境のほかのモジュールから、from __package__ import __module__ で一意に特定して参照できる必要がある。つまり、このままだとfrom query import doubleclickである。これではちょっとおこがましい。http://docs.python.jp/2/py-modindex.html に掲載されて、おいおい違うよ、と言われない程度の名前がいい。

そこで、from uiassist import query くらいでどうだろうか。ちょっと範囲が広い気がするけれども、さっきのよりかはずっといい。

ライセンス

先人いわく、自分のソフトウェアをオープンソースとしてリリースしたいのであれば、

  1. 独自のライセンスを書いてはならない。
  2. 独自のライセンスを書いてはならない。
  3. 独自のライセンスを書いてはならない。
  4. ライセンスがGPLである必要はないが、GPL互換である必要がある。
  5. 独自のライセンスを書いてはならない。
と教えている。

これに従い、ライセンスを選択していこう。tracは今日時点では modified BSD licenseを選択しているので、これを踏襲するのがよいだろう。あるいはさらに「名前を借りてはならない」という制限がなくなった 2-clause BSD LicenseMIT License、特許で訴えないことを表明している Apache License 2.0 などを選択するのもいい。GPLとの同梱を意識して、MIT or GPL のデュアルライセンスである例もよくみかける。

分類

先人の教えに従い、分類情報をPyPIのリストに従って追加する。Programming Language, License, OS, Development Status, Framework くらいをつけておけばいいかな。

コーディングスタイル

守るべきは、まずはTracのスタイル。すなわち、

  • (not) have long lines
  • (not) have multiple statements per line
  • (not) break the naming conventions
および PEP 8 (日本語) あたり。

あらら。javascriptの名前つき関数の作法*1JavaScript: the Good Parts のそれ*2 と矛盾する。自分のポリシーには反するけれど、コミュニティのポリシーに合わせておくべきなので、ここは素直に直すことにしよう。

*1 function fooBar() {...}

*2 var fooBar = function() {...}

ドキュメンテーション

少なくとも、setup.py の description, クラスのDOCSTRING はつけておく。tracのadminページと、我らがDeveloperPluginのAPI機能で表示してもらえるので。

反映したsetup.py

from setuptools import setup, find_packages
    
version = '0.1'
    
setup(
    name='QueryStatusHelper',
    version=version,
    classifiers=[
                  "Programming Language :: Python",
                  "Programming Language :: Python :: 2.6",
                  "Framework :: Trac",
                  "Operating System :: OS Independent",
                  "Development Status :: 3 - Alpha",
                  "Intended Audience :: Developers",
                  "Intended Audience :: Information Technology",
                  "License :: OSI Approved :: BSD License",
                  "Natural Language :: Japanese",
                  "Topic :: Software Development :: Bug Tracking",
                  ],
    license='Modified BSD',
    author='MATOBA Akihiro',
    author_email='moc.liamg@skcah-cart+aabotam',
    url='http://trac-hacks.org/wiki/matobaa',
    description='On Query page, flip checkbox status on double click it\'s label',
    install_requires=['Trac >= 0.12'],
    packages=find_packages(exclude=['*.tests*']),
    package_data={
        'uiassist': ['htdocs/*/*'],
    },
    entry_points={
        'trac.plugins': [
            'querystatushelper = uiassist.query',
        ],
    },
)

次回は

そろそろ t-h.o に登録しようか。どうしようか


«前の日記(2012-12-14) 最新 次の日記(2012-12-18)»