We have a large proprietary application, a portion of which is a collection of microservers written in Go. We're considering the following:

  • Write a Go microserver, with a GPL license, on top of a particular GPL'ed application's C API.
  • Call the server via REST or equivalent RPC (as we do all of our other microservers) from other application components.

We'd be more than happy to contribute the Go server to the community. Would this impose any requirement on us to GPL our own client code that calls this server?

1 Answer 1


The GPL requires that for any program that contains GPL parts, recipients must be able to receive the complete corresponding source code of the entire program under the terms of the GPL.

This indicates that your scenario won't impose further compliance obligations:

  • you are not necessarily giving anyone else a copy of your GPL-covered server. When there are no recipients, there are no GPL compliance obligations. This is potentially different for the AGPL, which gives remote users the same rights as recipients.

  • your different services are likely to be separate programs, not multiple parts of a larger distributed programs. It is not entirely clear where one program starts and the other ends in the eyes of copyright law, so it's best to keep a bright line between your services. Communicating via network protocols such as REST APIs can be a good indication of this separation, but it possibly also matters how “intimate” the exchanged data is. See also the section on Mere Aggregation in the GPL FAQ.

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.