Home > Latest topics

Latest topics > HYPER-ANCHORの「選択範囲のRangeからXPath式を求める」処理を追いかけたらLine Markerに再会

宣伝1。日経LinuxにてLinuxの基礎?を紹介する漫画「シス管系女子」を連載させていただいています。 以下の特設サイトにて、単行本まんがでわかるLinux シス管系女子の試し読みが可能! シス管系女子って何!? - 「シス管系女子」特設サイト

宣伝2。Firefox Hacks Rebooted発売中。本書の1/3を使って、再起動不要なアドオンの作り方のテクニックや非同期処理の効率のいい書き方などを解説しています。既刊のFirefox 3 Hacks拡張機能開発チュートリアルと併せてどうぞ。

Firefox Hacks Rebooted ―Mozillaテクノロジ徹底活用テクニック
浅井 智也 池田 譲治 小山田 昌史 五味渕 大賀 下田 洋志 寺田 真 松澤 太郎
オライリージャパン

HYPER-ANCHORの「選択範囲のRangeからXPath式を求める」処理を追いかけたらLine Markerに再会 - Nov 09, 2009

Firefox Developers Conference 2009、企業でアドオンを開発してる所でただの宣伝ではない技術的な話が聞けそうなセッションということで、A3 「ビッツにおける拡張機能開発 (Wired-Marker 他)」見たいなあと思ってたんだけど、15:40からのトークセッションの打ち合わせがあったので見れなかったんですよね。Webに上がってる感想を見ると、AMOで公開した後のやりとりについて色々話してたそうで、うわー分かる分かる!見たかったなあ!と、悔しい思いをしてたんです。

今日になってチラシを改めて見ながら、僕の代わりにセッションを聞いてもらってた小野寺さんに「どんな発表だったん? 技術的に面白そうな所ありました?」と聞いたら、「ページ内の選択箇所の位置情報をXPathでURLに付与するとかなんとか」って言われて、「へぇーずいぶん前に僕も同じようなことをやったなあ、同じ事考える人がいるんだなあ。ひょっとして僕のコードコピペして使ったんかな?w 使われてたらちょっと嬉しいなあ。」と思って、でも公式サイト見てみても特に僕の名前とかLine Markerへの言及は無いし、「予想外したかなあ。でももし仮に僕のコードが入ってたらライセンス違反(笑)だよなあ。」と思いながらAMOの配布ページからXPIをダウンロードして中を見てみて、該当する箇所を見てみたんですよね。

わあ。懐かしいコードに出会ってしまった。

クリエイティブコモンズの表示-非営利-改変禁止ライセンス(ちなみにこのライセンスは、無料で見れる映像作品などに設定する場合に使われる「作者を明らかにしてタダで再配布しなさいよ、自分の物だと言い張ったりお金取ったりしたらあかんで、あと改造したり切り貼り素材に使ったりするのもあかんで」という性質のライセンスです)なので、具体的にコードの一部を引用して比較することは避けておきますが、content/hyperanchor/hyperanchor.jsの中で定義されてるgetXPathForNodeというメソッドと、Line MarkerのcontextMenuOverlay.jsの同名のメソッドを見比べると、変数の書き方とかループのラベルとか// fallback, for markers in another marker or other cases...というコメントとかを見る限り、Line Marker由来のコードと見て間違いないみたいなんですよね。どうも。

amachangとAzaと後藤さんと通訳の人と打ち合わせしてる隣で堂々とCopyright(c) BITS Co., Ltd. and Prof. Okubo. All Rights Reserved.なこのコードの解説が行われていたかと思うと、なんか笑えます。

まあそんなに独創性のあるアイデアでもないし、僕もコピペした後元のコードの作者の名前を書き忘れることがあるし、こういうのを作れる技術力のある人ならこの関数をスクラッチで書き直す(&改良する)のは大して苦じゃないでしょうから、このエントリに気付いて今後のバージョンでライセンス違反を解消してくれればいいねえと期待しつつ生暖かい目で見守りたいと思います。

で、皮肉るだけじゃあまりに非生産的なので、僕のコードに限らずMPL1.1/GPL2/LGPL2.1のTri-licenseなコード(Firefoxそのものもそうです)をこういう風に流用したい方へのアドバイスを書いておきます。トリプルライセンスなコードはトリプルライセンスまたはいずれか1つのライセンスを引き継げば問題無いので、

  • 全体をMPL1.1/GPL2/LGPL2.1のトリプルライセンスとする。
  • 引用したコードが含まれたファイル(今回の事例であればhyperanchor.js)だけMPL1.1にする(MPL1.1はファイル単位までしか感染しないので、こういうことができる)。
  • 引用したいコードだけ別ファイルに分けてそのファイルをMPL1.1にする。

のような感じにしておくと、僕のようなうるさい奴が「ライセンス違反じゃー!! 天狗のしわざじゃー!!!」とどや顔で騒ぎ立てることが無くて良いと思いました。逆に言うと、そのようにしておけば誰に文句を言われることもなくFirefox内部のコードでもなんでもパクれるもとい再利用できるので、みんなどんどんFirefoxの中からコードをコピペすると良いと思います。

イベントの感想エントリより前にこんなの書いてる僕って何なんでしょうね。

