Florimel

LDD openness, interoperability, reverse-engineering

Recommended Posts

I've seen several threads on this forum and others asking for LDD export capabilities to standard formats, and generally speaking for a better interoperability between LDD and other softwares.

I know that LDD's EULA forbids reverse-engineering but "except to the extent that this restriction is expressly prohibited by law".

And indeed (according to wikipedia's article on reverse-engineering) both US and EU laws explicitely "allows reverse engineering for the purposes of interoperability".

I've been able to reverse engineer the assets.lif archive file format and the .g binary file entries inside this archive (containing the geometry definition of the bricks).

I have also prototyped a very simple .lxf 3d viewer that uses assets.lif content in order to render LDD models on screen.

LDD%252520reverse%252520engineering.png

To which extend do you think that I can share the results of this work with the community?

Share this post


Link to post
Share on other sites

I know that LDD's EULA forbids reverse-engineering but "except to the extent that this restriction is expressly prohibited by law".

And indeed (according to wikipedia's article on reverse-engineering) both US and EU laws explicitely "allows reverse engineering for the purposes of interoperability".

I am not lawyer, but "allows reverse engineering for the purposes of interoperability" means, that you can reverse engineer for example Word to understand the doc format and to be able to read it or write. So you can reverse engineer LDD to understand LXF format or to be able to produce your own LXF files. Or if you are good, you can create LDD compatible bricks geometries.

"Allows reverse engineering for the purposes of interoperability" does not give you right to use existing brick geometries from the LXF files for any purpose without approval of the TLG, since they are intelectual property of the TLG.

Edited by hrontos

Share this post


Link to post
Share on other sites

Legal issues set aside, I am very interested in your work. It sounds like you have made some real progress in actually exporting bricks to other software, and I am quite interested.

P.S. Make a few more posts so you can become a vassal so I can pm you. :wink:

Share this post


Link to post
Share on other sites

I cant see LEGO having a problem with this as long as you aren't deriving profit from it or misusing LEGO IP.

LEGO has given brick geometry data to the LDRAW project in the past and its clear from the files that they come from the same source as the LDD geometry.

Share this post


Link to post
Share on other sites

I cant see LEGO having a problem with this as long as you aren't deriving profit from it or misusing LEGO IP.

LEGO has given brick geometry data to the LDRAW project in the past and its clear from the files that they come from the same source as the LDD geometry.

It was not TLG centrally that gave away the geometries. As I understand it was someone working within the LEGO Universe project at the time.

...both US and EU laws explicitely "allows reverse engineering for the purposes of interoperability".

I think the difference here is that if you write some export filter or so, for example for MS Word, that's no problem, because you are not reverse-engineering the content in any particular word file, just the "place holder" (the DOC-format). With LDD it's not the reverse engineering of the program that is the issue, or even the LXF-format (which is BTW allready public), but the brick geometries.

Share this post


Link to post
Share on other sites

Some methodologies were already available online, explaining how to extract LDD's geometry for the propose of interoperability, like this first method or

.

They both rely on manual extraction of the 3D geometry displayed on screen using Dassault Systèmes' 3D PrintScreen tool, and varying amount of manual rework of the resulting 3DXML file before it can feed another application.

I found this overall process to be quite cumbersome indeed. And this is how I get motivated to do some reverse engineering of the native assets themselves, basically to achieve to same interoperability objectives, but in a much straight forward manner.

Share this post


Link to post
Share on other sites
If you write some export filter [...] that's no problem, because you are not reverse-engineering the content in any particular [...] file, just the "place holder" (the [...] format).

So it means that, as long as I do not reference any specific .LIF file, or any specific .G file, if I focus only on those respective formats themselves (as opposed to the actual content of some specific files with those format), it's not a problem to document my findings, or to provide some convertors, right ?

Edited by Florimel

Share this post


Link to post
Share on other sites

So it means that, as long as I do not reference any specific .LIF file, or any specific .G file, if I focus only on those respective formats themselves (as opposed to the actual content of some specific files with those format), it's not a problem to document my findings, or to provide some converters, right ?

I don't know to be honest :blush:

I'm just trying to analyze the difference between a program where you basically create something from scratch (word, excel, AutoCAD...the list is endless) with programs where you use predefined entities created by someone (like LDD, AutoCad libraries) and how the "allows reverse engineering for the purposes of interoperability" applies in these cases.

And yes, the method to do 3D printing is known, but just because it's known doesn't mean it's legal. At least that's how I've understood it, but I'm no expert.

All I'm saying is that we as a community have to think twice about this. We have so far had a really beneficial relationship with the LDD team. They gave us LU and Extended Mode even if they didn't have to (and actually had no incentive to), they give us bricks we wish for (even though unofficial) and they listen to our requests for new features (something I hope will increase now that DbM is out of the picture). And a few years back the provided some prices for contest we had then.

Share this post


Link to post
Share on other sites

Techincally you're probably right about reverse engineering. However LDD is provided as something of a courtesy to the fan community (especially now DbM is dead) and it's very clear that TLG would prefer people not to do this (I suppose it could assist those in the clone brand business) and I think we have some duty to them to respect their wishes in this regard.

Share this post


Link to post
Share on other sites

If my dream could come true it would be having LDD as a super Lego Cad program with all the features of all the current digital builders we have. The only way I see that happening is if there was a large contention of LDD users creating a heavy demand for such an upgrade to the product. That being said, if we start to use LDD as a tool to just export files for use in other digital builders we kinda reduce the demand and need for LDD to expand. Not sure if I'm making sense but I do think we need to be careful if we want LDD to grow.

Share this post


Link to post
Share on other sites

Thanks to all of you for your precious advices. Legal concerns are one thing, but I agree that ethics needs to be considered. This is primarily the reasons why I was seeking here for counsel.

Definitely, I wouldn't injure the good relationship that we are having with the LDD developement team. They are doing an outstanding job with their software and are providing a great service to our community of LEGO fans.

Long live LDD ! :classic:

Edited by Florimel

Share this post


Link to post
Share on other sites

On the contrary, I once asked the 3D manager at Lego about exporting from LDD to other, more popular, digital formats. When he replied, he was very helpful and even said that he would ask his staff and see if there were any fan made solutions to the exporting issue. With that in mind, I think its safe to say that lego is fine with us using there digital pieces as long as we are not using them for commercial purposes.

Legally, I don't know what the rules are in this situation, ethically, as long as I am not exploiting Lego in any way, I honestly don't feel that it's wrong, and practically if Lego's 3d staff doesn't mind, then I would say that its ok.

Edited by Lalror

Share this post


Link to post
Share on other sites
both US and EU laws explicitly "allows reverse engineering for the purposes of interoperability".

This is absolutely correct.

I've been able to reverse engineer the assets.lif archive file format

It’s irritating that a number of us have had to do this yet have been discouraged from publishing the results. In truth there is some ambiguous language in the statutes which implies that one CAN reverse engineer but CANNOT document the results... but:

  1. I don’t think this stands scrutiny – “we can all look in the box but we can’t say what we saw” is just silly. It’s not an injunction, and even a signed NDA is irrelevant when all parties already know the information.
  2. There is so much precedent for the publication of previously-proprietary file formats.
  3. I really don’t believe for a moment that The Lego Group is going to sue anyone for documenting .lif or its contents.

Having said that, Lego need the flexibility to make breaking changes to the file format without having to document them so we shouldn’t expect them to ‘open’ it. But I think we can stop the cloak-and-dagger and creeping in shadows.

and the .g binary file entries inside this archive (containing the geometry definition of the bricks).

Excellent. That’s not something I’d looked at as I’m not familiar with 3D data formats.

I have also prototyped a very simple .lxf 3d viewer that uses assets.lif content in order to render LDD models on screen. [pic snipped]

To which extent do you think that I can share the results of this work with the community?

This is marvellous. Under US and UK law this is an interoperable program and you can do what you like, including publishing the source openly.

Thank you for taking the time to do this. :classic: That’s marvellous. I sincerely hope it can run on the limited resource machines which LDD is less-than-happy about and I’m looking forward to getting hold of a copy!

Skipping forward slightly – imagine a plugin that would allow .lxf files to be viewed and manipulated in 3D in the browser – there are a number of websites including this one that could benefit from such a thing!

BTW, documenting the file formats is one thing. Appropriating Lego’s data contained within such file formats is quite another – that data (the .lif contents) certainly is subject to plain old copyright. You would require written permission to reproduce it. Converting it to another format is merely a ‘derived work’ and permission is still required.

However, accessing the data in place (having installed LDD) and even modifying it are perfectly fine – just not distribution of it in whole or significant part. (And no, you can’t rip one brick out and say that’s “fair use”!)

Edited by nemo

Share this post


Link to post
Share on other sites

It’s irritating that a number of us have had to do this yet have been discouraged from publishing the results. In truth there is some ambiguous language in the statutes which implies that one CAN reverse engineer but CANNOT document the results...

This "discouraging" politics is related to the good terms this forum is with TLG regarding the LDD support.

It seems TLG is not sure that share the techniques to disassemble parts of LDD is a good idea. So to maintain the aforecited "good terms" has been decided to avoid this kind of arguments here.

I don't think it is a "judicial world" related issue.

Did you try to contact TLG asking about what they thing about this argument? With a positive response, I don't think anyone here will remonstrate if someone will open a topic specific for this argument.

Share this post


Link to post
Share on other sites

I think, the point in this discussion is, if we want to stay only within legal boundaries or we would like to keep good relationship with TLG.

If we want to stay only legal, go on, publish your findings or source and on next day we can expect that TLG will change the format. It must be clear to any programmer, that without any siginficant effort they can add some simple on the fly encryption without making any big change to the format itself.

If we will try to keep also good relationship with TLG, we will ask them for permissions. You can probably create whatever application you want as long as you stay withing the boundaries defined by TLG. And from my point of view, this boundary starts by keeping the brick definition data unpublished.

So you if you want to create mobile version of LDD or some building instruction generator, model animation - these solutions does not necesarily require publishing the brick data and have big chance to be approved by TLG. Conversion to other 3D formats might be an issue, since it is hard to find a format which works in the way similar to LDD (model file without geometry and primitives library containing the geometry).

Edited by hrontos

Share this post


Link to post
Share on other sites

Has anyone even asked Lego if they mind. It would be nice if someone like Superkalle could just contact lego over this matter.

Share this post


Link to post
Share on other sites

@ Lalror: I don't think that it's fair to expect Superkalle to do this. He already indicated that he did not want to upset the relationship with The Lego Group, so if you and Florimel want it, YOU contact TLG.

I personally think this whole "reverse-engineering" thing is prohibited in the LDD License Agreement that you agreed to when you installed LDD 4.2.5. Did you read it?

Edited by DLuders

Share this post


Link to post
Share on other sites

Sorry, I wasn't trying to say that its superkalles responsibility its just that the last time I contacted someone at lego over a Eurobricks matter, I was informed that Lego and Eurobricks people, talk on a regular basis and that things like this should be discussed through those contacts. Also, how could asking a question damage the relationship between Lego and the EB forums? If anything I think they would be glad that we asked their permission.

Share this post


Link to post
Share on other sites
I personally think this whole "reverse-engineering" thing is prohibited in the LDD License Agreement that you agreed to when you installed LDD 4.2.5.

I couldn’t give a monkey’s what that says – it does not and can not circumvent US and EU law, and US and EU law specifically allow reverse-engineering for the purposes if inter-operability. If the LDD EULA said you could never drive your car more than 10kph do you REALLY think that would be legally binding just because you ran the program? Don’t be silly.

The whole basis of “you agreed to this by doing that” is ridiculous. In particular, and I don’t think this is widely understood, you haven’t broken the terms of your licence agreement just because the licensor (TLG) says so. Absolutely not! Only a judge can interpret the licence and render a judgement, not the licensor.

So the reality is the very worst that could happen is that TLG could decide to sue one of their customers for breach of the licence agreement and only through legal action force them to discontinue use of the software. This isn’t going to happen.

However, if someone legally reverse-engineers a file format (say) and documents that here, it is possible that TLG might pressure the forum into removal of the information on copyright grounds. Rather than argue that tenuous point any forum (and most site hosts) would simply remove the data. There is precedent for entire websites being deleted by hosting companies on the most implausible copyright ownership claims – hosting companies don’t care. This is why Eurobricks must be so careful.

But to return to the OP, I would encourage him to publish everything – code and documentation – on SourceForge, which is a much better place than this forum for such stuff.

Share this post


Link to post
Share on other sites

So the reality is the very worst that could happen is that TLG could decide to sue one of their customers for breach of the licence agreement and only through legal action force them to discontinue use of the software. This isn’t going to happen.

I don't agree with that. The worst thing TLG can do is to "armour" LDD or even dismiss it.

LDD as we know it today, especially after the end of the DbM mode, is in part a gift to lego fans.

So the problem is not related to some phantom pressure that TLG can do over forum staff, but to the lost of the communication channel we have with the LDD staff.

That's why I think that who is really interested in the "reverse engineering" work should directly contact TLG asking informations about that. Querying the question in the right way, the answer could be surprisingly positive. :wink:

Share this post


Link to post
Share on other sites

I am all for the development of this. I am hearing a few extremes such as "If we break some hidden Lego copyright then they will be extremely offended and take LDD away." This is simply not the case. After talking with a few other members of the forums it seems as if a lot of this has already been done before, but for different reasons. With all that in mind, I strongly ask that this tool be developed more.

Share this post


Link to post
Share on other sites

Personally I think that the more compatibility between LDD and Ldraw, the better for LDD, and the better for Ldraw, because the amount of parts in both programs will increase.

I am absolutely convinced that the existence of a new program which permits that compatibility is not a problem for the programmers of LDD.

Edited by johanmark

Share this post


Link to post
Share on other sites

The thing with LDD and LDraw is that the actual files are unusable with each other and need to be "converted" before they can be used by the other application. e.g. When you export a LDD model to LDraw, if there are any parts that Ldraw doesn't have, they will be deleted, and the ones that Ldraw does have will replace the ones from LDD, and vise versa. As I have not used Ldraw, I don't know that the UI is like, but to me, it seems that the only reason you would want to transfer files from one program to the other would be so that you can build easier.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

  • Recently Browsing   0 members

    No registered users viewing this page.