CIFSやSMBと呼ばれているファイル共有の仕組み、あるいは実装でSambaがあったりする、ネットワーク上のファイルを表示するアレです。
Reflowable ReaderでCIFS/SMBに対応して、ネットワーク上のPCやNAS内にある画像を読み込みたいと考えていましたが…難しいですね…
FlutterでCIFS/SMBにアクセスするために使えそうな、libdsmパッケージがあったので、簡単にアクセスできると思っていました。
このlibdsmパッケージの使い方を調べていたのですが、どうやらこれはlibdsmを使用しているようで、libdsmはLGPLライセンスのようなのです。
(以下、素人が調べながら考えている内容なので、間違っている可能性があります)
LGPLライセンスのソースコードを使用した場合は、GPLライセンスと違い、必ず作成したソースコードを公開しなければいけないわけではないのですが、ソースコードを公開しない場合にはライブラリを差し替えられる形で配布する必要があります。
たとえばWindows用アプリならDLLファイル、Javaならjarファイルなどの形式で同梱することで、LGPLライセンスでもソースコードを公開せず使用できます。
しかし、Androidアプリの場合は、作成したアプリはapkファイル一つにまとめられてしまい、ライブラリ部分のみの差し替えを行うのが困難です。
そのため、LGPLライセンスの「ライブラリを差し替えられる」という条件に合致することができず、LGPLライセンスの「ソースコードを公開する」という条件に従う必要があるようです。
ということで、libdsmを使用する場合には、libsdmを利用したアプリのソースコードを公開する必要が出てきます。
別にすごいことを行っているアプリではないので、ソースコードを公開しても問題はないのですが…プログラミングレベルの低さが明らかになるのが恥ずかしいですね…
あとはセキュリティ的にも脆弱性を突かれやすくなるのでしょうか。
そして一番の問題は、libdsmライブラリを使ってFlutterからSamba共有フォルダへの接続ができません…
Tree Connectの接続はできて、Tree ID(TID)は付与されるのですが、Findすると「PARAM_ERROR, Illegal parameter, null」という例外が…
ライブラリのライセンスの問題よりも、まずはライブラリを使用する技術がない方が問題のようです…
コメント
[…] 次のバージョンアップ予定ですが、昨日投稿しましたように一番追加したかったCIFS/SMB対応は困難なことが分かったため、別の機能を追加する予定です。CIFS/SMBの次に必要だと作者が思っている機能は、画像拡大表示機能です。Reflowable Reader Ver.1.0.0では、文章以外のページを開いたときには画像をそのまま表示しますが、拡大はできません。文章を表示するのがメインのアプリなのでそれでいいと考えていましたが、実際にアプリを使用していると、解析に失敗するページをそのまま表示するしかないときがあり、急遽優先順位を上げて対応することにしました。今週末には公開申請したいと考えておりますので、4月中旬には公開されると思いますので、しばらくお待ちください。 […]
[…] ライセンスがLGPLのライブラリを使いたい、しかしソースコードは開示したくない、という問題に悩まされております。具体的には、一年前のAndroidアプリにおけるCIFS/SMB対応についてという投稿と同じく、CIFS/SMBのライブラリを使用したいです。今回はFlutterではなく.NET MAUI(C#や.NET Core)で使用できるCIFS/SMBのライブラリを探していますが、やはりライセンスがLGPLのものしか見つかりません。そこで改めてどうしたら良いか調べましたので、後で見直せるように投稿しておきます。 […]