[DISCUSSION] YARN タグの使用について

(2016/10/14 16:09 追記) 現在 yarnpkg の githubにて "nyarn"への名称変更の提案がなされています。こちらも参照してください https://github.com/yarnpkg/yarn/issues/673#issuecomment-253718435

(2016/10/17 13:04 追記) 上記提案に対し、 yarn コマンドの名前は変更せず yarn コマンドへのエイリアス yarnpkg を作成するとのコメントがあり、それをもって issue はクローズとなりました。 https://github.com/yarnpkg/yarn/issues/673#issuecomment-254004512

# おことわり

## 本記事の目的とリスクに関するDISCLAIMER

本記事はディスカッションを目的としているものであり、技術情報の提供を目的としているものではありません。Qiitaの利用規約に抵触する可能性があり、場合によっては削除される可能性がありますが、Qiita上で活動するコミュニティに関する内容なので、やむなくQiita上で書いています。もし削除された場合は別のサービス上でディスカッションを継続することになると思いますので、その旨ご了承ください。

## 著者の素性と記事の公平性に関するDISCLAIMER

著者はHadoopコミュニティの人間であり、Javascriptコミュニティについては全くの知見がありません。なるべく正しい情報を記載するよう努めますが、もしかしたら不正確な情報を記載してしまうかもしれません。もし気づいたことがありましたら、後述する方法に基づいた記事の改善にご協力をお願いします。

## 記事の改善方法

記事について気づいた点があった場合、以下の対処をお願いいたします。

- 記事の修正によって対処できる場合: 編集リクエストの投稿
- 議論が必要な場合: 本記事へのコメント記載

Twitter、はてなブックマーク等の外部SNSでの指摘は反映されない可能性がありますので記事への反映をお願いします。
著者も記事のメンテナンスにそれほど時間を取れるわけではないので、修正の指摘のみでは対処しきれない場合があります。可能な限り編集リクエストでの修正の協力をお願いします。


# 何が起きているのか？

2016年10月11日にFacebook社がJavascriptのパッケージマネージャ「Yarn」をリリースしました。この「Yarn」という名称は、オープンソースの分散処理基盤 Apache Hadoop のサブプロジェクトの一つにして中核機能となるリソース管理機能を担う Apache Hadoop Yarn と同一の名称です。2つのYarnが存在することにより、様々なコミュニティで名前空間の衝突という問題が発生するリスクが生じています。
本記事では明確に区別を行うため、「Yarnpkg」と「Hadoop Yarn」という名称で記載しますが、Hadoopコミュニティでは単に「Yarn」という呼称で定着していることをご留意ください。


# どんな問題が発生しているのか？

QiitaのYARNタグは既に記事の混在が始まっています。
http://qiita.com/tags/YARN

2016年10月14日現在YARNタグを持つ記事は37本ありますが、うち3本がYarnpkgに関する記事となっています。


# 名前空間が衝突すると何が問題なのか？

名前空間の衝突による問題を端的に言い表したスラングが「ググラビリティが下がる」です。つまり、名称だけを入力して検索しても、特定の種類の記事だけをフィルタすることができなくなるという問題が発生します。
これにより、Yarnpkgを検索したい人は大量のHadoopの記事から目的の文書を探さなければならず、Hadoop Yarnについて調べたい人は本当にHadoopについての内容かを注意深くチェックしていかなければならない、という手間が生じてしまいます。


# 別に「javascript AND yarn」、「hadoop AND yarn」みたいに検索すればいいんじゃないの？

そのような検索クエリを投げることができるのは、「世の中には二種類のYarnがある」と理解している人だけです。実際、今回のYarnpkgのリリースによってHadoop Yarnと名前が衝突していることを知らなかったJavascriptコミュニティの方は少なくないでしょう。
これは記事を執筆する人にも言える話です。わざわざ「Javascript」と「Yarn」、「Hadoop」と「Yarn」を同時につけないと記事が混在する、とわからないままQiitaに投稿する人も今後増えていくことでしょう。


