por que eu hospedaria o código em algum lugar como este?
Um ponto chave do desenvolvimento de software de código aberto é compartilhar o código-fonte. Existem várias maneiras de fazer isso, como colocar arquivos tar / zip em um servidor web ou ftp. Serviços como o código do google (ou sourceforge.net, gitorious.org, bitbucket.org e muitos outros) eliminam a necessidade de executar seus próprios servidores para esse fim.
E isso significa que eu preciso remover o site da minha hospedagem atual ou esse é um tipo totalmente diferente de hospedagem?
Esses serviços não são hosts da web de uso geral, mas executam serviços muito especializados. Eles não devem ser a página inicial de um produto, mas mais um painel de desenvolvedor.
Com o código do Google você obtém
- um wiki
- um bugtracker
- espaço regular para download de arquivos
- um servidor de controle de versão
É claro que você pode configurar esses softwares em um servidor da Web comum (o controle de versão pode ser complicado, mas isso depende muito de detalhes), mas o principal benefício do uso de um host de desenvolvimento é que você não precisa tomar cuidado desses sistemas por conta própria. A principal desvantagem é que você não tem controle sobre qual software é usado no servidor, é necessário conviver com o que está disponível nesse host. Você também precisa considerar o que acontece se o serviço sair do negócio (ok, o Google nunca falha) e se você pode levar os dados do host atual para outro ou para o seu próprio servidor (pense em backups).
O que acontece quando eu faço o meu site de código aberto, que direitos tenho,
Essa é uma pergunta difícil, pois depende da lei do país em que você vive.
que direitos eu dou.
Isso depende da licença que você concede ao produto. Pode ir de código aberto proprietário (pense no PGP), onde o usuário basicamente não pode fazer nada com o código; no outro extremo da escala, o domínio é público, onde todos podem fazer o que quiserem.
Como isso funciona, as pessoas simplesmente vêm e jogam código para mim de graça?
É muito improvável que isso aconteça, pois seu produto precisa de popularidade suficiente para atrair outros desenvolvedores.
[...] e agora está me perguntando se eu quero que o projeto tenha hospedagem de código Git, Mercurial ou Subversion.
Estes são três sistemas de controle de versão diferentes, onde o Subversion é centralizado, enquanto o Git e o Mercurial são distribuídos.
Existem guerras religiosas sobre qual delas usar, mas o ponto principal é usar uma. Consulte http://martinfowler.com/bliki/VersionControlTools.html para obter mais detalhes.
Quando escolher o Subversion:
- Você possui arquivos binários, que não podem ser facilmente mesclados, e precisa do fluxo de trabalho de bloqueio-> modificação-> confirmação-> desbloqueio, que o subversion suporta¹
- Você precisa verificar apenas uma parte da estrutura de diretórios.
Is Existe uma extensão de bloqueio para mercurial, mas não tenho experiência com ele e não posso dizer se é utilizável.
Quando você não precisa dos recursos anteriores, é melhor usar o Mercurial ou o Git. Ambos têm as seguintes vantagens sobre o Subversion:
- rápido (e com rápido eu realmente quero dizer rápido )
- fácil ramificação e fusão (isso melhorou desde o Subversion> = 1.5, mas não é o mesmo)
- confirmar e publicar está dissociado, para que você possa trabalhar sem perturbações em um recurso e publicar o trabalho quando estiver pronto
- eles rastreiam o estado do diretório do produto como um todo
- você obtém uma cópia completa de todo o histórico da versão ao clonar um repositório remoto
números de revisão criptograficamente protegidos, o que significa que, mesmo quando alguém quebra no servidor, ele não pode colocar o código no lugar sem alterar o histórico de revisões
- mas como ninguém verifica essas revisões, esse recurso praticamente não é eficaz