NuGet Gallery (nuget.org)にてパッケージIDプレフィックスを予約する方法と、実際に予約を申請した際の記録。

NuGetパッケージIDのプレフィックス予約

NuGet Gallery (nuget.org)では、パッケージIDのプレフィックスを予約することができる。 プレフィックスの予約を行うと、パッケージの所有者(owner)が特定のプレフィックスを専有することができる。

例えばMicrosoft.*というプレフィックスはMicrosoftにより予約(専有)されている。 これにより、MicrosoftのみがMicrosoft.で始まるIDのパッケージを公開することができる一方で、Microsoft以外の所有者がそういったIDのパッケージを公開することはできなくなる。

一般に、特定のプレフィックスからはそのパッケージを公開する個人や組織、ソフトウェアスイートなどについての情報が想起され、また同一のプレフィックスを持つパッケージは同一の個人・組織によって公開されたものと期待される。 プレフィックスの予約により、他の所有者が本来の所有者を騙ってパッケージを公開するといった行為を抑止することができる。

なお、プレフィックスの予約が行われているパッケージでは、以下のように✅チェックマークとともに予約されている旨が表示される。

プレフィックスが予約されているパッケージの表示
Microsoft.CSharp
NUnit

プレフィックス予約の申請方法と条件

プレフィックス予約を行う方法は、ID プレフィックスの予約 | Microsoft Docsの「予約の申請プロセス」に記載されている。 予約したいプレフィックスと、所有者のnuget.orgアカウントの情報を添えてメールを送ることで申請できる。

また、予約時の条件として、2段階認証(2FA)が有効になっていることと、予約しようとしているプレフィックスと所有者の関係が妥当であること、などが挙げられている。 (詳細は§.プレフィックスの予約申請で後述)

はっきりと明記はされていないものの、予約の妥当性については、本来の所有者を騙るものではないかのほかに、プレフィックスの予約により他者の商標権が侵害されるなど、法的問題や争議が起こらないことの確認あるいは表明を要件として求めていると思われる。

プレフィックスの予約申請

以下は実際にプレフィックスの予約申請を行った際の記録。 ここでは、所有者をsmdn、予約するプレフィックスをSmdn.*として申請した。

申請に際して入力フォームやテンプレート等は用意されていなかったため、必要事項に加えて次の内容を記載した。

予約申請に記載した内容

申請にあたり、プレフィックスSmdn.*を予約することが妥当な理由として、予約の条件に記載されている質問に対する回答を記載した。 記載内容は以下のとおり。


パッケージ ID プレフィックスでは、適切かつ明確に予約の所有者が示されていますか? Does the package ID prefix properly and clearly identify the reservation owner?
  1. 現在公開しているパッケージは、GitHubアカウントsmdnのリポジトリでホストされている、アカウントは2010年から保有している
  2. 現在公開しているパッケージは、ドメインsmdn.jpにリンクしている、同ドメインは2010年から保有している
  3. 現在公開しているパッケージは、Smdn.*で始まるIDを使用している、同名のパッケージは2008年から公開している
  4. 現在公開しているパッケージと、GitHubリポジトリ、ドメインは相互にリンクさせてある
  5. 上記より、プレフィックスSmdn.*は、その所有者を明確に表している
そのパッケージ ID プレフィックスには個人所有者または組織に属すべきではない何らかの一般性がありますか? Is the package ID prefix something common that should not belong to any individual owner or organization?
  1. 過去12年間、smdnという名前により商標権やその他の問題が起こったことはない
  2. NuGet Galleryでパッケージを公開する前の2008年から、プレフィックスSmdn.*を持つライブラリを公開している (そしてその名前で問題が起こったことはない)
  3. 上記より、プレフィックスSmdn.*は、他の個人や組織と競合せず、法的問題の原因にならないと考えられる
そのパッケージ ID プレフィックスを予約しても、コミュニティに対してあいまいさ、混乱、その他の害が発生することは "ありませんか"? Would not reserving the package ID prefix cause ambiguity, confusion, or other harm to the community?
  1. Nuget Galleryで検索する限り、プレフィックスSmdn.*を使用しているパッケージは見つからない
  2. GitHubで検索する限り、プレフィックスSmdn.*を使用している.NETプロジェクトは見つからない
  3. 過去12年間、プレフィックスSmdn.*を持つライブラリを公開していて、(その名前の使用で)問題が起こったことはない
  4. 上記より、Smdn.*の予約は、コミュニティに対する曖昧さ・混乱・有害性を及ぼすことはない

