I am starting an open source project that consist of two parts: a program for reading, writing, modifying, and displaying information from file and a standard for the file. Obviously, this project may go nowhere, but in case it does I want to make sure I don't have any legal problems later.

I want the code to be under the GPL 3 library. However, I would like the standards to be open as possible i.e. other software programs, even proprietary ones, to be able to read and write the format. Ideally, they would have to change the name of they want to extend it.

How do I set up a project like this? Or at least not wedge myself in a corner where I can't set up my project like this later?


In most cases, you can't copyright or otherwise get IP protection on a file format so there's not much to worry about here, but if you want to make it as easy as possible for other implementations to exist:

  1. Write a specification for the file format, completely independent of any implementation for reading or writing that format. Release this specification under whatever license you want, even "all rights reserved" (this decision probably depends on how you want to manage updates and extensions to the format). If you really want to, include a statement in the specification that others are encouraged to write implementations to read and write the format.
  2. Write your GPL code which implements your specification. Try really hard to ensure that any edge cases are covered in the specification so that people definitely don't have to look at your GPL code in order to interoperate.

In case it's not obvious, the key point here is to separate the specification from the implementation.

  • 1
    A practical and low-effort way to write that specification is to create a repository of language-agnostic test cases, and use that repository as test input data for the GPL implementation. This ensures the test cases always match the GPL reference implementation, unlike a specification which may fall out of date. – amon Aug 2 '18 at 6:36

Your Answer

By clicking "Post Your Answer", you acknowledge that you have read our updated terms of service, privacy policy and cookie policy, and that your continued use of the website is subject to these policies.

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