Quelle est l'étiquette appropriée pour publier une réécriture complète d'un projet existant?

12

Je suis nouveau dans le monde open source. Le projet sur lequel je travaille réside sur Github. (Juste pour référence) Le projet sur lequel je travaille est un plug-in pour le Plex Media Server. Je prévois de soumettre mon plug-in à Plex afin qu'il soit inclus dans leur "app store". Passons maintenant à ma question.

Lorsque j'ai commencé, j'ai trouvé un ancien plugin semi-abandonné qui faisait ce que je voulais mais pas très bien. J'ai commencé par contribuer à ce repo. J'ai immédiatement été nommé collaborateur avec tous les droits sur le référentiel, car le propriétaire actuel a dit qu'il était trop occupé pour jouer avec. Cependant, alors que je commençais à approfondir le code, je me suis rendu compte qu'il était inutile. La base de code existante était horrible et il n'y avait aucun moyen efficace de la réparer. J'ai fini par partir de zéro. Le seul code que j'ai utilisé dans mon nouveau plugin était le code que j'avais engagé initialement.

Le projet est maintenant prêt à être publié. Cependant, je ne sais pas comment procéder. Je vois mes options comme suit:

  1. Créez un nouveau dépôt et oubliez simplement celui existant. Je ne sais pas si je devrais même mentionner le dépôt précédent et / ou ses contributeurs. Je n'ai utilisé aucun de ces codes / ressources et j'ai créé une base de code entièrement nouvelle. Alors que le plugin fait certaines des mêmes choses que l'ancien, il le fait d'une manière entièrement nouvelle et plus efficace.

  2. Je bifurque le référentiel existant, supprime le code existant et valide mon nouveau code. Je suis vraiment nouveau pour Git, donc je ne sais pas si c'est même possible.

  3. J'engage mes modifications sur le référentiel existant et vois ce que les contributeurs actuels ont à dire.

Des trois options, je penche fortement vers la première. MAIS! Je suis nouveau sur l'open source et je veux m'assurer que je fais les choses selon une bonne étiquette. Je ne veux pas que mon premier projet explose dans mon visage et devienne un désastre. L'option deux ne sonne pas mal mais je ne sais pas si je suis censé le faire. Je ne sais pas comment l'histoire et les différences fonctionneraient. Nous ne parlons que de 500 à 1 000 lignes de code au maximum. Ce n'est donc pas une énorme base de code.

Merci pour toute contribution que vous pouvez fournir!

Matt Keller
la source
10
Puisqu'il s'agit de tout nouveau code, j'aurais tendance à choisir le n ° 1 parce que l'historique de l'ancien projet est vraiment hors de propos. Mais ce serait bien d'ajouter quelque chose au LISEZMOI sur le modèle de "Basé sur une idée de ....".
Peter Rowell
2
@PeterRowell veuillez mettre ce commentaire dans une réponse afin que je puisse le voter!
MattDavey
@PeterRowell Merci pour les conseils. C'est une bonne idée.
Matt Keller
1
Pour 2, il n'est pas nécessaire de supprimer le référentiel existant. Quoi que vous fassiez, je suis sûr que le développeur d'origine apprécierait que vous lui disiez que vous êtes en train de bifurquer le projet
James

Réponses:

13

Puisqu'il s'agit de tout nouveau code, j'aurais tendance à opter pour le n ° 1 car l'historique de validation de l'ancien projet est vraiment hors de propos. Mais ce serait bien d'ajouter quelque chose au LISEZMOI sur le modèle de "Basé sur une idée de ....".

Je suis un grand fan de reconnaître d'où nous (ou nos algorithmes) venons. Si vous regardez en arrière dans les brumes de l'histoire, vous verrez que nous sommes tous sur les épaules de ceux qui nous ont précédés - nous tous . Par exemple, j'ai développé et commercialisé un moteur de recherche de similarité dans les années 1980, et il semblait assez radical pour certaines personnes (Boolean était King à l'époque). Mais le cœur de l'algorithme que j'utilisais était basé sur un travail commencé par Gerard Salton à Cornell 20 ans avant moi.

Peter Rowell
la source