SkyrimForge.com Wiki

Projects / Cloning

r2

Cloning is a mechanism to allow for developers who are not authors on a project to work on a project, fix defects, add enhancements, or take it in a completely different direction.

Cloning is only available on projects that meet The Open Source Definition or projects where the author specifically allows it.

Cloning is somewhat of a middle-ground between branches and forks.

Branch
The owner of the project must authorize this by making the curious developer an actual author on the project. It's still part of the same project in the mainline repository.
Clone
The owner of the project must either have an open source license or authorize the project to be cloned. This is still under the umbrella of the main project, but is not the mainline repository.
Fork
Forks occur when there is political unreasonability or when a clone has diverged from the original project so much that it essentially is its own project. The fork must be named something different from the original project and is no longer under the umbrella of the original project. It is recommended that if you make a fork or if someone makes a fork of your project that an administrator be contacted and made aware of the situation from both sides.

Clones are an amazing way to participate in a project's development. In fact, for some people, it may be the preferred way.

Here's a default example of how someone might use a clone:

  • Let's say the project "Bumblebee" exists and the author is called Hubert. By default it has a mainline repository, it's the official one.
  • Another addon author, let's call him Chip, says "Well, I want to add ponies because ponies are awesome!"
  • Chip goes to http://wow.curseforge.com/projects/bumblebee/repositories/mainline/clone/
  • Decides he wants to call his repositories "omg-ponies", and types it in.
  • Within seconds, Chip can start hacking on the omg-ponies repository, the link is provided to him. It will be something along the lines of [email protected]/wow/bumblebee/omg-ponies.git, depending on the repository. Even if there is no repository, he can still upload files to the omg-ponies clone for others to download.
  • After hacking for a day or so, Chip has successfully added ponies.
  • Chip tells the author, Hubert, (by filing a ticket of type Patch) "I made a clone omg-ponies that adds ponies to Bumblebee and it's far more awesome."
  • Hubert then checks out his repository, sees the changes he made and multiple things can happen:
    1. He doesn't like the changes, tells Chip it's a bad idea :-(
    2. He says it's a good idea, just touch it up a bit and he'll include it
    3. He loves it, thinks the code is good and is too enamored with said ponies to not include it.
  • Let's assume option 3 was taken. Hubert merges in the changes, closes the ticket Chip filed and everyone lives happily ever after. The author may even make Chip a proper author of the project so he can work on mainline, or just keep working on the omg-ponies clone and Hubert can periodically merge in.

Facts

Date created
Mar 05, 2009