Eu desenvolvo muito em meu próprio tempo. Esses projetos em que trabalho são todos apenas para diversão e aprendizado (até agora). Geralmente desenvolvo Java com o Maven, mas também sou conhecido por mexer no .NET e Python. Todos os projetos nos quais trabalho usam licenças de código aberto, embora a maioria deles não esteja em nenhum repositório de código público.
O desenvolvimento Java / Maven exige que eu use uma estrutura única groupId
(por exemplo, "com.mydomain") e uma estrutura exclusiva package
(diretório), geralmente contendo o groupId
tempo namespaces
em que o desenvolvimento .NET incentiva a única na qual eu uso convenções semelhantes ao package
conceito Java . Para garantir a exclusividade, geralmente uso apenas um dos meus nomes de domínio com as partes invertidas (por exemplo, "ca.jessewebb"); Eu acredito que esta é uma prática muito comum.
Estou nos estágios iniciais da criação de um novo projeto Java / Maven de código aberto (vamos chamá-lo de "newproj") e gostaria de colocá-lo no GitHub. Meu nome de usuário no GitHub é "jessewebb" para que isso irá dar-lhe uma URL como: https://github.com/jessewebb/newproj
. Não quero me preocupar em registrar o nome de domínio "newproj.com", por isso decidi usar "ca.jessewebb" e "ca.jessewebb.newproj" como groupId
e package
, respectivamente.
Ocorreu-me que a presença de minha identidade pessoal no código e como parte da casa do projeto (na URL do GitHub) provavelmente fará com que um colaborador em potencial pense duas vezes antes de se envolver com o meu projeto. Isso é um problema, não quero que seja meu projeto. Eu preferiria se pudesse transmitir a mensagem de que não sou o dono do projeto. Agora, com toda a honestidade, isso realmente não é grande coisa, porque duvido que meus projetos tenham muito envolvimento da comunidade, mas também vejo isso como uma razão ainda mais para evitar qualquer possibilidade de dissuadir possíveis colaboradores.
Por outro exemplo, eu criei um projeto do Google Code alguns anos atrás (vamos chamá-lo de "oldproj"). Quando criei o projeto, eu sabia que o hospedaria no Google Code, então usei o groupId
nome e do pacote "com.googlecode.oldproj", que é o inverso do nome de domínio padrão que o Google Code fornece a cada novo projeto. Isso acabou sendo uma idéia não tão boa; mais ou menos um ano depois, mudei o código para um repositório diferente e tive que renomear esses identificadores (bem, não tinhapara mas ...). Na época, eu não possuía nomes de domínio e acabei comprando o nome de domínio "oldproj.com" e o usei. Gostei disso porque deu ao projeto sua própria identidade e não estava gravando meu nome no código em todos os lugares. Eu poderia ter tão facilmente registrado o nome de domínio "jessewebb.ca" e usado "ca.jessewebb.oldproj" como o nome do pacote, mas não o fiz porque também tinha as mesmas preocupações naquela época.
Então minha pergunta é ...
Como evitar o uso de meus próprios nomes (domínio) ao criar projetos de código aberto, mantendo a exclusividade dos pacotes / espaços para nome?
À medida que os projetos ganham mais impulso, faz sentido registrar os nomes de domínio, mas parece bobagem e um desperdício de dinheiro fazer isso mais cedo. Percebo que, na verdade, não tenho que possuir o nome de domínio para usá-lo no código, mas isso parece errado e pode levar a que um invasor o pegue debaixo de você enquanto isso. O que outras pessoas fazem sobre esse dilema? Existem exemplos de projetos de código aberto populares (amplamente utilizados, comunidade grande, etc.) que contêm a identidade do desenvolvedor original como parte de seus próprios identificadores?