You can’t remove open-source code from public use

I commented a couple days ago on Smart Mobile Studio’s release and how happy I was that they’d found a payment processor that minimizes the hassle for users. Well, I’m a bit less pleased at the stunt they tried to pull this morning.

There’s a post over on the Smart Mobile Studio dev blog explaining that, due to an arrangement between them and the company that Eric Grange works for, they’ve obtained the exclusive rights to DWS’s Javascript code generator, and it’s

hereby withdrawn from public use. Any company currently deploying this technology, or a derivative of it, is bound by international law to abandon it.

Well, there’s just one problem with that: they can’t do it.  The JS codegen units, like the rest of DWS, were published under the Mozilla Public License, with an MPL header at the top and everything, and the MPL grants those who download the code

a world-wide, royalty-free, non-exclusive license under intellectual property rights (other than patent or trademark) Licensable by Contributor, to use, reproduce, modify, display, perform, sublicense and distribute the Modifications created by such Contributor (or portions thereof) either on an unmodified basis, with other Modifications, as Covered Code and/or as part of a Larger Work.

The only ways that a license grant under the MPL can be terminated are specified in section 8: if the licensee fails to comply with the terms of the MPL, or if the licensee tries to sue the developer.  It very conspicuously does not say that the developer can revoke the license.

Even Borland understood this.  They never tried to strip InterBase (which they published under the MPL at one point) of its open-source status when they decided they wanted to keep working on it as a proprietary project.  They just stopped contributing to Firebird, started pretending like it didn’t exist instead, and kept working on InterBase and trying to differentiate it with new and better features.  And they certainly didn’t assert that people using or developing Firebird were in violation of international law.