上記の回答を含む、実際に送信した申請内容は以下の通り。

以下の申請内容はプレフィックスSmdn.*の申請に固有な内容となっているため、これをテンプレートとして使用することは推奨しません。 あくまで参考としてください。

(前略)

The ID prefix I want to reserve is as follows.

  Prefix: "Smdn.*"
  NuGet account: "smdn" <smdn@smdn.jp>

The following is a my answer and explanation for the ID prefix reservation criteria.

[1] "Does the package ID prefix properly and clearly identify the reservation owner?"
Yes.

(1) The source code of the packages are hosted on GitHub, with account "smdn". (https://github.com/smdn)
    I have owned and used the GitHub account "smdn" since 2010.

(2) The project websites for some of the packages link to my website "smdn.jp". (https://smdn.jp/)
    I have owned the domain "smdn.jp" and the website since 2010.

(3) The packages I have released since 2008 have been prefixed with "Smdn.*".

(4) Each package, the GitHub repository, and my website are cross-linked by URL.

From the above, I believe that reserving the prefix "Smdn.*" clarifies and identify the ownership of the packages.


[2] "Has the owner enabled 2FA for their NuGet.org account?"
Yes.


[3] "Is the package ID prefix something common that should not belong to any individual owner or organization?"
I have never had any trademark or other problems with the name "smdn" in the past 12 years.

Before I released first package on NuGet, I had been releasing the libraries prefixed with "Smdn.*" since 2008.
(Please see this release note: https://smdn.jp/works/libs/Smdn.Net.Imap4.Client/releases/ )

So my reservation of prefix "Smdn.*" is not considered to be in conflict with any other individuals or organizations, or cause of legal issues.


[4]. "Would not reserving the package ID prefix cause ambiguity, confusion, or other harm to the community?"
Yes.

(1) No packages with the prefix "Smdn.*" and which I do not own were not found as long as I searched Nuget Gallery with the criteria "Smdn".

(2) No .NET projects with the prefix "Smdn.*" were not found as long as I searched GitHub with the criteria "Smdn in:name".

(3) I have not had any trouble with the library name "Smdn.*" in the past 12 years.

From the above, I believe that there is no ambiguity, harm, or confusion to the community in reserving prefix "Smdn.*".

予約申請の経過

最終的には申請どおりに予約が行われたものの、メールでの申請では何らかのトラブル(不達?)により返答がなかった。 そのため、サポートのコンタクトフォーム(要ログイン)よりメールへの返答がなかった旨を添えて申請を送信したところ、3日ほどで予約が行われた。 予約が行われるまでの間に、申請内容以外に追加で何か問われるといったことはなかった。

時系列での経過は次の通り。

2021-12-29
メールにて申請を送信。
2022-01-31
返答がなく、予約が行われた様子も見られないため、申請を再送信。
2022-02-07
返答がなく、予約が行われた様子も見られないため、サポートにて状況を問い合わせると同時に、申請を送信。
2022-02-10
サポート(nuget.org admin名義)から返答、申請のとおり予約を行ったとの回答が来る。 NuGet Galleryにて実際に予約されていることを確認。
2022-02-24
先に送信したメールに対してnuget.org adminから返答、(すでに予約済みにも関わらず)申請のとおり予約を行ったとの回答が来る。
メールとサポートで申請を行ったため、何らかの行き違いが生じた?

予約された結果

プレフィックスSmdn.*を持つすべてのパッケージに✅Prefix Reservedのチェックが表示されるようになった。

NuGet GalleryでのSmdn.Net.Imap4.Clientの表示

今回の申請では、この他にSmdnというパッケージの扱いについても問い合わせた。 Smdn.*ではなくSmdnというプレフィックスで予約した場合にSmdnX, Smdn3といったIDまで予約されてしまうのは過剰と考え、パッケージSmdnの予約は行いたいがプレフィックスSmdnで予約した場合どうなるのか、仮にSmdnX, Smdn3まで含まれるようなら予約しなくてもよい、という内容を申請に書き添えた。

具体的にどうなるかの回答はなかったものの、最終的にはプレフィックスSmdn.*を予約したという回答とともに、Smdnも予約された状態になるという結果になった。

NuGet GalleryでのSmdnの表示

パッケージSmdnがどのような扱いで予約済みとなっているのか、詳細は不明。 また、パッケージSmdnXを公開しようとした場合に拒否されるのかどうかも未検証。