作成するオープンソースプロジェクトの識別子、パッケージ、または名前空間で自分の名前を使用しないようにするにはどうすればよいですか?


15

私は自分の時間に多くの開発をしています。私が取り組んでいるこれらのプロジェクトはすべて、これまでの楽しみと学習のためだけのものです。私は通常、Mavenを使用してJava開発を行いますが、.NETおよびPythonで手を出すことでも知られています。私が取り組んでいるプロジェクトはすべてオープンソースライセンスを使用していますが、それらのほとんどはパブリックコードリポジトリにはありません。

Java / Mavenの開発では、ユニークgroupId(「com.mydomain」など)およびユニークpackage(ディレクトリ)構造を使用する必要があります。通常、groupId.NET開発でnamespacesはJava packageコンセプトと同様の規則を使用するユニークを推奨します。一意性を確保するために、私は通常、ドメイン名の1つを部分を逆にして使用します(例:「ca.jessewebb」)。これは非常に一般的な方法だと思います。

私は、新しいオープンソースのJava / Mavenプロジェクトを作成する初期段階にあり(「newproj」と呼びましょう)、GitHubに配置したいと思います。GitHubのユーザー名は「jessewebb」なので、次のようなURLが付与されますhttps://github.com/jessewebb/newproj。「newproj.com」ドメイン名をわざわざ登録したくないので、「ca.jessewebb」と「ca.jessewebb.newproj」をそれぞれgroupIdおよびとして使用することにしpackageました。

コード内およびプロジェクトのホームの一部(GitHub URL内)に個人的なIDが存在することで、潜在的な貢献者が私のプロジェクトに関与することについて再考する可能性があります。これは問題であり、私はそれはしたくない私のプロジェクト。代わりに、自分がプロジェクトを所有していないというメッセージを伝えることができればいいと思います。さて、正直に言って、私のプロジェクトはコミュニティの関与を増やすとは思えないので、それほど大したことではありませんが、これは貢献者になることを思いとどまらせる可能性を避けるためのさらに多くの理由と考えています。

別の例として、数年前にGoogle Codeプロジェクトを作成しました(「oldproj」と呼びましょう)。プロジェクトを作成したとき、Google Codeでホストすることを知っていたのでgroupId、「com.googlecode.oldproj」というパッケージ名を使用しました。これは、Google Codeがすべての新しいプロジェクトに提供するデフォルトのドメイン名の逆です。これはそれほど素晴らしいアイデアではないことが判明しました。1年ほど後、私はコードを別のリポジトリに移動し、これらの識別子の名前を変更する必要がありました(私は持っていませんでしたに...)。当時、私はドメイン名を所有していなかったため、「oldproj.com」というドメイン名を購入し、それを使用しました。これは、プロジェクトに独自のアイデンティティを与え、どこでもコードに自分の名前を刻印していなかったので、これが好きでした。「jessewebb.ca」ドメイン名を簡単に登録し、「ca.jessewebb.oldproj」をパッケージ名として使用することもできましたが、当時も同じ懸念があったため、登録しませんでした。

だから私の質問は...

パッケージ/名前空間の一意性を維持しながら、オープンソースプロジェクトを作成するときに自分の(ドメイン)名を使用しないようにするにはどうすればよいですか?

プロジェクトが勢いを増すにつれて、ドメイン名を登録することは理にかなっていますが、これを前もって行うのはばかげており、お金の無駄です。コードでドメイン名を使用するために実際にドメイン名を所有する必要はありませんが、それは間違っていると感じ、その間にあなたの下から不法占拠者を奪う可能性があります。他の人はこのジレンマについてどうしますか?独自の識別子の一部として元の開発者のIDを含む人気のある(広く使用されている、大規模なコミュニティなどの)オープンソースプロジェクトの例はありますか?


2
おっと、かなり長いが、それでもいい質問だ!
マルセル

1
パッケージ/名前空間でUUIDを使用しますか?;-)
Jeroen

回答:


5

私のプロジェクトでは、名前を付けていますが、必ずしもドメインを付けているわけではありません。したがって、私のパッケージ名(および名前空間)は、コードがホストされている場所に関係なく、通常は「projectname.libraryname」です。

