.NET Core のオープン ソース化に関する最新情報 (2015 年 2 月 26 日)

 

本記事は、マイクロソフト本社の .NET Blog の記事を抄訳したものです。 【元記事】 .NET Core Open Source Update - February 26, 2015 2015/02/26 5:59 PM

 

前回の .NET Core のオープン ソース化プロジェクトに関するご報告から数週間がたちました。プロジェクトにかかわるユーザーが増え、日々進化していくようすを見るのは、とても楽しいものです。また、私自身の GitHub のニュース フィードも楽しみながら見ていました。corefx (英語)coreclr (英語)roslyn (英語) の各リポジトリの活動を最後まで見るにも、平日だと数ページ分をスクロールする必要がありました。今回の記事では、coreclr リポジトリについて取り上げたいと思います。

コミュニティの活動が活発化してきただけでなく、これまで取り組んできた重要な機能強化が実施されてきました。その変更点のうちのいくつかは、嬉しいことにコミュニティの活動による成果です。ご協力くださった皆様に心から感謝いたします。

進行中の作業

マイクロソフトは 2 月初めに CoreCLR のソースを公開しましたが、機能に関する作業のうち進行中のものについては、すぐに閲覧できる状態にはしていませんでした。しかし、コミュニティからは透明性を高くしてほしいというご要望をいただいているため、それにお応えできるように検討中です。

コミュニティ メンバーは、マイクロソフトが持たない知識を使って価値ある機能を構築したいと考えています。事前の連携が不十分だったせいで、何時間も作業した後にプルリクエスト (PR) がマージされずに閉じられてしまったのを見たときは、とてももどかしい気持ちになります。当然、このような事態が起きないようにする必要があります。

.NET Core チームでは次の 2 つの対策を講じています。

  • イシューを公開する (自己割り当てと up-for-grabs の両方で)
  • 公開されているブランチで作業を行う (coreclr/corefx またはフォークのいずれか)

以下は、自己割り当てと up-for-grabs の両方で公開したイシューです。イシューを公開すると、イシューの帰属先が明確になります。これはすべてのユーザーにとって有益です。

機能に関する作業をオープンに進めることには次のようなメリットがあります。

  • 関係者全員が変更内容を即座に見ることができるため、PR として提出される前にその機能への取り組みについて把握し、意見を述べることができる。
  • 機能に関する具体的な作業に関係者全員が 1 つのグループとして共同で取り組むことができる。

オープンな環境で開発された機能の初期のものの一例をこちらのページ (英語) でご覧いただけます。この PR を読むと、コミュニティ メンバーとマイクロソフトの担当者の詳細な会話を追っていくことができます。当然のことながら、実際のブランチは既に削除されているため、これ以上お見せすることはできません。

clip_image002

この機能は、coreclr リポジトリのメイン ブランチ (unix_issue177) で開発されていました。機能に関する作業には、このメイン ブランチと個人用フォークの両方が使用されます。ブランチの場所は、対象の機能に対する取り組みのレベルや見つけやすさに応じて決定されます。

PR として表示される前にこれらの機能ブランチを見つけるには、イシューのキュー (英語) を確認します。機能ブランチは、「実装」するイシュー内で告知されています。

ほとんどの方はこれほど細かく注意を払ってはいないと思いますが、積極的にご協力くださっている一部のメンバーの方にとっては、製品の方向性の決定やコードの変更においてこのような透明性が大きな意味を持ちます。マイクロソフトではこのようなご要望への対応に取り組んでいます。透明性とコミュニケーションをさらに向上させるために、今後もぜひご意見をお寄せください。

Mac OS X のサポート

coreclr リポジトリの公開後に行われた最大規模の機能強化の 1 つとして、Mac OS X が新たにサポートされました。マイクロソフトの社内チームは Linux のサポートに集中しているため、Linux 向けの作業と並行して進行できるように、Mac OS X のサポートをコミュニティ主導のプロジェクトとしました。

Mac OS X のプロジェクトは、@kangaroo というユーザーの方を中心に進められています。ご協力感謝いたします。変更履歴は Mac OS X のサポート (英語)Mac OS X の初期サポート (英語) の 2 つの PR でご確認いただけます。また、その後も多数の変更が実施されています。

clip_image004

コミュニティの反応から初期サポートの発表までを見ると、.NET Core が Mac OS X に対応することに期待されている方は、筆者以外にも数多くいたことがわかります。

clip_image006

@praeclarum さんは、.NET の CoreCLR を OS X で構築および実行する方法 (英語) というすばらしいガイドを執筆しています。ぜひお読みください。

clip_image008

しかし、Mac OS X のエクスペリエンスはまだまだ未熟です。マイクロソフトでは、エクスペリエンスがさらに進化した時点で公式なガイドを公開する予定ですが、現時点では @praeclarum さんのガイドをご活用ください。

Linux のサポート

