I think I’ve finally found a subject that isn’t rant-y and is vaguely comprehensible! (Watch as I turn this post into an incomprehensible rant.) In this post, I’d like to summarize the state of CAD software on Linux (or GNU/Linux for you purists out there).
The basic problem is this: CAD (2D & 3D modeling) software is very hard to get right. Making a user-friendly CAD software that’s robust enough for industrial use isn’t easy. There are a few companies that have a monopoly on the viable commercial options, and they’re milking their monopoly for all it’s worth. I’m looking at you, Autodesk and Dassault.
A single seat of their software will run for thousands of dollars (in the case of Autodesk, per year). Why do they do this? Well, simply because they can: their main customers tend to be large engineering firms that can afford it. This is the way it’s always been done, so these firms tend not to care. (There’s also a sizable population of students running pirated copies, especially of SolidWorks, but we’ll ignore that for now.)
But besides the cost issue, there’s another big problem with these commercial CAD products: they almost exclusively target Windows. From the standpoint of the CAD software companies, this makes a lot of sense: their customers are mostly institutions and business, and (unfortunately) Windows is the dominant player in these places. However, for those of us (engineers) who like to use Linux1, this presents a bit of a problem: the options for good CAD software are rather thin. The typical method of running a Windows application on Linux, Wine, doesn’t work well with CAD software due to its complexity. There are really only a few options you have:
1. Dual-boot Windows on your computer
Perhaps the most popular option is just to run Linux and Windows side-by-side; when you need CAD, you can just switch over to Windows. You could try loading CAD software on a virtual machine, but CAD tends to be rather complex, and running on a VM is not guaranteed to work well, especially for larger assemblies. The downside to this approach is that you constantly have to switch, and I absolutely loathe booting into Windows. The upside is that you get to use your favorite professional-grade CAD software.
Isn’t Inventor so pretty2 to look at? (Yes, this is shameless Rogue Robotics self-promotion.)
2. Use a free and open source CAD program
From a philosophical standpoint, this is the best option: we’re supporting the free software movement! From a practical standpoint, this tends to suck. A lot of the open source CAD offerings tend to be cryptic and possess a steep learning curve (okay, that’s true of open source software in general, but it’s felt especially acutely in the world of CAD). See, for example, OpenSCAD. Yes, it’s a very powerful system, but you interact with it entirely through programming; it’s simply not as nice to use as, say, Autodesk Inventor.
Maybe the best open source CAD software that I’ve tried is FreeCAD, but it’s but it’s still not quite as nice to use as Inventor. It’s okay for hobby projects (if you’re willing to invest the time), but for more professional work I would recommend sticking with a more traditional choice like AutoCAD or SolidWorks.
Of course, if you’re willing to spend the time to learn, you can end up with a very extensible native Linux CAD suite. Just don’t expect to show up somewhere in industry or academia and have anyone understand what you’re doing. It’s honestly worth a spin; if you have a running Linux machine, OpenSCAD and FreeCAD are easily obtainable from standard package repositories–no need for the twenty hoops you need to jump through to install professional CAD software. If you want to compile it for yourself, things might get…messier.
3. Use a cross-platform (web-based) program
There are a few offerings that are available as web-based applications, meaning that they should work pretty well on all platforms. When I heard about this, I was at first pretty skeptical: traditionally, the web has not been a very good platform for intensive applications like CAD. In the past, the few web-based applications that I had heard of, like TinkerCAD, were more suited as entertainment for middle school students than as actual, working software. (Yes, TinkerCAD is now owned by Autodesk. It still has a rainbow logo.)
But we’re making some inroads on that front. For example, Autodesk is now (new in 2018) leveraging the increasingly popular WebAssembly to port the vaunted AutoCAD software for web browsers! I also recently tried out Onshape, and I’m very pleased with the results (plus, they offer a free license as long as you’re a student).
One thing to note is that a lot of heavy-duty CAD use cases don’t just involve 2D and 3D modeling. There’s a lot to be said about a CAD application’s ability to handle things like high-resolution rendering, part libraries, and model simulations (finite element analysis, computational fluid dynamics, etc.). The big, expensive CAD suites are definitely the winners here, but you could probably (with effort and a lot of tweaking) cobble together an effective open source toolchain for that kind of stuff. Although web-based CAD programs are getting much better, I’m still not convinced of how well they’ll stand up to these more advanced needs. This is especially true of the free web-based CAD programs, since someone has to pay for the computational costs.
Summary and Discussion
CAD for Linux users can be frustrating. If you really need to get work done (for a class, company, or club), your best bet right now is to grudgingly accept that Windows will be a necessary evil and stick with professional software. If you’re more into the hobby field and have the time/dedication to invest, a powerful open source alternative can be viable. If you’re willing to make a bet on a still rather new field, you could try some of the online CAD offerings, but I wouldn’t hold my breath.
This isn’t an issue exclusive to CAD software. It’s pretty similar to the conundrum that Linux-loving graphic designers face: the industry standard is the Adobe Creative Cloud, which only runs on Windows and MacOS. At least graphic designers have fairly well-known (if nonstandard) replacements: GIMP, Inkscape, etc. Video editors also have the same problem (although I’ve found that Kdenlive more than fulfills my needs for that and is gorgeous eye-candy to boot). Unfortunately, the CAD world seems to be paralyzed in this regard, possibly because professional CAD software is somewhat niche and is not used widely outside of engineering.
1I didn’t want to derail the main post, but I also wanted to explain a bit about Linux to those who aren’t familiar with it. Linux is a family of open-source operating systems that are extremely popular in the programming world. A lot of people prefer it for both technical and philosophical reasons that I won’t go into here.
2But you know what’s even prettier? Autodesk’s load screens. Take a look at the loading screens for Autodesk Inventor and CFD:
Note: all images taken by me. You have permission to reuse them for whatever purpose, legal or otherwise. You might want to check with the companies whose software is featured, though.
(Until I implement a more official comment system, I’ll just manually insert the comments that I’ve received through email here.)
Comment #1 Michael S. Li, 10/9/18 12:38 PM
Dear Eric YuanXi Zheng,
Never has such a short and concise composition led me to the edge of my seat for so long. Take some thoughts:
The first solution for using CAD seems like such a chore! I can hear your sighs of exasperation as you are forced to boot into Windows already. Who uses that defunct software, anyway? But this solution doesn’t apply to me, as I do not use Linux.
The second solution for using CAD resonated with me deep in my heart. I am a long-time proponent of open-source software, but the available software is just so bad! I’m just kidding, as I don’t use Linux.
The third solution leaves me gasping for breath as I marvel at the excitement of online CAD software! I look forward to seeing the advances Autodesk makes in the field. Lmao, I’m just kidding, as I don’t use Linux and can just use Inventor in comfy old Windows.
Thank you for the thoughts. I will be sure to check out these options if I ever stop using Windows.
Michael SiLiang Li