https://dev.mikutter.hachune.net/
https://dev.mikutter.hachune.net/favicon.ico?1619448608
2018-01-02T04:03:39Z
やること
mikutter - バグ #1145: README の「必須アプリ−ケーション」の Ruby バージョン表記が古い
https://dev.mikutter.hachune.net/issues/1145?journal_id=2910
2018-01-02T04:03:39Z
toshi_a 初音
toshi.alternative@gmail.com
<ul></ul><p>これを書いた当時は、ここに書いているgemくらいにしか対応していませんでしたが、今ではBundlerを利用することを前提に多数のgemに依存しているので、表記するのは現実的ではないで、Gemfileだけでいいと思います。様々なパッケージリポジトリで扱ってもらっている今、Gemfile{,.lock}は、この情報が本当に必要な人間にとっては読めるものだと思います。</p>
<p>RubyのバージョンもGemfileに書いてもよさそうですが、GemfileにRubyのバージョンを書くことには、あまりメリットがなかったと思うので多少調べて対応しない方向で考えます。</p>
<p>どちらにしても、READMEにこれらの情報を書くのはもはや混乱しか生まないため、削除することを検討しています。</p>
mikutter - バグ #1145: README の「必須アプリ−ケーション」の Ruby バージョン表記が古い
https://dev.mikutter.hachune.net/issues/1145?journal_id=2912
2018-01-02T04:18:44Z
Izumi Tsutsui
tsutsui@ceres.dti.ne.jp
<ul></ul><p>直接関係ありませんが<br /><a class="external" href="https://mikutter.hachune.net/faq">https://mikutter.hachune.net/faq</a><br />のFAQでの動作条件も Ruby 2.1.0 以降になっていますね……</p>
mikutter - バグ #1145: README の「必須アプリ−ケーション」の Ruby バージョン表記が古い
https://dev.mikutter.hachune.net/issues/1145?journal_id=2927
2018-01-07T01:36:24Z
toshi_a 初音
toshi.alternative@gmail.com
<ul><li><strong>ステータス</strong> を <i>新規</i> から <i>レビュー待ち</i> に変更</li><li><strong>担当者</strong> を <i>Izumi Tsutsui</i> にセット</li></ul><p><a class="issue tracker-1 status-5 priority-4 priority-default closed" title="バグ: README の「必須アプリ−ケーション」の Ruby バージョン表記が古い (終了)" href="https://dev.mikutter.hachune.net/issues/1145#note-1">#1145-1</a> で言っていたことを <a class="changeset" title="bundlerを利用していることを念頭に、READMEに記載している要件を変更 refs #1145" href="https://dev.mikutter.hachune.net/projects/mikutter/repository/main/revisions/a3af31aa0ed5f2ba3112d25342c38d6486be2969">a3af31aa</a> でやりました。</p>
<p>ruby-gtk2が必要などは、パッケージマネージャでそれを入れることを前提に考えて書いていました。gtk2 gemはlibgtk2パッケージの依存関係でついてくるはずだというふうに考えていたということです。bundlerを使っていればそちらでruby-gtk2はインストールされてしまうため、これは成り立ちません。</p>
<p>言葉足らずだったため補足すると、同じ情報があちこち(READMEとGemfile)に散らばっていると、読む方も更新する方も大変なので、bundlerまたはパッケージマネージャを使ってmikutterをインストールする現代において、READMEにこの情報を書いておくのは本件のような問題を起こすだけなのではないかと思いました。</p>
<p>パッケージメンテナ的にはどうなんでしょうか。お互いにとってこれが最善と思ってやっているので、都合が悪いということがあれば教えてほしいです。</p>
mikutter - バグ #1145: README の「必須アプリ−ケーション」の Ruby バージョン表記が古い
https://dev.mikutter.hachune.net/issues/1145?journal_id=2935
2018-01-07T10:03:49Z
Izumi Tsutsui
tsutsui@ceres.dti.ne.jp
<ul><li><strong>担当者</strong> を <i>Izumi Tsutsui</i> から <i>toshi_a 初音</i> に変更</li></ul><p>立場によって見方がいろいろあると思うので、参照用につらつら書いてみます。<br />(注意:経験値ベースのみの話なので、知っている人から見たら見当違いのことを書いているかもしれません)</p>
<a name="結論"></a>
<h3 >結論<a href="#結論" class="wiki-anchor">¶</a></h3>
<ul>
<li>「bundlerまたはパッケージマネージャを使ってmikutterをインストールする」という前提では、一般ユーザーに対しては<br /> Ruby のバージョンについて「ruby :: Gemfile に記載されているRubyのバージョンを参考にしてください」と言及する<br />だけで良いと思います</li>
</ul>
<ul>
<li>パッケージシステムのメンテナ(もしくはバグレポを送るような人であるが ruby にあまり詳しくない人たち)に対しては<br />「必要な gem については Gemfile および core/plugin/*/Gemfile を参照してください」<br />という言及があると助けになる、という気はします</li>
</ul>
<a name="パッケージシステムでの-gem-依存の記述"></a>
<h3 >パッケージシステムでの gem 依存の記述<a href="#パッケージシステムでの-gem-依存の記述" class="wiki-anchor">¶</a></h3>
<ul>
<li>bundler では Gemfile の記載に従って必要な gem のバージョンが適切に入る(んですよね?)</li>
</ul>
<ul>
<li>パッケージシステムにおいては、 Gemfile の記載は参照されず、パッケージシステム固有の依存関係として指定される</li>
<li>つまり、パッケージシステムの管理者はパッケージ作成時・更新時に、<br />各 gem もしくはアプリの Gemfile もしくは Rakefile 等を参照して適切な依存関係記述をする必要がある
<ul>
<li>pkgsrc はこんな感じに Makefile 等に記載<br /><a class="external" href="http://cvsweb.netbsd.org/bsdweb.cgi/pkgsrc/net/mikutter/Makefile?rev=1.151&content-type=text/x-cvsweb-markup">http://cvsweb.netbsd.org/bsdweb.cgi/pkgsrc/net/mikutter/Makefile?rev=1.151&content-type=text/x-cvsweb-markup</a></li>
<li>debian はこの control のファイル?<br /><a class="external" href="https://anonscm.debian.org/cgit/collab-maint/mikutter.git/tree/debian/control">https://anonscm.debian.org/cgit/collab-maint/mikutter.git/tree/debian/control</a><br /><a class="external" href="https://anonscm.debian.org/cgit/pkg-ruby-extras/ruby-gnome2.git/tree/debian/control">https://anonscm.debian.org/cgit/pkg-ruby-extras/ruby-gnome2.git/tree/debian/control</a></li>
</ul></li>
</ul>
<a name="パッケージシステムで-gem-依存関係の問題が出る原因"></a>
<h3 >パッケージシステムで gem 依存関係の問題が出る原因<a href="#パッケージシステムで-gem-依存関係の問題が出る原因" class="wiki-anchor">¶</a></h3>
<ul>
<li>パッケージシステム管理者すべてが gem に詳しいわけではないので、<br />upstream 側の変更として Gemfile 等で依存関係記載が更新されたことに気づかず<br />パッケージシステム側の記載をミスっていることがある
<ul>
<li>必要な gem がたまたま他のパッケージの依存関係で入ってしまっていると動いてしまうので、<br />Live Image のようなまっさらな環境でテストしないと検出されなかったりする</li>
</ul></li>
</ul>
<ul>
<li>例: ruby-gnome2 の pango gem は 3.1.1 → 3.1.2 で cairo-gobject, gobject-introspection の依存が追加された<br /><a class="external" href="https://github.com/ruby-gnome2/ruby-gnome2/commit/35f5c1fd3413322f84049c0d725cff0e879be0d8#diff-96b71829ec51dd9bfcd2ae88683448fc">https://github.com/ruby-gnome2/ruby-gnome2/commit/35f5c1fd3413322f84049c0d725cff0e879be0d8#diff-96b71829ec51dd9bfcd2ae88683448fc</a>
<ul>
<li>pkgsrc では 3.1.1 → 3.1.6 に一気に上げた時に依存関係をチェックするのを忘れてエラーになって後から直した<br /><a class="external" href="http://cvsweb.netbsd.org/bsdweb.cgi/pkgsrc/devel/ruby-gnome2-pango/Makefile#rev1.54">http://cvsweb.netbsd.org/bsdweb.cgi/pkgsrc/devel/ruby-gnome2-pango/Makefile#rev1.54</a></li>
<li>debian, ubuntu のパッケージでも 3.1.8 まで依存の記載が漏れていた</li>
<li>debian では修正されているっぽい<br /><a class="external" href="https://anonscm.debian.org/cgit/pkg-ruby-extras/ruby-gnome2.git/commit/?h=debian/3.1.8-7&id=f6a8f4dc0175ca94c2e556e620aa9dadc4bd7e68">https://anonscm.debian.org/cgit/pkg-ruby-extras/ruby-gnome2.git/commit/?h=debian/3.1.8-7&id=f6a8f4dc0175ca94c2e556e620aa9dadc4bd7e68</a></li>
<li>ubuntu はまだ直っていない?<br /><a class="external" href="https://launchpad.net/ubuntu/artful/arm64/ruby-pango/3.1.8-6">https://launchpad.net/ubuntu/artful/arm64/ruby-pango/3.1.8-6</a><br /><a class="external" href="https://bugs.launchpad.net/ubuntu/+source/mikutter/+bug/1733041">https://bugs.launchpad.net/ubuntu/+source/mikutter/+bug/1733041</a></li>
</ul></li>
</ul>
<p>自分自身は pkgsrc 担当として Gemfile や Rakefile の依存関係記載に差分がないかをチェックするようにしましたが、<br />ruby-gnome2 を見ると upstream のソースツリーから依存関係記載が漏れていることもある<br /><a class="external" href="https://github.com/ruby-gnome2/ruby-gnome2/issues/1107">https://github.com/ruby-gnome2/ruby-gnome2/issues/1107</a><br />ので、「必要な gem についての依存関係についてはまず Gemfile を見よ」という情報があると助かるかも、<br />というくらいです。</p>
<a name="その他のパッケージシステム側都合"></a>
<h3 >その他のパッケージシステム側都合<a href="#その他のパッケージシステム側都合" class="wiki-anchor">¶</a></h3>
<ul>
<li>mikutter 3.6.0 で twitter-text gem 2.1.0 必須という変更が入りましたが、<br />debian では mikutter 本体側にパッチを当てて twitter-text gem 1.14.7 等でも動くような設定にしているようです。<br /><a class="external" href="https://twitter.com/dai_lxr/status/945220489760333824">https://twitter.com/dai_lxr/status/945220489760333824</a><br /><a class="external" href="https://twitter.com/dai_lxr/status/945596816493391872">https://twitter.com/dai_lxr/status/945596816493391872</a><br /><a class="external" href="https://anonscm.debian.org/cgit/collab-maint/mikutter.git/tree/debian/patches/require_twitter_text_1.14.6.patch">https://anonscm.debian.org/cgit/collab-maint/mikutter.git/tree/debian/patches/require_twitter_text_1.14.6.patch</a></li>
</ul>
<ul>
<li>一般に、パッケージシステムにおいては同一のパッケージの複数バージョンの共存というのが面倒なので、<br />パッケージシステム独自の細工が入っていることはよくあります。
<ul>
<li>Gemfile で非互換指定があっても動いていそうであればむりやり Gemfile の依存関係記載を上書きする</li>
<li>複数バージョンを共存する場合にパッケージ名を別のものにする(suffixを付ける等)</li>
</ul></li>
</ul>
<p>このあたりの問題になってくると mikutter 本体の問題なのかパッケージシステム側の問題なのか、<br />(つまり、 mikutter 自体をどうやってインストールしたのか)という話になってきます。</p>
<p>ArchLinux の AUR だと mikutter.3.6.x.tar.gz の tarball の vendor 以下のファイルを使っているとすると、<br />これはまたそういう前提で検証が必要になると思います。</p>
mikutter - バグ #1145: README の「必須アプリ−ケーション」の Ruby バージョン表記が古い
https://dev.mikutter.hachune.net/issues/1145?journal_id=2938
2018-01-13T15:28:50Z
toshi_a 初音
toshi.alternative@gmail.com
<ul><li><strong>ステータス</strong> を <i>レビュー待ち</i> から <i>実装待ち</i> に変更</li></ul><p>そういうことであれば、 <a class="changeset" title="bundlerを利用していることを念頭に、READMEに記載している要件を変更 refs #1145" href="https://dev.mikutter.hachune.net/projects/mikutter/repository/main/revisions/a3af31aa0ed5f2ba3112d25342c38d6486be2969">a3af31aa</a> に</p>
<blockquote>
<p>必要な gem については Gemfile および core/plugin/*/Gemfile を参照してください</p>
</blockquote>
<p>のような記述を加えれば大丈夫そうですね。</p>
mikutter - バグ #1145: README の「必須アプリ−ケーション」の Ruby バージョン表記が古い
https://dev.mikutter.hachune.net/issues/1145?journal_id=2946
2018-01-14T06:54:58Z
Izumi Tsutsui
tsutsui@ceres.dti.ne.jp
<ul></ul><p>本題からは少し外れますが</p>
<p>mikutter/Gemfile には<br /><pre> gem 'json_pure', '~> 1.8'</pre><br />と書かれているのですが、 require 'json_pure' しているファイルは無いようです。<br />twitter プラグインの中で require 'json' しているものはありますが。</p>
<p>json_pure gem は必要・不要 いずれでしょうか。</p>
mikutter - バグ #1145: README の「必須アプリ−ケーション」の Ruby バージョン表記が古い
https://dev.mikutter.hachune.net/issues/1145?journal_id=3077
2018-03-08T05:59:19Z
toshi_a 初音
toshi.alternative@gmail.com
<ul><li><strong>ステータス</strong> を <i>実装待ち</i> から <i>レビュー待ち</i> に変更</li><li><strong>担当者</strong> を <i>toshi_a 初音</i> から <i>Izumi Tsutsui</i> に変更</li><li><strong>ブランチ</strong> を <i>topic/1145-update-environment-requirements</i> にセット</li></ul><p>pushしました。確認お願いします。</p>
<a name="json_pure"></a>
<h1 >json_pure<a href="#json_pure" class="wiki-anchor">¶</a></h1>
<p>json_pureは現在も利用しています。json_pureは標準のJSONライブラリを、Rubyだけで書かれた実装に置き換えるために利用しています。</p>
<p>Twitterプラグインでは、マルチスレッドのデータ競合問題を起こしにくいJSONのパースはメインスレッド以外で行って、UI処理がブロックされないようにしているので全てRubyで書かれていることに価値があります。</p>
<p>しかし今はRuby1.8とは状況が大幅に異なっているし、サーバAPIが返してくる程度のJSONの処理にそこまで時間がかかるのかといった疑問もあります(なので、YajlやOjといったより高速なJSONパーサの存在を知っていて利用していません)。<br />一方でjson_pureを外してどのような影響が出てくるか調査するコストを払うことに特にメリットは無さそうだと思っているので、何もしていません。</p>
<p>パッケージするgemが一つ減って負担が軽くなるということであれば、十分やる理由にはなるかなと思います。</p>
mikutter - バグ #1145: README の「必須アプリ−ケーション」の Ruby バージョン表記が古い
https://dev.mikutter.hachune.net/issues/1145?journal_id=3078
2018-03-08T15:35:31Z
Izumi Tsutsui
tsutsui@ceres.dti.ne.jp
<ul><li><strong>ステータス</strong> を <i>レビュー待ち</i> から <i>マージ待ち</i> に変更</li></ul><p>テキストファイルなので差分確認しました。問題ありません。</p>
<a name="json_pure"></a>
<h3 >json_pure<a href="#json_pure" class="wiki-anchor">¶</a></h3>
<p>pkgsrc だと json_pure の指定方法がいつの間にか変わっていて<br />気がつくと json_pure が入っていない状態で mikutter を動かしていたのですが、<br />その状態でも動作自体は問題ありませんでした。</p>
<p>json_pure を入れた場合に処理負荷というかフィーリングが変わるかどうかはしばらく試してみます。<br />(といってもこのチケットはクローズされてしまうので、違いがなさそうなら別チケット入れます)</p>
mikutter - バグ #1145: README の「必須アプリ−ケーション」の Ruby バージョン表記が古い
https://dev.mikutter.hachune.net/issues/1145?journal_id=3079
2018-03-09T11:17:49Z
toshi_a 初音
toshi.alternative@gmail.com
<ul><li><strong>ステータス</strong> を <i>マージ待ち</i> から <i>終了</i> に変更</li></ul><p>mergeしました。<br />JSONについては、何かあればおねがいします。</p>