Posts tagged ‘Scripting’

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?

RTTI Script alpha release

Way back at the start of this year, I wrote about how I’d been working on a new Object Pascal-based script engine built around Delphi’s extended RTTI system.  And then it got real quiet, because more immediate concerns took priority for me.  But I’ve gotten to the point in my game engine development where I really need to put in the scripting system, so I spent the last couple weeks finishing up the implementation and tuning the performance a little, and now I’ve got an alpha version ready.  If anyone would like to try it out, they can find it on Google Code.

Continue reading ‘RTTI Script alpha release’ »

Dynamic class creation: moving beyond the theoretical

A few years back, I ran across this post by Hallvard Vassbotn.  (It’s a shame he stopped blogging, because he always had some very interesting stuff about the technical details of how stuff in Delphi works.)  At the bottom was a paragraph that really fascinated me:

On a more technical level it suffices to say that they use custom and extremely compact and fast data structures, tricks and hacks to be able to represent millions and millions of objects within the constraints of a 32-bit Windows system. Throw in the use of Physical Address Extensions, storing per-class information in “virtual” class vars to reduce object instance size, creation of classes and their VMTs dynamically at runtime (!!), pointer packing, multithreading, the list just goes on and on.

Continue reading ‘Dynamic class creation: moving beyond the theoretical’ »