- 依存するモジュールを一覧にしない
- パッケージ中、フォルダ名を日本語にする
- パッケージ中、ドキュメントを最低10ヶ所のディレクトリに分散させる
- インストールのために最低10回のコマンドを入力させる
- そのうち3回はmake, 3回はcp Makefile
- 必要がなくても手順書で全てroot権限を要求
- javacとjarを行うmakefileを提供する
- プログラムの設定のために最低20回のコマンドを入力できるようにしておく
- ソフトウェア中の実行バイナリを全て異なるディレクトリに配置する(ひとつの実行バイナリのためにわざわざひとつのディレクトリを用意する)
- サンプルプログラムをコンパイルするために、コンパイル済みのバイナリ(Linuxなのに拡張子は.exe)を使用するか、共有ライブラリを全て解決してMakefileを作成することを要求する
- サンプルの設定ファイルについて複数のバージョンを用意し、名称はhoge.conf, hoge.conf.bak0226, hoge.conf.orig, hoge.conf.bak0220などとしておく
- 設定が間違っているとプログラムがエラーを起こすが、どの設定が間違っているかは表示させない
- どの設定が間違っているを推定するために、エラーメッセージでプログラムをgrepし、変数を辿って設定ファイル名を調べられるようにしておく
- 設定ツールに関するドキュメントがパッケージのディレクトリから7階層下にある(そのうち5階層は選択肢がひとつしかなく一本道)
- ./configure && make installまたはrpm -i hogeまたはdpkg -i hoge以外の方法でインストールさせる
- 妙竹林な環境変数の設定や、ld.so.confの変更を要求する(How dare you require me to dedicate the whole OS to that stupid software???)
- これといった目的や要求仕様があることはあるが、それに満足して明確な設計指針のないまま基本設計、機能設計を行う
最後の項目は、自戒もこめて。Makefile.inがあるからひょっとしたらautomake使ってるのかと思ったら、configureスクリプトがないし、Makefile.amくらい入れてくれよと思ってたら、Makefile中で-include Makefile.inって書いてあってorz
職場の先輩には「君はこれからもっとひどいソフトウェアに出会うことになるだろう」って予言された。