Devo ter uma grande reescrita que use uma pequena quantidade do código original? [fechadas]

5

Estou escrevendo uma biblioteca. É uma versão completamente reescrita de outra, para atender às minhas necessidades (compatibilidade de PCL, principalmente). No entanto, a API será completamente reescrita, já que precisarei alterar muitas coisas para conformidade com PCL. Além disso, como é uma reescrita, não poderei iniciar apenas a partir da biblioteca e alterá-la pouco a pouco, como normalmente vejo nos garfos. Eu tentei isso, mas simplesmente não funcionou.

Então, o que devo fazer? Devo eu garfo aqui ou devo fazer uma nova biblioteca?

    
por It'sNotALie. 01.09.2013 / 12:43
fonte

4 respostas

1

"It's a completely rewritten version of another one [...]"

Estritamente falando, algo completamente reescrito não é considerado uma versão; pelo menos não na computação, onde tomamos "versão" um pouco formalmente. Por exemplo, é enganoso incorreto chamar Linux de uma "versão do Unix". A palavra amplamente aceita para isso é "clone".

Algo reescrito também não pode ser uma bifurcação, mesmo que se assemelhe ao original ao ponto de ser um clone (por exemplo, por ter interfaces semelhantes ou idênticas).

Desde que você tentou modificar o original e ele não funcionou, e então embarcou em uma reescrita, essa ponte já foi gravada: a reescrita não é uma versão e, portanto, não pode ser considerada uma bifurcação. Não é nem um clone, porque as interfaces são diferentes!

É uma nova biblioteca que abrange uma área de funcionalidade semelhante à antiga.

Se os componentes internos da biblioteca são complicados e vale a pena reutilizá-los, e as novas interfaces podem ser facilmente adaptadas, para usar os internos existentes, pode-se fazer um caso para estender a biblioteca: mantenha as interfaces antigas no lugar (talvez fornecendo uma maneira para removê-los em tempo de compilação para economizar espaço). Se essa abordagem fosse viável para esta biblioteca, você não estaria fazendo uma reescrita completa .

    
por 06.11.2013 / 17:21
fonte
0

So what should I do? Should I fork here or should I make a new library?

Com ambas as opções, você será deixado trabalhando em alguma forma de nova iteração do seu projeto antigo. As diferenças estão em outras coisas:

  1. Bifurcação deixaria você para começar a trabalhar com a última versão do código da iteração anterior, então aqui depende de quão semelhante em estrutura / design você visualiza a nova iteração em relação à anterior. Se for muito diferente, você pode optar por iniciar uma nova biblioteca em vez de bifurcação.
  2. Ao criar um novo projeto, você está se destacando do repositório de código-fonte de sua iteração anterior. O forking manteria seu projet no mesmo repositório, permitindo que você retroceda ou obtenha de uma versão historial específica. As vantagens de não bifurcar, desse aspecto, provavelmente seriam melhor ordem e organização e menos confusão do seu novo repositório quando você <\> começa a funcionar .
  3. Se este for um projeto orientado para a comunidade de código aberto, você deve considerar a possibilidade de bifurcação ou não também com base no fato de que a decisão, por si só, transmitirá conteúdo para a comunidade. Bifurcação indicaria que a nova iteração deveria ser pensada em termos de ser uma continuação direta da anterior. Começar um novo projeto separado indicaria o contrário.
por 06.09.2013 / 22:48
fonte
0

Você tem testes? Em caso afirmativo, até que ponto eles estão ligados ao código e não ao comportamento? Eu trabalharia nos testes se eles funcionassem no nível de comportamento.

Se você não tem testes, então (por favor) escreva um pouco e use isso para expulsar o que você precisa. Parece uma reescrita, então, além de reutilizar idéias, pode ser melhor dizer que é um "grande número de lançamento" e, portanto, uma nova versão.

    
por 10.09.2013 / 00:02
fonte
0

Dado que você está essencialmente reescrevendo tudo do zero, você deve criar um novo projeto. Bifurcar-se implicaria que os dois compartilham semelhanças suficientes que em algum momento, você poderia compartilhar recursos, tomar alguma nova adição aqui ou dar alguma correção lá. Isso claramente não será o caso.

    
por 09.10.2013 / 00:31
fonte