Two things. Condition 1: GPL or any other license needs to not impose its conditions on libraries it uses through dynamic linking. Condition 2: an optimal license would require modifications which are not under its license to be disclosed. This is freedom, and preservation of freedom, with minimal but necessary requirements. Additionally, a license should be as simple as a BSD license with a few more clauses to achieve this.
MPL 2.0 fits two conditions. While its use in practice is simple, the text to do this is complex, yet clear. Mozilla Public License 2.0 attempts to find a way to make itself optionally compatible with use with GPL. This makes it more complex, yet otherwise easy to understand and use. Apache accomplishes this in a different way, simply by being permissive, but requiring modifications not meant to be under it to be noted. CDDL accomplishes this, while being incompatible with GPL, except with when exceptions or other workarounds are made.
GPL lacks foresight, and it goes overboard in response to worry of programs blocking away modifications from it. GPL3 definitely goes too far.
There's a need for a GPL alternative, which is simple, and allows use of dynamically linked libraries without extending its terms into them. It doesn't need to be GPL compatible, because it's of its own. There's also a need for a simpler Apache license, to also be incompatible with the current GPL's which don't have link exceptions.
The great thing about BSD and MIT licensing is, there's good starting points, that you could add these conditions or requirements for preservation to them, and better preserve code and allow maximum use of the code.