Hatena::ブログ(Diary)

Luoyang Press RSSフィード

2011-05-27

[][]Is The Unarchiver's RAR code legal?

Issue 77: Change .rar backend to The Unarchiver - peazip」より。

The UnarchiverというLGPLで公開されているアーカイバがあるのですが、このThe UnarchiverではRAR書庫の展開に対応しています。7-zipやPeazipをはじめとする多くのアーカイバは、RAR書庫に対応するためにunrar.dllを呼び出したり、unrarsrc-*.tar.gzに由来する公式のソースを利用しているのですが、The Unarchiverではそうではありません。自前でソースを用意してRAR書庫の処理を行っています。

The Unarchiverの開発者さんが流通しているRAR書庫を解析してコードの実装を行ったのであれば、それは特に問題ないようです(2012/05/03追記。コメントを参照)。ただ、そうでないのであれば、これはRARのライセンス的には怪しいことです。unrarのライセンス(license.txt)には次のような文言があります*1

2. The UnRAR sources may be used in any software to handle RAR archives without limitations free of charge, but cannot be used to re-create the RAR compression algorithm, which is proprietary. Distribution of modified UnRAR sources in separate form or as a part of other software is permitted, provided that it is clearly stated in the documentation and source comments that the code may not be used to develop a RAR (WinRAR) compatible archiver.

また、WinRARのライセンス(License.txt)にも次の文言があります。

9. You may not use, copy, emulate, clone, rent, lease, sell, modify, decompile, disassemble, otherwise reverse engineer, or transfer the licensed program, or any subset of the licensed program, except as provided for in this agreement. Any such unauthorized use shall result in immediate and automatic termination of this license and may result in criminal and/or civil prosecution. (中略)

Neither RAR binary code, WinRAR binary code, UnRAR source or UnRAR binary code may be used or reverse engineered to re-create the RAR compression algorithm, which is proprietary, without written permission of the author.

簡単に要約すると、「コードの出自を明記している限りはRAR書庫の展開部分(unrar)のソースは自由に使って構わない。しかし、このコードを参考にしたり、あるいはWinRARのバイナリをリバースエンジニアリングしたりしてRAR書庫の圧縮部分を実装してはならない」という感じでしょうか。The Unarchiverが万一WinRARやUnRARのコードを解析して実装されたものであれば、どうもこの文言に触れてしまっているように思えます。

ところがこのThe Unarchiverは、FSFのblog記事「Another High Priority Project done: The Unarchiver provides free RARv3 extraction tools」にて公式に紹介されています。このblogがどの程度の公式性を持ったものなのかが分からないのですけど、傍目にはThe Unarchiverに対してFSFがお墨付きを与えているように見えます。The Unarchiver自体は割と以前からあるツールでそこそこ名前の知れているものではあるのですが、どのようにしてこのコードが実装されたのかについての説明がないため、若干不安な部分もあります。

さてややこしいのはこの「お墨付き」でして、最初に挙げたPeaZipのトラッカーの投稿でも投稿者さんはこれを拠り所にされておられるようなのです。ただ、Giorgio Taniさんの仰るようにこれはグレーな気もします。また、この件は他のアーカイバにも波及しているようで、「RAR Plans - 7-zip Open Discussion」のように7-zipのフォーラムでも話題になっていたりします。

まあ、もしこのThe Unarchiverの実装が完全に問題ないものであるとしたら、フリーにLGPLで利用できるコードですし、OSS界隈としては喜ばしいことだと思います。

ちなみに、「Creation of RAR-files...? - encode.ru Forum」にあるように、unrarのソースも公開されていますし、そこから推測してrarの圧縮アルゴリズムを実装するのはそう難しいことではないらしいです*2。まあ展開部分があれば実装できるのは当たり前といえば当たり前なわけで、ユーザの良識の上で守られているというのがRARの現状ではあると思います。しかしRARの開発者の方々がそこまでの大盤振る舞いをしてくださっているのも事実ですし、そこまでして第三者がRARの圧縮部分のコードを作る必要があるのかという気にもなってきます。7z形式などフリーで性能のいい圧縮形式はいくらでもありますし*3、別にそれでいいではないですか、と思ったりするのですけど。

2012/05/03追記

SSさんの指摘により、記事を一部修正しました。コメントにあるように、流通しているファイルを解析して得た情報のみを基にしてコードを実装した場合は、特にライセンス的な問題は発生しないようです。

*1:以下の2つの引用部では、改行を削除するなど、文言に障りない範囲での改変があります。

*2:ただし、これはRAR2.0形式までの話のようです。

*3:確かにリカバリレコードはないですが。

SSSS 2012/05/03 08:52 WinRARは「RAR書庫の圧縮部分を実装してはならない」と言っているので、展開だけなら問題にはならないかと。
しかもリバース・エンジニアリングが禁止されているのはWinRARやunrarについてのみですから、RAR書庫ファイルを分析するだけで操作ツールを書けば、それは完全に自由なコードになります。

ratbetaratbeta 2012/05/03 10:40 こんにちは。

ファイルを解析してフォーマットを調べるという行為が問題ないのかという点について調べていたのですが、オープンなswf実装のGnashに関する話題が見つかりました。
「DSAS開発者の部屋:SWFファイルフォーマットとライセンス」
http://dsas.blog.klab.org/archives/51167394.html
「How do Gnash developers work with the Adobe/Macromedia EULA? - Gnash Project」
http://www.gnashdev.org/?q=node/25#eula

この辺を読む限りでは、WinRARやUnRAR自体を使ったり解析したりすることなく、純粋にWeb上でダウンロードできるRAR書庫を解析してアルゴリズムを調べるだけであれば、問題はなさそうですね。また、RARの仕様書はWeb上でも公開されていますし、そうした解析から実装を行うのもできそうな気がします。
「RAR version 3.20 - Technical information」
http://www.win-rar.com/?id=24&kb_article_id=162

…ということで、The Unarchiverの開発者さんがそうした方法のみによって実装を行っているのであれば、何ら問題はなさそうです。まあ、実際にそうなのかは開発者さんを信用するしかないのですけど。

スパム対策のためのダミーです。もし見えても何も入力しないでください
ゲスト


画像認証

トラックバック - http://d.hatena.ne.jp/ratbeta/20110527/1306494671