I am looking to write a new open source library (at
github.com/me/my_lib, say). Rather than starting from scratch I would like to begin with a copy of the code from an existing project (
their_lib is an active project,
my_lib needs to be independent because its goals are quite different.
I expect that by the time
my_lib sees its first release, I will have removed about 1/3 of
their_lib's code, and re-written another 1/3. The two projects will therefore have about 1/3 of the original code (on the order of 10,000 lines) in common.
How should I structure my git repository/ies to ease both the development of my project and, where possible, two-way sharing of code between the two libraries (e.g. bug fixes)?
Should I start
me/my_lib as a fork/clone of
them/their_lib (i.e. including the full history), or would I be better off just importing the latest release of
them/their_lib (perhaps leading to a tree structure like that illustrated here)?
To share code in the
my_lib direction, how should I keep up to date with changes in
them/their_lib? In the opposite direction, will I need a separate fork
me/their_lib to use for pull requests?