Linux についてもさまざまな作業が進められています。たとえば、@mikem8361 さんは SOS を Linux で動作させること (英語) に取り組んでいます。libunwind によるスタックのアンワインド機能 (英語) については、筆者も既に投稿しています。

Mac OS X と同様に、Linux のサポートもまだ始まったばかりですが、積極的なコミュニティの方々から協力が得られています。今後、エクスペリエンスが十分に進化した時点で、Linux の公式ガイドを公開する予定です。

@zerosignal00 さんは、初期のころから .NET Core を Linux でテスト (英語) していたユーザーのおひとりです。このように、Linux での .NET Core のサポートに熱意を持った方も数多くいらっしゃいます。

clip_image010

.NET Core のライブラリに関する作業の進捗

前回の .NET Core のオープン ソース化に関する最新情報の記事では、.NET Core で公開が予定されている API の一覧のスプレッドシートをご紹介しました。このオープン ソース化の進捗状況を追いやすいように、開発チームでは GitHub に dotnet/corefx-progress (英語) という名前のリポジトリを新設しました。

このリポジトリは、すべての .NET Core ライブラリのソースの公開に向けた進捗状況を提供することを目的として作成されています。これは、既にオープンソース化されているものと今後公開予定のものをユーザーの皆様が把握できるようにするしくみで、一時的に提供されるものです。そのため、このリポジトリへのご協力をお願いすることはありません。

このリポジトリには、下記のフォルダーが存在します。

  • lib-full: すべての .NET Core ライブラリの外部からのアクセス領域全体を表す参照アセンブリ (中間言語を含まないアセンブリ) を格納
  • src-full: lib-full 内のアセンブリを C# で記述したものを格納
  • src-oss: 既にオープン ソース化されている (GitHub で入手可能な) アセンブリを C# で記述したものを格納
  • src-diff: 各アセンブリの src-full と src-oss の差分をまとめたマークダウン ファイルを格納

.NET Core: ライブラリのオープン ソース化の進捗状況 (英語)」のページを見ると、既にオープン ソース化されたものと今後オープンソース化予定のものを把握できます。

また、このリポジトリをクローンしてお好みのツールで src-full フォルダーと src-oss フォルダーの差分を取っても確認できます。

dotNetConf

3 月 18 ~ 19 日には dotNetConf (英語) が開催されます。.NET Core チームは、他の登壇者と共に dotNetConf のライブ ストリーム放送で講演やデモを行います。また、講演中に皆様からのご質問にもお答えする予定です。Windows、Linux、Mac のそれぞれの .NET Core の詳細を披露しますのでご期待ください。

Gitter チャット

マイクロソフトは先日、@migueldeicaza さんが開設した Gitter チャット ルームを告知する PR を 3 つ受け取りました (coreclr の README.md への Gitter チャット バッジの追加 (英語)corefx の README.md への Gitter チャット バッジの追加 (英語)roslyn の README.md への Gitter チャット バッジの追加 (英語))。.NET について強いご興味をお持ちの方のようです。

皆様もぜひ Gitter ルームのチャットにご参加ください。

Gitter はチャット ルーム サービスで、各ルームは GitHub リポジトリに関連付けられており、もちろん議論の場を選ぶことができます。筆者もこれを気に入っていて、GitHub と統合されていることにより、便利に使うことができます。他のチャット ルームをお好みの方も、コミュニティとして積極的に活動しているようであれば告知させていただきたいと思います。

dotnet.github.io

.NET Foundation 用のサイトである dotnet.github.io (英語) のページもぜひご覧ください。このページでは、.NET Foundation プロジェクト (英語) のリポジトリを見つけることができます。リポジトリは OSS の「優秀度」 (英語) の順に表示されています。Netflix (英語)Twitter (英語) にも同様のサイトがあり、この Twitter の hotness アルゴリズム (英語) (マイクロソフトではこれを「優秀度」と解釈しています) などのアイデアをお借りしています。

ご存じない方のためにご説明しますが、マイクロソフトは昨年 .NET Foundation (英語) を設立しました。.NET Core、Roslyn、ASP.NET、Orleans など、さまざまなコンポーネントをこの .NET Foundation に提供しています。また、ほかに数社の企業と若干名の個人がコンポーネントを提供しています。

コミュニティへの謝辞

先日、Roslyn チームが Roslyn リポジトリへの最近の貢献者を表彰 (英語) したことに感銘を受けました。チームメンバーは、このカップのことを「sha カップ」と呼んでいるようです。なかなか粋な計らいではないでしょうか。

image

マイクロソフトでは、corefx や coreclr の貢献者の方にカップをお贈りしてはいません (今後検討したほうがよいでしょうか?)。しかし、私たちも同じように、日常的にほぼ 24 時間のサポートをいただいていることに感謝しております。.NET Core プロジェクトにご協力いただいている皆様にお礼を申し上げますと共に、まだご参加いただいていない方にはぜひご参加いただきたいと思います。

最後までお読みいただきありがとうございました。

Rich Lander (Twitter: @richlander/@runfaster2000)