# ModelingToolkit V11 Library Split and Licensing, Community Feedback Requested

**URL:** <https://discourse.julialang.org/t/modelingtoolkit-v11-library-split-and-licensing-community-feedback-requested/134396>\
**Category:** Community\
**Tags:** community, sciml, modelingtoolkit\
**Created:** [December 6, 2025, 1:37am UTC](https://discourse.julialang.org/t/modelingtoolkit-v11-library-split-and-licensing-community-feedback-requested/134396 "2025-12-06T01:37:26Z")\
**Posts on this page:** 20\
**Page:** 6

<div class="post-metadata">

**Author:** ![langestefan](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/langestefan/32/207923_2.png) [@langestefan](https://discourse.julialang.org/u/langestefan)\
**Post date:** [December 12, 2025, 3:05pm UTC](https://discourse.julialang.org/t/modelingtoolkit-v11-library-split-and-licensing-community-feedback-requested/134396/101 "2025-12-12T15:05:10Z")

</div>

> [@Ronis\_BR](#):
>
> My plan was to change the simulator to MTK. However, if it is being licensed using AGPL, I will probably need to avoid it for now.

MTK base is not GPL licensed. What you (and everyone else in this thread) needs to do is check if your models are higher index DAEs, because then you will be affected. How to check this is still unclear to me.

---

<div class="post-metadata">

**Author:** ![GeorgeGkountouras](https://avatars.discourse-cdn.com/v4/letter/g/77aa72/32.png) [@GeorgeGkountouras](https://discourse.julialang.org/u/GeorgeGkountouras)\
**Post date:** [December 12, 2025, 3:29pm UTC](https://discourse.julialang.org/t/modelingtoolkit-v11-library-split-and-licensing-community-feedback-requested/134396/102 "2025-12-12T15:29:28Z")

</div>

> [@foobar\_lv2](#):
>
> If you develop your own private bunch of tools, based on AGPLed MTK, and use them to do modeling-for-hire, with MTK-output as final deliverable, then the AGPL does nothing (you don’t need a commercial license, and there is no license claim on the output / compiled / optimized model).

> [@bilderbuchi](#):
>
> I’m not sure what the assertion that there is no license claim on a compiled model is grounded in?
> 
> It’s not 100% clear from the original description […] if the output of the consulting work is _software_ (derived from MTK), or _reports_/paper created with software derived from MTK.  
> If the former, AFAIUI, if you compile AGPL software/code into a binary, that is a derivative/covered work, and as such also AGPL licensed, no? That is precisely the point of clarification I asked for above - if there is a “runtime exception”-like solution, or something like the OpenModelica permissive runtime license. And this will be clarified at some point.

Just to be clear, the artifact/output in this case is an executable binary/library.

My understanding is it _would_ be considered a derivative according to AGPL.

---

<div class="post-metadata">

**Author:** ![Ronis\_BR](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/ronis_br/32/50999_2.png) [@Ronis\_BR](https://discourse.julialang.org/u/Ronis_BR)\
**Post date:** [December 12, 2025, 4:24pm UTC](https://discourse.julialang.org/t/modelingtoolkit-v11-library-split-and-licensing-community-feedback-requested/134396/103 "2025-12-12T16:24:13Z")

</div>

> [@mkitti](#):
>
> Is your concern that you do not want the recupients of that email to be able to view the source code?

Yes. If they can request all the source code of the simulator, then I would need to first ask for permission to use this framework. Furthermore, there will be parts impossible to share due to NDAs. Hence, if this is the case, it will be a no go for me unfortunately.

---

<div class="post-metadata">

**Author:** ![foobar\_lv2](https://avatars.discourse-cdn.com/v4/letter/f/ee59a6/32.png) [@foobar\_lv2](https://discourse.julialang.org/u/foobar_lv2)\
**Post date:** [December 12, 2025, 4:45pm UTC](https://discourse.julialang.org/t/modelingtoolkit-v11-library-split-and-licensing-community-feedback-requested/134396/104 "2025-12-12T16:45:11Z")

</div>

> [@bilderbuchi](#):
>
> I’m not sure what the assertion that there is no license claim on a compiled model is grounded in?

Above quote from the AGPL is extremely clear:

> The output from running a covered work is covered by this License only if the output, given its  
> content, constitutes a covered work.

The fact whether or not your compiled model was generated using MTK has no bearing on whether it is covered.

It is covered only if it consititutes a covered work due to its content.

I gave several examples how this could be. For example, docstrings for various MTK things. If you redistribute a model, and this model contains copy-righted docstrings / text assets from MTK, then you need to comply with copyright on these docstrings, irregardless of whether you ran MTK and it auto-generated these docstrings from its text assets or whether you never ran MTK and just copied the MTK docstrings (and lawyers must lawyer about the situation if you generated your docstring via LLM that happened to reurgitate the MTK docstrings!).

> [@bilderbuchi](#):
>
> if the output of the consulting work is _software_ (derived from MTK), or _reports_/paper created with software derived from MTK.

> [@GeorgeGkountouras](#):
>
> Just to be clear, the artifact/output in this case is an executable binary/library.

It does not matter whether the output of the consulting work is software or reports. The only thing that matters is whether the deliverable is _derived_ from MTK or _output_ of MTK.

If you compile your proprietary C code with GCC, then you get software that is output of GCC and GPL demands nothing. If you compile gcc with gcc, then you get software that is both output and derived from GCC and you must compy with GPL. If you compile your proprietary C++ code with GCC, then you get software that is output of GCC and derived work of GNU libstdc++, and thanks to the “runtime exception” GPL demands nothing.

Whether you use or not use MTK to generate your deliverable, or whether your deliverable is software itself, is entirely irrelevant. You must look at your deliverable, and ask: “By its content”, if you had typed this by hand, after having read MTK source code, would it be considered a derived work?

If this hypothetical by-hand process would involve copying significant parts of MTK internals, then the answer is yes. If this hypothetical by-hand process only involves running some algorithm conveniently implemented by MTK on your customers data, then the answer is no.

---

<div class="post-metadata">

**Author:** ![mihalybaci](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/mihalybaci/32/13528_2.png) [@mihalybaci](https://discourse.julialang.org/u/mihalybaci)\
**Post date:** [December 12, 2025, 7:33pm UTC](https://discourse.julialang.org/t/modelingtoolkit-v11-library-split-and-licensing-community-feedback-requested/134396/105 "2025-12-12T19:33:26Z")

</div>

I think this applies to your case, taken from here → [GPL FAQ](https://www.gnu.org/licenses/gpl-faq.html#WhatCaseIsOutputGPL)

**In what cases is the output of a GPL program covered by the GPL too? ([#WhatCaseIsOutputGPL](https://www.gnu.org/licenses/gpl-faq.html#WhatCaseIsOutputGPL))**

_The output of a program is not, in general, covered by the copyright on the code of the program. So the license of the code of the program does not apply to the output, whether you pipe it into a file, make a screenshot, screencast, or video._

_The exception would be when the program displays a full screen of text and/or art that comes from the program. Then the copyright on that text and/or art covers the output. Programs that output audio, such as video games, would also fit into this exception._  
…

Since you say the users will be only be interacting with the output like documentation and data sheets, the output itself is not GPL unless you are including the code with it.

---

<div class="post-metadata">

**Author:** ![Jake](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/jake/32/46007_2.png) [@Jake](https://discourse.julialang.org/u/Jake)\
**Post date:** [December 12, 2025, 7:33pm UTC](https://discourse.julialang.org/t/modelingtoolkit-v11-library-split-and-licensing-community-feedback-requested/134396/106 "2025-12-12T19:33:31Z")

</div>

> [@Ronis\_BR](#):
>
> This is one of my concerns. We have automatic diagnosis that uses simulator data to compare to the satellite telemetry and send emails if something wrong is found. My plan was to change the simulator to MTK. However, if it is being licensed using AGPL, I will probably need to avoid it for now.

If you stick the data you generate into an open source database (say PostgreSQL), and then monitor the open source data base with another open source program, say Lazarus, and have Lazarus send out the emails, then if I read this thread correctly, there would be no possibility of infringement, at the cost of additional complexity?

---

<div class="post-metadata">

**Author:** ![Ronis\_BR](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/ronis_br/32/50999_2.png) [@Ronis\_BR](https://discourse.julialang.org/u/Ronis_BR)\
**Post date:** [December 13, 2025, 12:35am UTC](https://discourse.julialang.org/t/modelingtoolkit-v11-library-split-and-licensing-community-feedback-requested/134396/107 "2025-12-13T00:35:03Z")

</div>

Hum, interesting! However, I need to verify if this additional complexity is worthy given the migration cost to MTK.

---

<div class="post-metadata">

**Author:** ![mihalybaci](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/mihalybaci/32/13528_2.png) [@mihalybaci](https://discourse.julialang.org/u/mihalybaci)\
**Post date:** [December 13, 2025, 3:54am UTC](https://discourse.julialang.org/t/modelingtoolkit-v11-library-split-and-licensing-community-feedback-requested/134396/108 "2025-12-13T03:54:56Z")

</div>

Indeed, but my understanding from following the thread is that there are only a fraction of users who would need the AGPL tools. So unless you are part of the group that needs to do the high order modeling (as explained by Chris in earlier posts), then the part of MTK you may remain MIT licensed and you have nothing to worry about.

---

<div class="post-metadata">

**Author:** ![ChrisRackauckas](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/chrisrackauckas/32/77_2.png) [@ChrisRackauckas](https://discourse.julialang.org/u/ChrisRackauckas)\
**Post date:** [December 13, 2025, 4:07am UTC](https://discourse.julialang.org/t/modelingtoolkit-v11-library-split-and-licensing-community-feedback-requested/134396/109 "2025-12-13T04:07:27Z")

</div>

@Ronis_BR we can take a look at your current codes, but if it’s related to the controlled ODEs you were doing before, I would be surprised if you needed more than MTKBase.

---

<div class="post-metadata">

**Author:** ![Ronis\_BR](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/ronis_br/32/50999_2.png) [@Ronis\_BR](https://discourse.julialang.org/u/Ronis_BR)\
**Post date:** [December 13, 2025, 12:23pm UTC](https://discourse.julialang.org/t/modelingtoolkit-v11-library-split-and-licensing-community-feedback-requested/134396/110 "2025-12-13T12:23:07Z")

</div>

Nice! Thanks @ChrisRackauckas. Yes, I started to migrate that satellite simulator I presented in JuliaCon. I will check if everything I need is in MTKBase.

---

<div class="post-metadata">

**Author:** ![Jake](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/jake/32/46007_2.png) [@Jake](https://discourse.julialang.org/u/Jake)\
**Post date:** [December 22, 2025, 2:29pm UTC](https://discourse.julialang.org/t/modelingtoolkit-v11-library-split-and-licensing-community-feedback-requested/134396/111 "2025-12-22T14:29:32Z")

</div>

Wondering if the license at [https://sleef.org/](https://sleef.org/) is of value in your thinking?

---

<div class="post-metadata">

**Author:** ![Ronis\_BR](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/ronis_br/32/50999_2.png) [@Ronis\_BR](https://discourse.julialang.org/u/Ronis_BR)\
**Post date:** [February 21, 2026, 5:25pm UTC](https://discourse.julialang.org/t/modelingtoolkit-v11-library-split-and-licensing-community-feedback-requested/134396/112 "2026-02-21T17:25:13Z")

</div>

Hi! I just want to add a feedback here to help future users.

I checked if MTKBase was sufficient to migrate all our satellite AOCS simulators to MTK. Regrettably, the answer is no.

Our system is huge, and I encountered numerous errors. Subsequently, I attempted to simplify the algorithm to identify the root cause. Eventually, I arrived at this minimal working example, which is a simple RL circuit:

```julia
using OrdinaryDiffEq
using ModelingToolkitBase
using ModelingToolkitStandardLibrary.Blocks
using ModelingToolkitStandardLibrary.Electrical
using ModelingToolkitBase: t_nounits as t

@component function MagneticTorqueRod(; name, R::Float64 = 10.0, L::Float64 = 0.1)
    @named voltage = Constant(k = 10.0)

    @named source = Voltage()
    @named resistor = Resistor(R = R)
    @named inductor = Inductor(L = L, i = 0.0)
    @named ground = Ground()

    equations = [
        connect(voltage.output, source.V)
        connect(source.p, resistor.p)
        connect(resistor.n, inductor.p)
        connect(inductor.n, source.n)
        connect(source.n, ground.g)
    ]

    return System(equations, t; name, systems = [source, voltage, resistor, inductor, ground])
end

@mtkcompile sys = MagneticTorqueRod()

prob = ODEProblem(sys, [], (0.0, 1.0))
sol = solve(prob, Tsit5())

```

This example works perfectly if we using MTK v11. However, if we use MTKBase, I get the following error:

```julia
ERROR: LoadError: Cyclic guesses detected in the system. Symbolic values were found for the following variables/parameters in the map: 
inductor₊p₊i(t) => inductor₊p₊i(t)
resistor₊p₊i(t) => resistor₊p₊i(t)
inductor₊v(t) => inductor₊v(t)
source₊p₊i(t) => source₊p₊i(t)
source₊i(t) => source₊i(t)
source₊v(t) => source₊v(t)
source₊p₊v(t) => source₊p₊v(t)
inductor₊p₊v(t) => inductor₊p₊v(t)
ground₊g₊i(t) => ground₊g₊i(t)
source₊n₊v(t) => source₊n₊v(t)
resistor₊n₊i(t) => resistor₊n₊i(t)
resistor₊p₊v(t) => resistor₊p₊v(t)
source₊n₊i(t) => source₊n₊i(t)
resistor₊v(t) => resistor₊v(t)
inductor₊n₊i(t) => inductor₊n₊i(t)
resistor₊n₊v(t) => resistor₊n₊v(t)
resistor₊i(t) => resistor₊i(t)
In order to resolve this, please provide additional numeric guesses so that the chain can be resolved to assign numeric values to each variable. Alternatively, the `missing_guess_value` keyword can be used to set a fallback guess for all variables. The keyword must be passed an instance of the `MissingGuessValue` sum-type.

```

After receiving significant assistance from @cryptic.ax, I managed to “fix” the issue by using the keyword `missing_guess_value = MissingGuessValue.Constant(0)`. However, I needed to use a DAE solver like `Rodas5P`. Regrettably, this approach is not suitable for my original use case. In this simple example, the solver is significantly slower (10x) in the MTKBase version compared to the MTK version.

The drawback here for me is huge. Unfortunately, some part of my contribution to the Julia ecosystem happens as part of my work. Hence, I just cannot use something that can force me to disclose the source code given the current applicable law in Brazil. To do that, I will need to pursue a permit that will likely be denied.

I completely understand the business decision behind this. However, I wanted to point out that I was about to initiate a project to integrate SatelliteToolbox.jl into the MTK ecosystem, enabling users to conveniently work with satellite modeling and design within the MTK environment. Consequently, I will suspend this activity as I won’t be able to incorporate it into my daily routine.

---

<div class="post-metadata">

**Author:** ![langestefan](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/langestefan/32/207923_2.png) [@langestefan](https://discourse.julialang.org/u/langestefan)\
**Post date:** [February 21, 2026, 5:52pm UTC](https://discourse.julialang.org/t/modelingtoolkit-v11-library-split-and-licensing-community-feedback-requested/134396/113 "2026-02-21T17:52:47Z")

</div>

This is very unfortunate. I suspect it will be a similar story for other use cases involving electrical circuits. Perhaps this is something structural that can still be addressed in MTKBase?

> [@Ronis\_BR](#):
>
> Hence, I just cannot use something that can force me to disclose the source code given the current applicable law in Brazil. To do that, I will need to pursue a permit that will likely be denied

That is not the only option you have, even if you are forced to use the GPL version of MTK.

---

<div class="post-metadata">

**Author:** ![ufechner7](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/ufechner7/32/51363_2.png) [@ufechner7](https://discourse.julialang.org/u/ufechner7)\
**Post date:** [February 21, 2026, 6:40pm UTC](https://discourse.julialang.org/t/modelingtoolkit-v11-library-split-and-licensing-community-feedback-requested/134396/114 "2026-02-21T18:40:19Z")

</div>

> [@Ronis\_BR](#):
>
> I just cannot use something that can force me to disclose the source code given the current applicable law in Brazil

Are you working at a University? I am in the fortunate position of being able to publish most of my (paid) work under an open-source license. Only if I work on projects with commercial partners is this not allowed. Sometimes I try to split projects: keep the simulation core open source and develop closed-source software on top of it for the commercial partner. Not sure if that would be allowed with the new MTK library.

---

<div class="post-metadata">

**Author:** ![Ronis\_BR](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/ronis_br/32/50999_2.png) [@Ronis\_BR](https://discourse.julialang.org/u/Ronis_BR)\
**Post date:** [February 21, 2026, 7:27pm UTC](https://discourse.julialang.org/t/modelingtoolkit-v11-library-split-and-licensing-community-feedback-requested/134396/115 "2026-02-21T19:27:20Z")

</div>

> [@langestefan](#):
>
> That is not the only option you have, even if you are forced to use the GPL version of MTK.

Hi @langestefan !

I think I did not understand.

> [@ufechner7](#):
>
> Are you working at a University? I am in the fortunate position of being able to publish most of my (paid) work under an open-source license. Only if I work on projects with commercial partners is this not allowed. Sometimes I try to split projects: keep the simulation core open source and develop closed-source software on top of it for the commercial partner. Not sure if that would be allowed with the new MTK library.

I work at a research institute of the Brazilian government. I can contribute (during paid hours) to any open-source project given that this work is somehow used in the projects we are current working on. With the new MTK licensing, I cannot use this library on some internal projects because theoretically people can request the source code of what I am using. The downside is that I will not be able to contribute to the ecosystem during paid hours, only in my free time.

---

<div class="post-metadata">

**Author:** ![langestefan](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/langestefan/32/207923_2.png) [@langestefan](https://discourse.julialang.org/u/langestefan)\
**Post date:** [February 21, 2026, 7:39pm UTC](https://discourse.julialang.org/t/modelingtoolkit-v11-library-split-and-licensing-community-feedback-requested/134396/116 "2026-02-21T19:39:22Z")

</div>

> [@Ronis\_BR](#):
>
> I think I did not understand.

You maybe be able to buy a license from JuliaHub that does not require publishing the code. I’m sure an arrangement can be made?

---

<div class="post-metadata">

**Author:** ![Ronis\_BR](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/ronis_br/32/50999_2.png) [@Ronis\_BR](https://discourse.julialang.org/u/Ronis_BR)\
**Post date:** [February 21, 2026, 10:07pm UTC](https://discourse.julialang.org/t/modelingtoolkit-v11-library-split-and-licensing-community-feedback-requested/134396/117 "2026-02-21T22:07:51Z")

</div>

> [@langestefan](#):
>
> You maybe be able to buy a license from JuliaHub that does not require publishing the code. I’m sure an arrangement can be made?

Things are not that easy. Since I work for the government, I have to follow some legislation (and some are very archaic). For example, it is nearly impossible to buy software that does not have a perpetual license (like a signature). I also need to justify why I am buying a software where there are open-source alternatives.

Since it is so difficult to give the work back to the community, I arranged with my institute that I can use a small part of my paid time to contribute to the ecosystem as long as the work is related to what we need in the institute. That’s how SatelliteToolbox.jl, SatelliteAnalysis.jl, and even PrettyTables.jl could reach the current state.

---

<div class="post-metadata">

**Author:** ![langestefan](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/langestefan/32/207923_2.png) [@langestefan](https://discourse.julialang.org/u/langestefan)\
**Post date:** [February 21, 2026, 10:09pm UTC](https://discourse.julialang.org/t/modelingtoolkit-v11-library-split-and-licensing-community-feedback-requested/134396/118 "2026-02-21T22:09:54Z")

</div>

> [@Ronis\_BR](#):
>
> Things are not that easy. Since I work for the government, I have to follow some legislation (and some are very archaic). For example, it is nearly impossible to buy software that does not have a perpetual license (like a signature). I also need to justify why I am buying a software where there are open-source alternatives.

I understand it’s not easy. But is at least an option worth exploring. And if you are succesful, then others can benefit from that as well.

---

<div class="post-metadata">

**Author:** ![dcelisgarza](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/dcelisgarza/32/215951_2.png) [@dcelisgarza](https://discourse.julialang.org/u/dcelisgarza)\
**Post date:** [February 22, 2026, 10:23am UTC](https://discourse.julialang.org/t/modelingtoolkit-v11-library-split-and-licensing-community-feedback-requested/134396/119 "2026-02-22T10:23:37Z")

</div>

What about AGPL + commercial license if a company does not want to comply with the AGPL license?

---

<div class="post-metadata">

**Author:** ![ufechner7](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/ufechner7/32/51363_2.png) [@ufechner7](https://discourse.julialang.org/u/ufechner7)\
**Post date:** [February 22, 2026, 12:49pm UTC](https://discourse.julialang.org/t/modelingtoolkit-v11-library-split-and-licensing-community-feedback-requested/134396/120 "2026-02-22T12:49:39Z")

</div>

> [@dcelisgarza](#):
>
> What about AGPL + commercial license

One problem is that until now, JuliaHub has not sold licenses for particular components like MTK11 separately. You always have to buy a cloud-hosted one-year license for everything, including Dyad and whatever. This is something other vendors do better (in the sense of being better for small companies and projects).

[Previous page](https://discourse.julialang.org/t/modelingtoolkit-v11-library-split-and-licensing-community-feedback-requested/134396.md?page=5)

[Next page](https://discourse.julialang.org/t/modelingtoolkit-v11-library-split-and-licensing-community-feedback-requested/134396.md?page=7)
