Suppose I am developing a commercial product, but one heavily based on open source software. Further suppose one of the open source projects I use has a permissive license (such as Apache 2).

At some point, I realize I need to make significant changes to that open source component. I have two choices:

  • Work with the upstream team to get my changes accepted into the open source version of the component.
  • Create an internal fork of the component and make my changes there.

The first option is obviously ideal, but there are considerations which may lead me to the second option. Some that I see are:

  • The changes may not be acceptable/desirable to the people managing the upstream.
  • The timeframe for getting changes into the upstream project and available for use may not fit within my own schedule.
  • I may wish to implement some proprietary features within the project.

At what point does it become desirable/practical to take the second path, and what are seen as the major drawbacks to doing so?

2 Answers 2


The main problem with a private fork is that you now have to do the maintenance work of merging any changes made on the upstream version. This work will become more and more the further your forks diverge because you will encounter more and more conflicts (including some non-obvious ones). There are, however, still situations where you might still want to do a fork:

  1. The upstream project is practically dead and you don't expect many future updates from them anyway.
  2. The software already fulfills all your requirements (except those they won't implement) and so you believe you won't need any further updates from them anyway (even when security related).
  3. You need to make changes to the software which are so significant that future updates won't apply to you anyway (but then why aren't you developing from scratch?).

By the way: When you use the software only internally, you don't even need a permissive license. Most copyleft licenses (like the GPL) only require you to give away your sourcecode when you give away the binary. When you keep it to yourself, nobody can force you to license anything.

  • 1
    This accords with my own experience.
    – kdopen
    Jun 23, 2015 at 19:40
  • 1
    The exception being the GPL Affrero license, which requires offering and giving the source code EVEN IF you only host and do not "distribute" it. en.wikipedia.org/wiki/… Jul 22, 2015 at 18:56

There is a third option:

  • Create a fork and publish it under the same license as the original

Your changes might not be desirable to the original upstream but that doesn't mean somebody else couldn't find use for them.

  • 1
    Yes, I actually included that in my definition for the 'forking' tag (if the edit gets approved)
    – kdopen
    Jun 23, 2015 at 18:44

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.