追記。コメント欄にも書き込まれていますが、先方からメールでもご連絡をいただきました。ライセンス上の問題が解消されるまで一時的に、当該アドオンの公開を停止されるとのことです。当該アドオン自体の有用性を否定するつもりはありませんので、早く再公開されればいいなあと、アドオン開発者の一人として思っています。

なんでこういう嫌らしいエントリを書いて晒し上げにするわけ? メールで連絡してなしのつぶてだったら初めて晒すのでも十分なんじゃないのか? 的な批判を裸電球さんからいただきましたので改めてよくよく考えてみましたが、今回の自分の「目的」というのはどうも、「ライセンス違反を解消してもらうこと」ではなく「尊敬されなかった事への不快感の表明・発露」だったのでしょうね。

「オープンソース」という言葉が生まれたのはGNUの思想と無関係にGPLなどのライセンスの恩恵を受けるためだった、という歴史がありますが、そういう意味では僕自身も、「自分の名前をどこかに残すため」「自分の痕跡を残すため」「称賛を得るため」「遺伝子を残せないなら、代わりにコードと名前を残す」という風な大目的のためにオープンソースにフリーライドしているという部分が大きいのだと思います。だからこそ、「フリーソフトウェアの思想のため」でもなければ「コードが適切に再利用されるため」でもなく、あくまで「リスペクトされなかった、自分が蔑ろにされた、成果から得られたはずの称賛を横取りされた(と、事実はともかく自分は感じて)、それによって傷付いた自分がここにいるのだということを世界に対し表明し、同情を買い、自分の心を慰めるため」という目的を意識した行動を真っ先に取ったのでしょう。即ち、twitterやここのような「自分のフィールド」で、間接的な嫌らしい書き方で、相手を非難する、という行動を。

だからおそらく、メールで知らせて人知れず修正されたとしても、あるいは淡々と事実のみを記しても、僕の「目的」は果たされることはなかった。また、その瞬間の僕の頭には「ああ可哀想な僕たん。こんなに可哀想なんだから同情されるよね間違いないよね。」というシナリオができあがっていたから、そのシナリオに沿った行動以外を取る気にはなれなかった。

しかし一通り吐き出してやっと、おそらく大方の第三者が冷静に考えて思うであろう「馬鹿だなあ、そんな書き方をしたら余計に嫌われるだけだろ」という結論に自分自身も辿り着いたため、何ともばつの悪い、しかし今更これを引っ込める事もできない、後味の悪さと、自分という人間の小者っぷりを最大限にアピールしてしまった事への後悔を感じたわけです。今となっては、自分に対しても本件に関わった誰に対しても、残念な思いしか感じられません。

分類:Mozilla > XUL, , , , , , 時刻:19:47 | Comments/Trackbacks (4) | Edit

Comments/Trackbacks

大変失礼致しました

ビッツ株式会社の武藤です。
まずは、コードの件、お詫び申し上げます。大変失礼致しました。
また、ご指摘を頂きましてありがとうございました。

開発当初にpiroさんの公開されている拡張機能で、色々と勉強をさせて頂きながら、コーディングをしていたものが、そのまま残っておりました。

頂いたご指摘を元に、早急に対応をさせて頂きます。
まずは、お詫びと御礼のみにて失礼致します。

Commented by ビッツ株式会社武藤 at 2009/11/09 (Mon) 21:47:07

今後のためにというのを示しているのが有益

日本の場合、ライセンス問題は往々にして内々に処理されることがほとんどですので、このように公開でやりとりが見えるのは自分としてはむしろ好ましいと思います。
#権益については政治的な圧力がかかることが多いですし。(ぉ

コードの転用、流用方法については大変参考になりました。
というか、自分がまだまだ勉強不足だなぁと思う次第。

コードを書くのに必要なモチベーションは、わかってくれる人がわかってくれているというサインが見つかった時だと思っているので、今回はそれが見つからなかったことによる、piroさんの残念がる気持ちは結構わかる気がします。

Commented by ZIN at 2009/11/10 (Tue) 08:16:47

no title

> なので、具体的にコードの一部を引用して比較することは避けておきますが、
引用ならライセンスは関係ありませんけど(というと単純化しすぎて語弊がありそうだけどCC-BY-NC-NDだから引用不可能なんてことはない)。それ以前に他人のコードに勝手に互換性のないライセンスを付けても無効ですけど。

Commented by えむけい at 2009/11/16 (Mon) 02:17:27

no title

追記部分が凄く正直で逆に好感持てました。

Commented by icu at 2009/11/19 (Thu) 11:28:35

TrackBack ping me at


の末尾に2014年1月19日時点の日本の首相のファミリーネーム(ローマ字で回答)を繋げて下さい。例えば「noda」なら、「2009-11-09_license.trackbacknoda」です。これは機械的なトラックバックスパムを防止するための措置です。

Post a comment

writeback message: Ready to post a comment.

2014年1月19日時点の日本の首相のファミリーネーム(ひらがなで回答)

Powered by blosxom 2.0 + starter kit
Home

カテゴリ一覧

過去の記事

1999.2~2005.8

最近のつぶやき

オススメ

Mozilla Firefox ブラウザ無料ダウンロード