Switching to the GNU General Public License #1015
Replies: 3 comments 5 replies
-
After having given it some thought, I have two major concerns. The first is that none of us fully understand how the GPL will affect Motion Canvas, as none of us are lawyers. My second concern is that the community will fracture, causing some of the contributions, reports, and funding to go elsewhere. As for the legal concern, GPL is a lot more complicated than MIT, and it does sometimes cause concerns for some code bases in unexpected ways. I struggled to come up with an argument here, as I desperately did not want to say anything that was factually wrong, but, since no lawyer is involved, none of us can fully understand how GPL would affect Motion Canvas in the future. These are my main concerns. Having plugins be GPL can make it difficult for third parties to integrate with Motion Canvas. There is plenty of evidence that Blender being GPL has forced third-party companies to not integrate, or to have worse integrations. Allegorithmic, who integrated with "3ds max, Maya, Houdini, Modo, Unity, Unreal, Lumberyard and more" did not produce a plugin for Blender, since that plugin would be forced to be GPL. Unfortunately, the original forum post by Allegorithmic is no longer online, but you can find a user discussing the post and linking to it here. GPL can cause legal disputes, even when everything seems to be working as expected. There is a case where a non-profit company took VLC and ported it to iOS as a free app. The company fully open-sourced the iOS app under GPL, seeming to comply with the license entirely. Despite this, a major contributor to VLC sent a copyright take down notice to Apple, claiming that the App Store user agreement was not compatible with the GPL. Apple then took the app down, and everyone lost access. No one won in this situation. The VLC company did not win, the people who developed and open-sourced a free app did not win, and the Apple users who no longer had access to a free and open-source video player certainly did not win. The app eventually came back, after re-licensing (duel license). You don't yet know if this is the correct copy-left license for you. VLC was re-licensed under the Mozilla Public License. Maybe that's the best license for Motion Canvas. Or why not the LGPL, so that for-profit third-party software can at least integrate with Motion Canvas? It would actually be really nice to be able to export Motion Canvas video directly into Premier in real-time. I don't see how that would be a bad thing. But also, shouldn't we be using AGPL? You've called Motion Canvas "end-user software," but it's also web based. The GPL wouldn't stop a for-profit company from taking Motion Canvas, creating a paid product, and hosting it online without releasing the source code. You can't feasibly re-license. You said it yourself. You can't re-license the code even if you wanted to. If you get it wrong now by rushing into it. That's it. We're only going to find out all the little details of how this license interacts with Motion Canvas's unique use case once you do it and see, since this decision isn't done with the advice of a lawyer. Now on to my second concern. I think a substantial portion of the community might not stick around for this. You've said yourself that the JavaScript community in general favors MIT. You can try to argue with them that your project is different, and that it should be treated differently, but that's probably not going to get very far. Instead of speaking in hyperbole, I can get more specific. You will lose at least some contributors, because I will leave. I know I haven't been a contributor in a long time. I got injured, but I was always planing on coming back. If the code base goes GPL, I probably won't contribute too much directly. If I see a bug, I'll fix it, and I'll still be a part of discussion as much as I can, but I can't justify working on large swaths of code in the Motion Canvas repository directly. Code-fns was developed in another code base, and the CodeBlock that I made is now deprecated, so my one major contribution doesn't really apply here, but I'll still use it as an example. If I had worked on code-fns directly in a Motion Canvas repo, and Motion Canvas was GPL, I would effectively lose the ability to use that code outside of GPL. Once someone else makes a small change to my code, if I keep working on top of that change, I would then struggle to use that code anywhere else without untangle what code belongs to whom, even though the vast majority of it is my own work. I work professionally as a freelance developer. I am constantly grabbing little snippets of code that I've previously written to use in my work, in my other projects, or in my other open-source libraries (or which there are admittedly very few). GPL would put a barrier in that for any code I contribute directly to Motion Canvas. Now, the obvious reaction that anyone who advocates for GPL would have is "then don't contribute if you don't want to," which is just the thing. I want to contribute to Motion Canvas in the future if I can, but as a freelancer, I can't justify working for free on a code base if I would struggle to use that code in the future on a professional project. Whether or not this attitude is justified, it is an attitude shared by a lot of the JavaScript community. You will lose contributor interest, which will likely just go to a fork of Motion Canvas V3. Whether or not you intended for Motion Canvas to be a library, the community has treated it like a library. People are wanting to create slide show programs with Motion Canvas. They want to create full video editors with Motion Canvas. I myself considered porting the animation engine to an HTML animator for use in websites (the lottie export supersedes this). The collective Motion Canvas code base is an end-user program, but the constituent software is much closer to a library, and people want to be able to use it without shifting everything downstream to GPL. This has come up before with the direct to video renderer. Sometimes you take a hard stance on something but it's not what the community is here for. Since you still write 99% of Motion Canvas (it's basically still all you), this is completely justifiable, but unlike the FFMPEG exporter, you can't ever change your mind on this. Officially, you can do whatever you want, but I don't think now is the right time. The most successful copy-left projects are backed by full-on, non-profit companies, with a solid revenue stream and lawyers. MIT is basically zero risk, as it can always be changed later. I think this should wait until you get enough revenue that a lawyer consult is actually "in the budget." I'm not trying to fear monger here, and warn people off GPL, or become known as a copy-left hater. I love VLC, and that it is GPL, but I think Motion Canvas is unique even when compared to programs like Blender. Also, either way, there's not going to be any actual hard feelings. Motion Canvas was a lot of work and we all get it for free. What variant of "free" that is doesn't change that. |
Beta Was this translation helpful? Give feedback.
-
(Disclaimer: I'm not a Motion Canvas contributor. I'm writing an open source plugin for it, however. Also, this is mostly rewritten from a Discord discussion about the licensing, so you don't need to reread this if you read that.) I've been working on a plugin for Motion Canvas for the past little while, and I didn't even consider that, if it was forced to become GPL, I wouldn't be able to reuse my contributions elsewhere. By the letter of the law, if I wrote a plugin that didn't use any of Motion Canvas's source code, I wouldn't have to use GPL for my own work, but with the structure of Motion Canvas right now, that's far from possible. The entire "API" for Plugins right now is that all of the internals of the program are exposed, and you can override them. But overriding core methods usually involves leaving most of the original method intact, and only modifying a little bit of it. That means a lot of GPL code is now in your plugin. Unless you very specifically track and gate every single part of your code that came from MC's source code, eventually that file must become GPL. And as a project grows and develops and things are moved and restructured, more and more files have to become GPL, until eventually you just have to cut your losses and make everything GPL anyways. My plugin, Motion Composer, has a ton of code rewriting and reimplementing the timeline system so that it can support more video editing features. It's a Frankenstein's monster of all the built in components rewritten and twisted and manipulated. Clean-rooming all of those elements would be near impossible, given the amount I needed to know the codebase to write the plugin in the first place, and it would make development so much harder, and make the final product way less consistent, just to preserve my legal rights to my work. I absolutely support restricting what big companies do with Motion Canvas, even if that means dual licensing or something like that, but as a comp-sci student making a plugin for my own experience and passion, having those restrictions placed on me just feels bad. I have no desire to fork or commercially sell anything Motion Canvas related, but if 2 years down the line, I really like how I did the pointer interactions with the timeline that I've more-or-less completely rewritten from your base timeline in a commercial project, I want to be able to take that and use it, since I wrote it. I love Open Source, I wish that we lived in a world where everything was Open Source. But I also do contracting to stay alive. And a lot of what makes that feasible is building up a library of little reusable things I've made over a long period of time that I can plug into other projects. I've already made some of those for Motion Composer that I'll likely use in future projects, that are only trivially related to your code. Being a programmer is 90% creating solutions for problems and then using those solutions in all your future works. We don't write code for one thing and never touch it again, or at least, I don't. I have aspirations to one day make a full video editor of my own, and I would absolutely be less invested and willing to contribute code to this project, or plugins for it, if it meant that my work was locked to it forever. My code that I've written related to Motion Canvas has been written out of passion for both video editing and programming, and a lot of that passion goes away when I consider the way that the GPL would stop me from both using my code in my own works later, and it would stop me from permissively allowing people to integrate it into their own material themselves. It just feels against the nature of iteration and development to me, and that makes me sad. |
Beta Was this translation helpful? Give feedback.
-
correct me if i'm wrong but without the motion-canvas-player you cannot display the animations on a website, if this is removed or licensed differently what would be the purpose of making animations that cannot be played? |
Beta Was this translation helpful? Give feedback.
-
Due to a lot of feedback but also general confusion, I'm putting this idea on the shelf for now. We'll revisit it if/when we start utilizing WASM with compiled languages
As the project matures and I keep investing more time into it, the GNU General Public License seems more and more like the better option. The official decision has not yet been made and I'd love to hear your opinions and potential worries about this change.
Would this change affect me?
I use Motion Canvas to make animations
No, this change does not affect you in any way whatsoever. Both the current (MIT) and proposed (GPL) licenses grant you free access to the tool. These licenses do not apply to the works created with Motion Canvas. You retain all the rights to your animations and can use them however you want, commercially or otherwise.
I use
motion-canvas-player
on my website.Under the hood,
motion-canvas-player
uses the same internals as Motion Canvas, which under the new license would make it problematic to use on your frontend. However, in version 4 we will most likely discontinue the player in favor of a Lottie exporter.The player started as a quick and dirty way to display animations on our documentation website and it was never really developed further than that. It has a lot of issues, including:
Playing a Motion Canvas animation is comparable to playing an indie game. It causes a huge increase in power consumption. While most hardware will manage to reach a stable 60fps, you probably don't want the phones of your users to heat up whenever they visit your website.
On top of that, most of the documentation website now uses the fiddle editor, removing our main use case for the player.
Using the Lottie format would fix all of the above problems. You'd be able to use any of the feature-complete, battle-tested Lottie players to display animations on your website.
If you currently use
motion-canvas-player
please let me know what you think about this change.I'm developing a Motion Canvas plugin
If you develop the plugin for personal use or share it only internally with people in your company, GPL does not apply to you and you are free to do whatever you want.
If you want to sell or distribute the plugin publicly, you need to provide its source code under the GPL.
Why change the license?
I can explain
When I first released Motion Canvas I was a wee boy who knew next to nothing about Open Source. I went for the MIT license because it was simple to understand and meant basically "Do whatever, I don't care." But as the project matures and I keep investing more time into it, GPL seems more and more like the better option.
The beauty of GPL comes from its copyleft nature: all rights and freedoms it gives to the users must be preserved in derivative works. This prevents corporations from using GPL software to create their own closed-sourced alternatives, which would let them exploit the voluntary work of contributors for monetary gain. GPL is a widely used license and you're likely to find it in other open-source creative software (Blender, Krita, Inkscape, and more).
There is, however, a very good reason to use the MIT License (or any permissive license in general). Usually, when you use a tool to make an artwork, said artwork is not a derivative of the software. For example, an image is not a modification of the graphics software. It doesn't contain its source code, and it can be viewed and distributed independently from it. As such, GPL does not apply to it at all.
But that's not always the case. Think about a game engine. When you create a game using it, the resulting game will include at least some parts of the engine within it. This makes GPL much more complicated to interpret. If the game is deemed to be a derivative of the engine, it would need to inherit the rights of GPL, which is less than desired for a commercial product meant to be sold. Unsurprisingly then, most open-source game engines go for a permissive license (Godot, Bevy, O3DE, etc.) and the same goes for any other "software used to create software" such as UI libraries or other frameworks.
At first glance, Motion Canvas may seem to fall into the same category - in the end, it is an npm package that you install and use in your project. But the main purpose of this tool has always been to create animations. npm is just an easy means of distribution. Once you render your animation, you end up with your own, original work that's in no way a derivative of Motion Canvas.
This is why I'd like to switch the project over to the GNU General Public License. Moving forward, it would actively protect the values in which I believe. Not only in the context of Motion Canvas but also in any other software that would like to derive from it. All without negatively affecting the artists who use it.
Won't GPL deter serious companies and limit adoption™?
As I explained in "Why change the license?", GPL is not a problem if you use Motion Canvas for its intended purpose - making animations. Just like game development companies are not deterred from using and contributing to Blender. GPL becomes a deterrent only if you try to distribute your own derivative software without making it open source.
Are you allowed to just change the license?
This is yet another problem with the current license - yes, yes I am:
MIT allows anyone to sublicense this project. Once we switch to "GPLv3 or any later version" I will no longer be able to use my authoritarian regime to change the license. It will require the agreement from all copyright holders (me and contributors) which over time will become practically impossible to gather. Making sure that once fame gets to me and my moral spine dissolves completely, the open-source values within this project will remain protected.
npm packages should be MIT
I already explained it in other answers but I'd like to emphasize it again because I know that the JavaScript community particularly favors MIT:
Motion Canvas is not a normal npm package. It's a standalone tool that happens to be distributed via npm.
The amount of custom transformations done by our Vite plugin makes it practically impossible to integrate with other projects. And this will only get more complex with time. I don't think we should blindly follow the trend in the ecosystem while clearly, we're not like the other packages.
Of course, if you have any arguments against this license change I'm happy to hear them.
Beta Was this translation helpful? Give feedback.
All reactions