私は図書館を書いています。これは、私のニーズ(主に、PCLの互換性)に合わせて、完全に書き直されたバージョンです。ただし、PCLに準拠するために多くの変更を加える必要があるため、APIは完全に書き直されます。また、書き直しなので、通常フォークで見られるように、ライブラリから始めて少しずつ変更することはできません。私はそれを試しましたが、うまくいきませんでした。
だから私は何をすべきですか?ここでフォークする必要がありますか、それとも新しいライブラリを作成する必要がありますか?
「それは別のものの完全に書き直されたバージョンです[...]」
厳密に言えば、完全に書き直されたものはバージョンとは見なされません。少なくとも、「バージョン」をある程度正式に採用するコンピューティングではそうではありません。たとえば、Linuxを「Unixのバージョン」と呼ぶのは誤解を招きます。このために広く受け入れられている言葉は「クローン」です。
書き直されたものは、たとえそれがクローンであるという点でオリジナルに似ていても(類似または同一のインターフェースを持つなど)、フォークになることはできません。
オリジナルを変更しようとして機能しなかったため、リライトに着手したため、そのブリッジはすでに焼き付けられています。リライトはバージョンではないため、フォークとは見なされません。インターフェイスが異なるため、クローンでもありません。
これは、古いものと同様の機能領域をカバーする新しいライブラリです。
ライブラリの内部が複雑で再利用する価値があり、既存の内部を使用するように新しいインターフェイスを簡単に適合させることができる場合は、ライブラリを拡張するケースを作成できます。古いインターフェイスをそのままにしておく(おそらくそれらを削除する方法を提供するスペースを節約するためにコンパイル時に)。ただし、このライブラリでそのアプローチが実行可能である場合は、completeの書き換えは行いません。
テストはありますか?もしそうなら、彼らは行動ではなくコードにどれほど緊密に結びついていますか?テストが動作レベルで機能する場合は、テストを実行します。
テストがない場合は、(お願いします)いくつか書いて、それを使って必要なものを追い出してください。書き直しのように聞こえるので、アイデアを再利用することは別として、それは「メジャーリリース番号」であり、したがって完全に新しいバージョンであると言ったほうがよいかもしれません。
だから私は何をすべきですか?ここでフォークする必要がありますか、それとも新しいライブラリを作成する必要がありますか?
両方のオプションを使用すると、古いプロジェクトの何らかの形の新しいイテレーションに取り組むことができます。違いは他のものにあります:
基本的にすべてを最初から書き直していることを考えると、新しいプロジェクトを作成する必要があります。フォークは、2つが十分な類似性を共有していることを意味し、将来的には機能を共有したり、ここで新しい追加を行ったり、修正を加えたりすることができます。それは明らかにそうではないでしょう。