CurseForge.com Knowledge base

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.

You must login to post a comment. Don't have an account? Register to get one!

  • 3 comments
  • Avatar of Farmbuyer Farmbuyer Nov 20, 2010 at 19:51 UTC - 0 likes

    Zeph's general comment is accurate though: multiple possibilities are listed but then not explained.

    There are other questions that aren't explained anywhere. Do addons in a clone branch still get packaged? Are they available via the curse client? Can tickets be filed against them? Can clones be deleted once they're no longer relevant?

  • Avatar of Azethoth Azethoth Apr 15, 2010 at 19:27 UTC - 0 likes

    Lets say that a clone is made, merged, is now obsolete. Well it just sits there wasting time on the repository tab. I do not want to have to click mainline. I do not want to see the clone. How is that done?

    TheZephyron: The reason a clone was allowed to begin with was due to open source licensing. Crying that open code was reused without attribution that satisfies you makes no sense.

  • Avatar of TheZephyron TheZephyron Apr 01, 2010 at 19:59 UTC - 0 likes

    You state that multiple things can happen, list 3 things, then only explain the outcome if one of the choices is selected. What if Hubert was offended that Chip would dare to think that his addon was anything other than completely perfect as it was? What if Hubert decides Chips code is wonderful, but instead of giving him just credit he tells him to go boil his head and then a month or so later adds his new awesome idea of "z"omg-ponies to Bumblebee and conveniently forgets where his inspiration came from?

    I don't want to be a troll, but this sort of thing happens and it's not a bad idea to put some guidelines of what should and could be done in that situation just in case.

  • 3 comments

Facts

Date created
May 19, 2008
Last updated
Jul 12, 2011

Author