4

I'm starting to work on a new UI application written in C#, so the MVVM pattern invites itself. However, I have little experience working with it and I need to learn a bit more before I can use it. The good starting point is to structure my project (folder hierarchy, etc.) after a project made by people who know what they are doing. My friend suggested me a project written in the same framework as the one I am planning to use, and the project also uses MVVM, however, the project is licensed under GPL whereas I'd like to keep my project under the more permissive MIT license.

The question here is twofold, but that's only due to my own curiosity - one could otherwise answer this with a simple "yes" or "no":

  1. Can an implementation of a design pattern (especially the project's structure and folder hierarchy) be even licensed? I can faintly remember some discussion I saw regarding game design which got concluded with the "gameplay can't be copyrighted, only the look and feel can". Here, the "gameplay" seems to be like design patterns to my layman understanding.
  2. If it can be licensed, is taking inspiration from it (i.e. using my own classes, elements and names, but under the same structure) enough to require me to use GPL?

One could probably say "just sweep it under the rug, no one will know". That might be true, but I'm genuinely curious... also it'd be immoral, so I'd rather take time to research everything myself instead of taking the shortcut.

1 Answer 1

5

The GPL License has (among others) a few definitions which are relevant for this question:

“The Program” refers to any copyrightable work licensed under this License.

A “covered work” means either the unmodified Program or a work based on the Program.

So now the question is if your software, which copies the structure of the GPL-ed project (folder hierarchy, etc.), is a work based on the Program. Or in other words, if the folder hierarchy, etc. is actually covered by copyright law.

There is no clear yes/no answer. If the structure is straight-forward, maybe partly suggested by the development framework, universally applicable, or even trivial (all macros in the folder /macros, all images in the folder /graphics, ...) then I would say it is not copyrightable. If, however, there is great sophistication in the structure, if it is highly optimized and required for the good performance of the Program, then there is room to argue in favor of a copyright protection.

For your detailed questions:

Anything can be licensed, even things that are not covered by copyright protection. Instead you should ask if you can be sued when you use it without license.

'Taking inspiration from it' means that you are copying an idea. Ideas are not copyrightable. And unless the structure (the structure alone) you are copying qualifies for copyright protection, you should be fine any you will not be required to license your program under GPL.

3
  • Hm, my best effort answer would be that the project's structure is "applying experience and best practices to create a structure that conforms the most to the used framework and pattern". Obviously there are personal optimisations and craftsmanship, but I wasn't looking for those - I was trying to figure out how to best conform to just the MVVM pattern alone, so based on your answer, I believe I am not required to use the GPL. Thank you for going beyond a simple answer and explaining it a little more in-depth! I think I'm starting to get the idea. Jul 12, 2022 at 9:46
  • 1
    The rationale in my answer obviously also applies to development frameworks and the folder structure they suggest or generate. Jul 13, 2022 at 13:21
  • That's a very good point, thank you for bringing it up. Luckily, my MVVM framework of choice is licensed under MIT, so there shouldn't be any large obligations spanning from using it. Jul 13, 2022 at 13:25

Your Answer

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

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