We have a commercial product, and we want to provide an opensource project for community.

But those two projects are different, one commercial, one community, like features.

Then, we will have two code repositories, right?

Well, we have no experiences to sync codes between them, like new features request from community or bug fix.

  • How to manager those repositories together? Like we use GitLab internal, and use GitHub for external.

  • Any solutions for this kind of project/repository management?

I think it's a multi project management problem. It's a cloud native product, so it has many repositories currently.

Thanks very much!

1 Answer 1


Typical solutions on the market are the following:

  • The opensource version is public, anybody can download and use it - but the extra features of the closed project is only distributed as modules/extensions which are not public. It works well if your project is modular, and it is not a problem if it is a script language (like python).
  • The opensource version is public, the commercial version is a service. This is being done by, for example, gitlab.
  • You release the source of the public part, but do not the commercial part.

Syncing code between entirely different repos will be surely a bad solution. Make your code modular and publish only the modules what you want to. You can do this modularity also on the source level (having a set of sub-projects, some of them have public repos, others do not).

  • 2
    +1 from me. Also, OP, don't forget that if you go for a solution where code is shared between the proprietary and free offerings, and you accept contributions to the latter, it will be very important to have a CLA in place that lets you reuse those contributions in the proprietary offering without affecting the license on it.
    – MadHatter
    Nov 3, 2020 at 11:39
  • Thanks for the solution, but i still have a problem, CI/CD. If we refactor the project to modules with different repos, public and private, how do we release our project as a products? Nov 4, 2020 at 5:43
  • @MingningShao are you asking how to pull all the modules involved in your private repo together in order to release it as a product?
    – MadHatter
    Nov 5, 2020 at 12:39
  • Yep, we have multi repos, so how can we release them as a products? We usually need CI/CD automatically. I get the points, but still confused about details, 1.use git submodules or git subtree;2.the module is an independent project, means can compile\build independently, or, part of the project, means a structure of the project, can't build\compile independently. Thanks! Nov 6, 2020 at 2:52

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.