LibreDWG drama: the end or the new beginning?

Alexandre Prokoudine 27. Dec, 2012
28 Comments

There's a can of worms we opened this year: the unfortunate situation with support for DWG files in free CAD software via LibreDWG. We feel, by now it ought to be closed. We have the final answer from FSF.

In January this year LGW picked a lead about perspectives of LibreDWG and support for DWG in software like LibreCAD, FreeCAD, Open Asset Import Library, and Blender.

The key question was: why doesn't any of the end-user applications use the existing code in LibreDWG to gain support for DWG files?

As it turned out, it was about incompatibility between LibreDWG, which is GPLv3+, and some of the 3rd party projects which had strictly GPLv2 licensed code or linked to one.

We contacted all involved parties — developers of LibreDWG, maintainers of all aforementioned 3rd party end-user software, and a license compatibility engineer at FSF.

Eventually, as nothing was moving forward, in April one of LibreDWG developers contacted Richard Stallman personally (and CCed several people including me). It took quite a bit of persuasion (3 months) to get him to provide a clear and concise statement, and that statement is:

We are not going to change the license.

So, what does it mean? Is it the end of DWG support in free software? Is LibreDWG actually alive? And what took it LGW so long to publish an update to the story? Let's start from the very beginning.

The core of the issue

Essentially, it's about incompatibility between GPLv2-only and GPLv3+ code. LibreDWG is licensed under GPLv3+, and all copyright belongs to Free Software Foundation. The actual developers don't have a say in all legal matters.

No. Some of the requirements in GPLv3, such as the requirement to provide Installation Information, do not exist in GPLv2. As a result, the licenses are not compatible: if you tried to combine code released under both these licenses, you would violate section 6 of GPLv2.

However, if code is released under GPL “version 2 or later,” that is compatible with GPLv3 because GPLv3 is one of the options it permits.

For FreeCAD the problem was both the Coin3D library and the Open CASCADE library. The first used to be GPLv2-only and was relicensed to GPL-compatible BSD 3-clause in December 2011.

The Open CASCADE project, however, currently uses its own Open CASCADE Technology Public License that isn't GPL-compatible. They were contacted about that by Debian team in 2009. In late 2011 they publicly stated that they were considering dual-licensing OCCT (the library), however in February 2012 they announced they were postponing that move. According to Andrey Betenev, as of December 2012 the decision is still up to the head company that controls Open CASCADE assets.

For LibreCAD the legal issue is about the GPLv2-only code inherited from Ribbonsoft who created the original QCad Community Edition product. The company declined the requests to relicense the code and even requested immediate removal of additional content such as documentation and fonts from LibreCAD.

So before FSF issued a final statement (not a public one, too) on the matter, we were dealing with a situation where LibreDWG could become usable for end-user software only at the risk of potential legal issues.

Having had seen that developers of free CAD software couldn't make use of LibreDWG, the library developers eventually lost the motivation to work on the project and ceased their involvement. Which didn't make the situation any better.

What's going on now

In terms of DWG support in free software nothing is really going on. GRASS is still the only project knowingly using the LibreDWG library. FreeCAD team is about to release v0.13, LibreCAD team is working on upcoming v2.0, Open Asset Import Library and Blender are compatible, but have no volunteers to work on the support for DWG files.

Meanwhile earlier this year Open Design Alliance released v5.2 of their DWG specification that finally makes a stab at decrypting binary ACIS data — the most important part of DWG for FreeCAD.

The development of LibreDWG is effectively on hold. Latest changes to master branch were committed in January 2011, and latest changes to r2007 branch were committed in February 2012.

What’s next

How can we solve this? Let's be realistic: we probably can't.

You can't force Open CASCADE managers to okay the switch of the license to LGPL: they will do it only when they feel comfortable about it and have the green lights from lawyers. And knowing the track record of Ribbonsoft, chances that you can get them to relicense their code from the QCad Community Edition are rather zero-ish.

If it's not relicensing, then surely there could be a technical workaround? Like a plug-in? Well, not quite.

For instance, according to LibreCAD team, right now there are just two ways for LibreDWG to be legally used in LibreCAD via the plug-in interface:

Rewriting all LibreCAD classes that are currently GPLv2-only.

Creating tons of proxy objects to work around license incompatibility.

Given the current development status of LibreCAD, none of the two ways seem realistic, and in terms of longterm strategy planning the second approach is, frankly, unthinkable.

Edit: accrording to one of LibreDWG developers the second scenario isn't legal anyway.

Finally, once you break through the legal matters, you have to deal with the fact that LibreDWG is currently unmaintained and even hasn't had a single tarball release ever. There doesn't seem to be any development going on, the code for R2007 file format is still in a branch, and no work on R2010 file format has even (knowingly) started.

But wait, isn't LibreDWG one of the high priority projects by Free Software Foundation? Unfortunately, so far hopes for FSF to take the lead have proven to be false.

Richard Stallman wasn’t even aware of the problems one of their “high priority” projects had been facing for a long time. And it doesn’t look like he did anything about it since he learned about it: no awareness campaign, no direct contacting of involved parties that we know about.

Since I was drawn into a private discussion with Richard about LibreDWG anyway, I specifically asked him, whether FSF was planning to take any actions to ensure that the work on LibreDWG wasn't left unused by free end-user software. That was in June 2012.