私はこれが非常に自由に扱われる.NETに慣れています。


これは、プロジェクトにドメインを登録していない、または(すぐに)ドメインを登録したい場合に適したソリューションだと思います。ドメインがある場合でも、これを行うことができます。一意のプロジェクト名を使用していることを確認するのにも役立ちますが、決して悪いことではありません。より良いものが出ない限り、私はおそらくすぐにこの答えを受け入れるでしょう。ありがとう!
ジェシーウェッブ

ええ、.NETプログラマーはこれを行いますが、それは良い考えではありません。プロジェクト名が作り上げの単語であれば、うまくいくかもしれませんが、私が見たすべての「Downloader」または「Browser」プロジェクトにドルがあればいいのにと思います。
ロスパターソン

1
私はすべてのプロジェクトでこの戦略を使い始めました。私はプロジェクトの一意の名前、ほぼコード名(しゃれを許して)を思いつき、それを私のパッケージ/名前空間に使用します。少なくとも私がドメイン名を必要とするときが来るまで、ドメイン名を心配する必要がなくなります。
ジェシーウェッブ

2

どこで見たのか思い出せませんが、次のような構造を使用することが提案されているのを見ました:

YourIdentifier.YourProduct.YourComponent

YourIdentifierは、所有するドメイン、(かなり一意の)インターネットエイリアスなどのようなものです。コンポーネント名は、製品の「コア」コードのために省略されます。たとえば、BarelyMVCという名前の小さなMVCフレームワークがあるため、次のような名前空間があります。

Earlz.BarelyMVC
Earlz.BarelyMVC.Authentication
Earlz.BarelyMVC.Caching

など。ほとんどの場合、オンラインエイリアスは他の開発者との競合を避けるために非常にユニークです。

独自のオンラインエイリアスを使用するのが怖い場合は、自分用の「ラベル」を作成してください。会社または何か(またはドメイン)として正式に登録する必要はありません。たとえば、人気のあるJson.Netライブラリは名前空間を使用しますNewtonsoft.Json。著者の姓「newton」に基づいていることは明らかですが、誰もそれを気にかけているとは思いません。また、正式な会社を登録している場合は、もちろんそれを使用できます。たとえば、私の会社が作成したほとんどのパブリックAPIにPreEmptiveSolutionsは、会社名で始まる名前空間があります


1
.NETの世界では非常に一般的であり、backwards-domain-nameの事柄は実際には決してキャッチされませんでした。また、「YourIdentifier」が非常にユニークである限り、機能します。しかし、Newtonsoftでさえ偶然にしかユニークではありません。JamesNewton-Kingは実際にそのような会社を経営しておらず、その商標はニュージーランドにしか存在しません。
ロスパターソン

1

Javaパッケージ名または.NET名前空間がドメイン名であるというルールはありません。それらがユニークであるという要件さえありませんが、それは確かに良いアイデアです。私は実際にあなたが使用するのが正しいと思いますcom.googlecode.oldproj、そしてあなたの靴で私はcom.oldproj新しいドメイン名のための宣伝を得ようとしない限り、私は切り替えなかったでしょう。


ドメイン名を使用する必要があるというルールはありませんが、少なくともJavaおよび.NETの世界では、一意性を確保するのに役立つからといって、それは非常に一般的な慣行だと思います。また、あなたは私が使用するのが正しいと思うと言いましたがcom.googlecode.oldproj、なぜこれが良いアイデアだと思いますか?振り返ってみると、コードをホスティングプロバイダーに結びつけるのはちょっとばかげていると思いました。
ジェシーウェッブ

1
重要なのは、ホスティングプロバイダーに結び付けられることではなく、このプロジェクトに固有の従来固有の識別子であることです。技術的には、これはすべて「com.jesseweb.oldproj」です。名前を付けたくないので、良い決断でした。Javaパッケージと.NET名前空間は、ダウンロードサイトなどに誘導する道しるべではなく、慣例により一意の識別子にすぎません。
ロスパターソン
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.