CPAN上のPerlモジュールのメンテナーになった経緯

画像



私の仕事では、プロジェクトの1つで、 XML :: WBXMLモジュールが使用されています。 これは、バイナリXML- WAPバイナリXMLを操作するためのモジュールです。



残念ながら、このモジュールは2006年に最後に更新されました。 9年前。 それ以来、モジュールの作者であるデビッド・グラッサーからは、噂も精神もなかったため、バグ報告は未回答のままで、バグはそれぞれ修正されていません。 モジュールは忘れられ、放棄されました。



これで何かをする必要がありました。 以下に、放棄されたPerlモジュールの制御を獲得した私の経験を共有したいと思います。



特に、モジュールのバグの1つは、インストール中にテストがパスせず(makeテストでエラーが発生した)、インストールが中断されたことでした。 このエラーは、過去9年間にモジュール自体で使用されているlibwbxml2ライブラリに変更があったという事実に起因しています。 図書館はわずかに異なる形式で回答を提供し始め、このためテストは中断しました。



このエラーを修正するには、テスト自体の1行を修正するだけで十分でした。 アクションは初歩的ですが、そのため自動インストールの調和の取れた手順全体が壊れました。 モジュールのソースコードをダウンロードし、パッチを適用し、モジュールをビルドする必要がありました。 不便。 正しい決定は、モジュールの作成者にパッチを送信することですが、すでに前述したように、作成者は9年前に姿を消し、begreportに応答しませんでした。



この点で、私はブラックジャックと売春婦で、CPAN用の私のモジュールを作成しようとすることにしました。



ソースモジュールを分岐し、XML :: WBというわずかに変更された名前でCPANに新しいモジュールを投稿しました。 もちろん、テストのエラーを修正しました。 これで、ソースを手動で操作しなくても、CPANからモジュールを標準的な方法で直接配信できます。 ただし、名前が変更されたため、このモジュールを使用したプロジェクトの残りのコードを修正する必要がありました。



しかし、私はまだ風水を十分に行っていないという考えに苦しめられました。 良い方法では、新しいモジュールを作成するのではなく、元のモジュールのメンテナーになり、元のモジュールでエラーを直接修正する必要がありました。そのため、使用する人は何も変更して新しいモジュールに切り替える必要がありません。



この時点で、偶然、 perlnews.ruニュースを読みましたが、ついに放棄されたモジュールを制御できる可能性について言及しました。 ニュースへのコメントの中で、彼らはこのためにここで説明されている標準化された手順が多かれ少なかれあると私に言っ 。 基本的には、「すべての可能な方法で著者に連絡してみてください。うまくいかない場合は、モジュールがあなたに転送される可能性があります。」



それで、まず最初に、著者に私が見つけた彼のすべての電子メールに手紙を書き、答えを待つ準備をしました。 しかし、見通しは私には疑わしいようでした(その人物が9年間登場しなかった場合)。



数日後、私は自分のブログに投稿を公​​開しました。そこで、突然誰かが必要になった場合に、モジュールをフォークしたと書いています。 投稿へのコメントで、私はすぐに元のモジュールの作者に非常によく似た人のサイトへのリンクを投げました。 私は彼のウェブサイトを見て、彼のgithubを見て...それは似ているようですが、確実性はありませんでした。 この人はJSで書いていますが、Perlについては何も言及していません。 しかし-地獄は冗談ではありません:)



私は彼に手紙を書きました。 コピーは、予想どおり、modules @ perl.orgを追加しました。 そして、lo! -この人は私に答え、彼は本当にモジュールの作者であるデビッド・グレッサーであることが判明しました。 私たちは彼と数通の手紙を交換しましたが、彼は長い間パールを扱っていなかったことがわかりました、代わりに彼はJSでMeteorフレームワークを見ていました、そして彼はパールモジュールについてほとんど忘れていました。 彼は私にモジュールを喜んで提供しますが、CPANのアカウントのパスワードを覚えておらず、アカウントがリンクされたメールもすべて古くなっていました。 たとえば、彼はmit.eduで電子メールを使用しました。mit.eduは、10年前にそこで勉強していました。



私はすでに考えていました-すべて、行き止まり。 しかし、その後、突然、CPAN管理者の1人であるNeil Bowersから手紙が届きました。 彼はDavidとの通信を読み、問題を解決しました-彼は私をモジュールメンテナに任命しました。



さて、既製の固定モジュールがすでにあるので、元の名前に戻し、更新されたバージョンをCPANにアップロードするだけで済みました。



さらに、 Githubにモジュールを投稿し(元のモジュールはGithubがまだ存在しないときに作成されました)、ライセンス-perl_5を明示的に示しました。これは、モジュールがPearl自体と同じ条件で配布されることを意味します。



このモジュールを使用するのは私だけではなく、誰かがこの恩恵を受けることを願っています。



All Articles