# じゃあどうすればいいの？

**Hadoopコミュニティの立場から見た**最良の方法はYarnpkgに名前を変更してもらうことです。既に関連したgithub issue も上がっています。 https://github.com/yarnpkg/yarn/issues/673
しかし、これはYarnpkgコミュニティが判断することであり、私はどのような判断が行われるのかわかりません。もしかしたら今日にでも名称が変更されて、本記事は無駄になるかもしれません。逆もまた然りで、Yarnpkgがこの名称のままでプロジェクトを運営していく可能性も十分にあります。本記事は、名称が変更されない、あるいは変更されるにせよ相応の時間がかかることを想定して執筆しています。

(2016/10/14 16:09 追記) 現在 yarnpkg の githubにて "nyarn"への名称変更の提案がなされています。こちらも参照してください https://github.com/yarnpkg/yarn/issues/673#issuecomment-253718435

(2016/10/17 13:04 追記) 上記提案に対し、 yarn コマンドの名前は変更せず yarn コマンドへのエイリアス yarnpkg を作成するとのコメントがあり、それをもって issue はクローズとなりました。 https://github.com/yarnpkg/yarn/issues/673#issuecomment-254004512

Qiitaユーザとして私が目指したいことは、Hadoopコミュニティとjavascriptコミュニティ、どちらも不利益を被らないような形に落ち着くことです。

その上で、以下のような提案をいたします。
(本記事の最初のバージョンの執筆時点では提案は1つしかありませんが、今後追加される可能性はあります。その場合はこの行を削除してください)

## 提案1: Javascript の Yarn の記事を書く場合は、「yarnpkg」あるいはその他のJavascriptコミュニティが納得する形のタグをつけてもらい、「Yarn」タグはなるべく使わないようにする

Apache Hadoop は10年の歴史を持つプロジェクトで、Hadoop YARN 自体も2012年10月に単体プロジェクトとなってから4年も経っている歴史のあるプロジェクトです。(単体プロジェクトとして独立する前からコード自体は存在するので、Hadoop Yarnの歴史はもう少し古いです)
https://issues.apache.org/jira/browse/YARN?selectedTab=com.atlassian.jira.jira-projects-plugin:versions-panel&subset=-1

先述の通りQiita上にも既にYarnタグのついたHadoop Yarnに関する記事が34本もあり、Qiita上でもYarnタグ = Hadoop Yarn の記事となっていると言えると思います。

一方Yarnpkgは新しくできたばかりのプロジェクトであり、今後どのようにコミュニティが拡大、変化していくかも予測がつかず、実際にコミュニティとして定着するのはまだ時間がかかるように見えます。

Hadoopコミュニティの立場の者である私がJavascriptコミュニティ側に一方的に努力を強いるのは恐縮なのですが、上記の状況を鑑みると、まずはYarnpkg側に別のタグを使ってもらうなどしていただくのがいいのではないかと考えています。

何度も書いている通り、この提案はHadoopコミュニティの人間である私の側から見た一方的な提案ですので、もし意見等あれば是非お聞かせください。


# 次のステップは？

HadoopコミュニティもJavascriptコミュニティも、どちらもオープンなコミュニティで代表者のような存在がいない以上、「こういう結論でいきます」という意思決定をくだすことは誰にもできませんし、本記事内でそのような結論に至ることはありません。筆者自身もただコミュニティに所属するだけの一員でしかなく、本記事も両コミュニティに無視されて終わる可能性も十分にあります。私が問題提起した内容も結局のところ杞憂に終わるかもしれません。この問題について考えるのは、コミュニティの一員である読者の皆様であり、この問題の対処を考えるのもまた皆様個人かと思います。本記事はQiitaのタグという比較的小規模な問題にフォーカスして執筆していますが、こうした問題の背景には「異なるオープンソースコミュニティ間での名前空間の衝突」という、より大きく厄介な問題が潜んでいます。本記事が皆様の問題認識のための一助となれば幸いです。