我在自己的时间里做了很多开发工作。我从事的这些项目都是为了娱乐和学习(到目前为止)。我通常使用Maven进行Java开发,但也曾涉猎.NET和Python。我从事的所有项目都使用开源许可证,尽管其中大多数不在任何公共代码存储库中。
Java / Maven开发要求我使用唯一的groupId
(例如,“ com.mydomain”)和唯一的package
(目录)结构,通常包含groupId
.NET开发鼓励唯一性,namespaces
在这种情况下,我使用与Java package
概念相似的约定。为了确保唯一性,我通常只使用其中一个域名颠倒的域名(例如“ ca.jessewebb”);我相信这是非常普遍的做法。
我正处于创建一个新的开源Java / Maven项目的初期阶段(我们将其称为“ newproj”),我想将其放在GitHub上。我在GitHub上的用户名是“ jessewebb”,因此它的网址为:https://github.com/jessewebb/newproj
。我不想麻烦注册“ newproj.com”域名,所以我决定分别使用“ ca.jessewebb”和“ ca.jessewebb.newproj”作为groupId
和package
。
在我看来,我的个人身份出现在代码中以及作为项目主页的一部分(在GitHub URL中)可能会导致潜在的贡献者对参与我的项目进行三思。这是一个问题,我不希望它成为我的项目。如果可以,我希望传达的信息是我不拥有该项目。现在,老实说,这确实没什么大不了的,因为我怀疑我的项目会吸引社区的广泛参与,但是我也认为这更多的是避免任何可能阻止潜在捐助者的理由。
再举一个例子,我几年前创建了一个Google Code项目(我们称其为“ oldproj”)。创建项目时,我知道我将其托管在Google Code上,因此我使用了groupId
and包名称“ com.googlecode.oldproj”,这与Google Code为每个新项目提供的默认域名相反。事实证明这不是一个好主意。一年多后,我搬到了代码到不同的回购协议,我不得不重新命名这些标识符(以及我没有有但...)。当时,我没有任何域名,最终我购买了域名“ oldproj.com”,并使用了它。我之所以喜欢它,是因为它为项目赋予了自己的身份,并且我并没有在代码上加盖我的名字。我可以很容易地注册“ jessewebb.ca”域名,并使用“ ca.jessewebb.oldproj”作为软件包名称,但是我没有,因为那时我也有同样的担忧。
所以我的问题是
在创建开源项目时如何避免使用我自己的(域名)名称,同时又保持包/名称空间的唯一性?
随着项目获得更大的发展势头,注册域名很有意义,但是尽早这样做似乎很愚蠢和浪费金钱。我意识到我实际上并不需要拥有域名才能在代码中使用它,但是这感觉很错误,同时可能导致擅自占地者从您的身下抢走它。别人对这个困境怎么办?是否有一些流行的(广泛使用的,大型社区等)开源项目的示例,这些项目包含原始开发者的身份作为其自身标识符的一部分?