After 6 months (I can be very patient, when I have to) and several reminders Richard still hasn’t provided any reply whatsoever. Apparently, the question doesn’t deserve an answer.

You are at liberty to draw your conclusions from that. I have my own reservations.

As you can see, solving this issue for both FreeCAD and LibreCAD is going to need a well orchestrated campaign. It's going to involve a smart strategy. And it's going to take years to get to the stage where you have production-quality input and output of DWG files. So we are talking about a bottomless supply of patience coupled with passion and some serious management skills.

I'm confident: there is a CAD version of Barney Stinson walking around who can claim that the challenge is accepted. Maybe it's you?

Yes it is depressing. I wish there were a general open source drawing format. Like XML for web and SVG for vectors. The only way now is to use the sparse elements supported by DXF… And that not even considering all the open cad-like formats that are not well integrated in open source applications, like IFC ie…

What about forgetting about native DXF and use proprietary plugins for import/export? Promoting at the same time the use of an open source format instead of DXF would be OK, IMO. I don’t know if IFC is the answer, but if it is, let’s go ahead and let DXF be just a conversion/export away.

I’m hoping for a solid offer of a 3D CAD package for Ubuntu. I’m tired of dual booting just to use Solidworks. (FreeCAD-stable is over a year old and lacks many features; I can’t risk using FreeCAD-daily for production.)

Thanks fot the article. My conclusion after nearly nine years is that oss is fantastic but doesn’t provide me a solution as freelance 3d designer and architect. I will remain using all kinds of very good software like inkscape, gimp etcetera. Unfortuanetely under Windows. I just need pro 3d design software. No perspective is a hard conclusion.

@Aleve, You surely meant DWG, not DXF, didn’t you? :) FreeCAD 0.13 is around the corner, but it only means they did a mild feature freeze recently. Some bugs are in the Open CASCADE kernel and can’t be fixed by the team.

I don’t know really, just thought CAD file formats would fit nicely into Interactivos project specs.
Perhaps writing a (licence) compatible DWG library? Then of course there is the issue of anyone wanting to take up the task…

“2. Creating tons of proxy objects to work around license incompatibility.”

This would violate the GPL. The GPL’s copyleft applies to the entire combined program that contains the GPL-covered code. You can’t make it
ok to link A with B by routing communication between them through another module X.

Given that LibreDWG will continue to be licensed under “GPLv3 or later”, the only possible path towards licensing compatibility is to continue replacing all of the LibreCAD’s GPLv2-only code by new code licensed under “GPLv2 or later”. Which seems to be what the LibreCAD team has been doing lately.

Very bad news. It’s dramatic, no even tragic that several open source tools are highly redundant and aren’t joined. Blender’s CAD capability is by far underestimated. There are cadtools (http://cad4arch.com/cadtools/) from Remigiusz or LISP AUTOCAD exporter and a lot of proprietary and non-proprietary data formats to be imported or exported are supported.

Migius even got his full DXF full support importer ready - and he is working on a version for the current Blender 2.65+ version of blender.

Additionally isn’t DWG discouraging for us open source guys? There are STEP and IGES format! They are open, well settled, not so maintenance heavy ...

Spending time on DWG isn’t it a waste? Tell me if I’m wrong. DXF may not hold colour-data, et al, but STEP does. And to integrate/rewrite LibreCAD to FreeCAD is the least what I expect or the community will break - there seems not to be much activity anyway ... it’s frustrating.

I would prefer integration in Blender - kind of independant as Python module perhaps? FreeCAD and Blender both use it for the API.

It would tidyup the open source redundancy and result in a user boost for all three software packages,as LibreCAD and FreeCAD would profit of the by far better known community of Blender.

Industry standard raytracing rendering would come as a by-product to FreeCAD module as Brecht Van Lommel is making huge progress with the Cycles render engine.

So, LibreCAD’s original developers decided to stick themselves to GPL2 (without or later), knowing that means it would be incompatible with GPLv3+ projects. That was their decision, right there. Now suddenly this is the FSF’s fault?

Sorry, but that’s hypocrite.

The FSF abides by the Free Software ideals. They’ve invented GPLv3 to solve issues with their own v2. They advices people to go with “or later” to prevent these issues. People who choose strict v2 usually go that route because they want tivoization to be possible, and the FSF is against that.

Both of those answers support that creating a standalone file converter could be used. Since that is the case, there really isn’t any reason why libreDWG shouldn’t at least be LGPL licensed since the file converter can always be switched out later, just as an LGPL library can be switched out.

I really liked the fact that the FSF declared DWG support a high priority project, but the way they are handling the situation is subpar.

It seems that the best solution to this fiasco would be for the libreDWG developers and the CAD Application developers such as FreeCAD/Blender/LibreCAD to all get together and write a new library under a permissive license, such as X11/Apache/BSD. The resulting library could then be used in all of the above stated projects and any future projects and would unify development efforts and have much more developer support behind it, including mine.

UPDATE: Open CASCADE Technology (OCCT) is now released under the terms of the GNU LGPL version 2.1 (and some minor additional permissions) and fully compatible with the GNU GPL version 2 and later (since version 6.7.0 released in november 2013).

Let’s hope to see some improvements on DWG import (if LibreDWG is not already a dead project).