This would be the best course of action for Optimale Systemer AS to take as well.  They’re free to continue further, proprietary work on it, and now they’ll need to if they want to differentiate it from what’s already out there.  Anyone else is still free to use, or even to fork and continue working on, the existing code.  (Which, by the way, has been deleted from SVN in the Google Code repository’s head, but is still available if you check out to revision #1462.)  Their current position is legally untenable, claims of “international law” notwithstanding.  It would never hold up in court, and I certainly hope they don’t waste any resources proving that.  They’d be much better spent continuing to improve their product.

I wonder if any other developers will be willing to take up the mantle and continue work on the open-source JS codegen, the way Eric did for DWS itself after Matthias Ackermann stopped working on it?


  1. Eric says:

    To clarify a bit: the core of DWScript is MPL, made by various authors, and will stay MPL. The CodeGen on the other hand was added and worked on only by me, I can re-license it under another model, yes, that won’t affect the code that is already under MPL, it just won’t get developped by me anymore.

    However, being MPL, the applications you generate with it fall under MPL as well, so all apps using DWScript (compiler and/or interpreter) must fulfill the MPL requirements, that is true for SmartMS too, and basically consists in acknowledging the MPL source and publishing modifications.
    In the case of the MPL CodeGen, that applies to all the generated JS applications (not just apps that embed the codegen), as the generated apps will contain MPL code as well.

    This btw, is one of the reasons Embarcadero rewrote all the GLScene bits they had in FMX, because short of a licensing deal with all the GLScene contributors involved in the bits they were reusing, Delphi-users applications would have fallen under the MPL requirements (even if they didn’t modify the code, they would still have had to “conspicuously” acknowledge GLScene code.

    In the case of the CodeGen, the license is exclusive to Optimale Systemer in that I will not grant non-MPL license rights to other companies. If you want to use the existing code under MPL, you can, provided you fulfill the MPL requirements (ie. the app you use the codegen in, and the apps you could generate with it would both have to acknowledge “conspicuously” the DWScript under MPL, and you would have to publish the modifications to the MPL code).

  2. Eric, you’re confusing the MPL with the GPL license.

    No code generated using the compiled version of an MPL tool can be forced to be MPL also!

    The MPL license applies to code released by the licensor, not anything build using it (be it source or otherwise). This is precisely why I don’t license my own code generating tools under the MPL, because I have no way of enforcing any license restrictions on the code people generate with them.

    If you are unsure about the rights granted to you (the author) under the MPL, you should seriously consult legal council.

    You are, of course, entitled to relicense the CodeGen itself as you see fit… but it is beyond your authority within the scope of the MPL license to state that “nobody can use any code generated using CodeGen anymore; past, present or future”.

    • Mason Wheeler says:

      I think he’s got it right, actually. The conspicuous acknowledgement requirement is in there. I just checked. It’s true that the MPL code itself is not viral the way the GPL is, (which he didn’t claim,) but what Eric mentioned could definitely be a legitimate concern to some developers, especially as it would affect pretty much *everything* written with FireMonkey.

    • Eric says:

      “No code generated using the compiled version of an MPL tool can be forced to be MPL also!”

      The generated code is essentially made of MPL’ed snippets, which are part of the CodeGen source, and thus MPL too.
      So CodeGen’ed apps contain those MPL snippets, and have to fulfill the MPL. And since code modifications fall under MPL, changing the snippets wouldn’t affect the MPL status, you would have to rewrite from a “clean room” (and then you can license under any another license).

      It’s not GPL, because with MPL: if you don’t change anything, you don’t have to publish your source code or anything, you only have to “conspicuously” ackowledge that your app used the MPL source code (which isn’t very constraining when you think about it). While with GPL, you would have to place the whole app under GPL and make it open-source, with MPL you don’t.

      So regardless of everything, there would have been need for a non-MPL license for SmartMS anyway, so that users of SmartMS wouldn’t have had to fulfill MPL too. So when you buy SmartMS, the non-MPL license means you (as a user) don’t have to acknowledge DWScript in the apps you build with it.

      For GLScene / FMX, this was problematic, as Embarcadero couldn’t force the users to respect MPL (nor did they want to in the first place), and there were too many authors (some unreachable) to re-license all the relevant bits (though they could have re-licensed some, they probably preferred to play it safe).

  3. Also, the MPL license does NOT require anyone to publish any modified version(s) or derrivative works.
    Those are terms of the GPL license structure.

    Please, Eric, I strongly urge you to consult legal council before you end up having a lot of legal demands landing on your doorstep!

    • Mason Wheeler says:

      I think you might be a bit confused as to what Eric’s saying, Simon. The MPL does require you to publish modified versions or derivative works of the MPL code itself (see sections 3.1–3.3), just not of the entire rest of the project the way the GPL does. Eric’s right in what he’s saying, as far as I can see.

      • Hmm… they’ve reworded MPL 1.1 quite a lot it seems. Originally no requirement to distribute modified versions of MPL source was included, though 3.3 (on maintaining a changelog for publicly-available sources) was always quite clear.

        • Eric says:

          I don’t think they reworded it that much, back in the GLScene days, I was using MPL too.

          The purpose of picking MPL was to allow it to be used in commercial closed-source apps, while requiring that if people modified the code (bugfixes, improvements…) they would have to publish it, and also so that you would have to acknowledge GLScene was used.

          Fulfilling MPL is rather simple and non-intrusive really, you just have to say you use code from the MPL project and provide links to that project’s page. You only have to publish what you modified (DXScene had a page where you could download the units they had modified f.i.)

          That’s btw why I’ve always leaned towards MPL: GPL is too contamination, L-GPL is annoying, BSD too permissive, so when I open-source something, that’s for feedback, and the minimalistic glory of seeing the project acknowledged 😉

  4. Jolyon Smith says:

    1) I am not a company, so the prohibition on companies does not apply to me

    2) If I start a company in the future under which to distribute any works, that company is not a company that – as of the issuance of this notice – was “currently” doing any work with the JS codegen, so it won’t apply to that future company either.

    Now of course, whatever the terms of the license that apply at that time will naturally apply, but this is clearly an attempt to retrospectively enforce a new license on existing licensees under new terms. By which I refer to the wording in the blog post, not the actual legal position, because the actual legal position of this sort of thing is that it is merely posturing/attempted bullying. As this post says, more than the actual impact of the statement itself, the greater concern is what it reveals about the attitudes of those behind it.

    It’s simply not a “good look”. What the Delphi community needs these days more than anything is to BE a true community. We simply don’t have the luxury of being able to stomp around in patent [sic] leather bovver boots.

    @Simon – I think if the wording of MPL 1.1 had ever changed, we would now be talking about MPL 1.2, 1.3 etc. 🙂

  5. Frank says:

    Just published today on the Smart Mobile Studio website:

    – is hereby withdrawn from public use. Any company currently deploying this technology, or a derivative of it, is bound by international law to abandon it.

  6. @Jolyn: For the past few days I’ve had some comments about Smart and all the work me and eric have done to make this a reality in the community. Some people have thrown things like “why should we bother, dws is free anyway” around. At the same time others have been playing around with our own code, with the aim of using it to torpedo our efforts.
    Not exacly a “community feeling” from these few individuals.

    Some people seem to have the impression that the infrastructure around dws (which is used as a pre-processor) is of no concern or importance. Nor the weeks and months eric and me spent on the codegen and rtl – which in sub total is smart mobile studio.

    I was against the motion of eric putting the codegen out there in the first place, but I thought the community would understand when the time came. So as you see Jolyn, it’s not easy to make everyone happy here.

    As for the “attitudes of those behind it”:I have spent a year of my life making this happen, and I would like to continue to expand this product. Is it really that evil wanting protect what we ourselves have made? Like all companies it will take some time before we see any personal revenue from this. It’s not so much about money as wanting to secure my job and the language i love.

    Securing our own work, what we have made together, surely that falls within the range of reasonable.

    • Michael Thuma says:

      So you see, why I called ‘them’ wolves:)

      To their own shore came the world war
      Gleaves and the Ingham leading the Bury west
      In their own track came the wolfpack
      Gleaves led the convoy into the hornets nest
      (Sabaton, Wolfpack)

      Live like a bunny and hunt like the hyenas. Anything else does not work.

    • It does not matter what you intended or how the “community” reacts. Fact is that the codegen was at some time released under the MPL and therefore that version cannot be retracted. It can be relicensed though by the author(s) and anything done to it under that new license does not longer fall under the MPL.

      * You have got your newly licensed version, just do with it whatever you like.
      * The MPL licensed version is still available to anybody who wants to play with it. It’s out there and nobody can restrict it any more.

  7. Warren Postma says:

    So where is the new publicly hosted MPL-licensed fork of their project hosted? Please post a link.

    If it isn’t hosted anywhere, please host it at or google-code.


Leave a Reply