Curated list of awsome Free and Open Source Software for engineering and science
There are many reasons one may want to use Free and Open Source CAD software. For example if you are a scientist and you want to be sure about the reproducibility of your work. You are a teacher and you follow certain ethics to do not promote a specific comercial package over the others. Or you are a startup and you don't have the resources to pay for expensive licensing fees, or you care about your privacy and don't want to use freemium/shareware/spyware proprietary software which nobody know what information they collect about you. Or maybe you are a big company which is suffering from huge licensing fees imposed by the companies. Or you are an student and you want to work on your own computer rather than the college/University computers. Or you are just normal sane person who is using a non-Windows operating system like macOS or GNU/Linux, who finds the whole concept of running a virtual machine just for your CAD insane!
I have searched the internet and I have found some of the open source 3D and 2D CAD packages. Please share your experience. If there are good books, examples, demos, tutorials ... please share. Or if you know other options not listed here please add to the comments.
- FreeCAD
- solveSpace
- NaroCAD
- BRL-CAD
- HeeksCAD
- Antimony → visual programing
- VARKON
- JS.Sketcher → web based self hosted
- SALOME
- LibreCAD
- LibreDWG
- OpenDWG
- Archimedes
- QCAD
- SAMoCAD
- SagCAD
- Piglet Drawing Editor
- DESI-III
- Blender
- EQUINOX-3D
- K-3D
- Wings 3D
- DeleD CE
- Structure Synth
- Moonlight|3D
- OpenFX
- Fragmentarium
Here I have also listed all the Free and Open source CAM/CNC software I could find. and if you care about indirect code based CAD (aka generative, programmatic design) I have made a list here as well.
3D:
- OpenCASCADE
- pythonOCC / aocutils
- occmodel
- declaracad, enaml
- FreeCAD python scripting
- pyOCCT
- ImplicitCAD, haskell
- CadQuery
- Blender Python macros
- Initial Graphics Exchange Specification (IGES) .iges/.igs
- X3D
- ACIS .sat
- Parasolid .x_t
- Virtual Reality Modeling Language (VRML) .wrl
- Wavefront .obj
- libfive (Ao)
- HyperFun
- CScheme
- PLaSM (Programming Language of Solid Modeling)
- OpenJSCAD
- RapCAD
- CoffeeSCAD
- SchemeCad
- Curv
Mesh:
- Gmsh .geo (pygmsh python wrapper)
- NetGen .in2d
- OpenFOAM blockMeshDict
- Elmergrid .grd --> Elmer
- Medit mesh file format .mesh
- Geomview polyhedral file format .off
- Polyhedral file format .ply
2D/vector graphics :
- PostScript
- LaTeX based graphics: Tikz/PGF, asymptote, pstricks
- MetaPost
- xml/svg
- diagrams
- UML Unified Modeling Language
- CGM Computer Graphics Metafile
CAM:
- G-code
- OpenSBP
- HPLG or HPGL (Hewlett-Packard Graphics Language)
Plotting and data visualisation:
- GnuPlot
- Mathplotlib
- GeoGebra
- ggplot
- D3
PDE solver (FEM, CFD...) (list1) Preprocessor: Gmsh, Netgen, tetgen, ElmerGrid (Quickmesh), GetDDM, METIS, pdnMesh, EasyMesh, libmesh, tetlib, nglib, OpenFOAM blockMesh, gCAD3D, Larosterna, enGrid solver: ELMER, Impact, OpenFOAM, SALOME Meca, ONELAB, GetDP KRATOS, MOOSE, CalculiX, Code_Aster, Code_Saturne, FEniCS-Oasis, FreeFem++, SU2, Vortexje, Caedium, NASA NASTRAN, cast3m, R-desolve, z88, OOFEM, CMISS (list1, list2, list3), NGSolve, tochnog, NiftySim, MFEM/GLVis, Finite Element ToolKit (FETK), deal.II, GetFEM++, DUNE, Gerris Flow Solver, SfePy , HiFlow3,Agros2D, Hermes Project, oomph-lib, FeatFlow, futureye , OpenFVM, coolfluid3, MBDyn, OpenSees, Dedalus, MuPIF, AixVipMap, CHEOPS, CouPE , Advanced Simulation Library (ASL) , ALBERTA , The FEBio software suite ...? postprocessors:ParaView, OpenDX, Wings 3D, VisIt, libmesh, tetgen mesh edit: MeshLab, GLC_Player, CloudCompare, blender, meshfix, ReMESH, Openmesh, open3mod
Sadly the world of CAM/CNC is dominated by proprietary software which costs hobbyists and students a lot. Besides for scientists and researchers they do not provide much freedom to tinker around. I have previously listed all the available CAD options here or if you are interested in indirect code based design here. I'm going to just list everything I have found and then maybe you guys can share others:
These are the languages most of CNC/NC controllers can read:
- G-code
- OpenSBP
- HPGL (Hewlett-Packard Graphics Language)
- Cutter Location (CL) Data, APT
some software can directly read 2D formats like SVG and DXF too.
These are the software which take the CAD file and then generate the tool-path in machine language.
- PyCAM: reads STL (binary/ascii), DXF, SVG, PS/EPS and generates G-code, license GPL v3, cross-platform Windows/macOS/Linux, it also has the simulation
- dxf2gcode or here the grbl compatible: reads 2D drawings dxf, pdf/ps and generates G-code, license GPL v3, cross-platform, it includes visual simulation
- dmap2gcode: converts depth maps to G-Code using image-to-gcode, license GPL v3, is written in Python and Windows executables are provided
- OpenSCAD2CNC which directly converts OpenSCAD scripts to toolpath. It is only a CLI tool written in C# so most probably only for Windows
- CNC Code Generator converts DXF to NC code (G&M), license GPL v2, it is a Java program so most probably is cross-platform
- Ace Converter converts DXF to G-code, license GNU GPL, written in Borland C++ and Windows binaries are provided
- gCncCam GNU Cam Processor: converts DXF and GERBER NC-Files (Drill-Files) to G-code (RS-274), it includes a GUI, GPLv2
- HeeksCNC which is OS but you have to pay for the binaries! Import solid models from STEP and IGES files or DXF drawings. I'm not sure how it is related to HeeksCAM, Area and PyCAM projects.
- CollabCAD seems to be a complete CAD/CAM suit written in Java (the GUI) available for Linux and Windows. It reads XML, STEP, IGES, and VRML
- CncSimple not much information available for this one. it has been deprecated into a podiatry software. old code can be downloaded from here
- Inkscape Laser Plug-In
- Inkscape Gcodetools plug-in
- Generic CAM multi-axis, reads STL, GTS and DXF, GPLv3, is cross-platform
- F-Engrave converts text or image to g-code, for Engraving and V-Carving, is written in Python, reads DXF and bitmap images
- Blender CAM description here and this presentation
- SFACT or SF-ACT formerly Skeinforge, written in Python, converts 3D to G-code
- PathCAM, 2.5D toolpath generator, for Windows and Ubuntu
- OpenCAMLib written in C++ with Python bindings for 3D tool path generation
- OpenCAM to generate G-code and HPGL, Linux,
- FreeCAD Path Workbench
- CNC Toolkit 3D Studio Max's plugin
- Simple2D CAD/CAM
- Hugomatic and cnconline written in Python
- CP1 conversational machining to G-code
- gDrill Python script vconverting list of X Y points to tool path G-code
- g-code-generators Perl scripts for G-code
- GCAM - GNU Computer Aided Manufacturing
- PartKAM and it's fork makercam which uses flash: web-based 2.5D
- gcode-tools
- Reprap host software
- cl-mill written in Common Lisb, BSD license
- gcodeplot
- SolveSpace
- GtkCAD
- cam-occ
- monocam
- camvox
- []
- visolate mill PCBs using voronoi-regions
- pcb2gcode a CLI tool for isolation, routing and drilling of PCBs, reads Gerber files, there is also pcb2gcodeGUI, it is cross-platform.
- FlatCAM for PCB milling, reads Gerber and Excellon , witten in Python,
- cirQWizard Gerber to GCode converter for PCB milling
- Slic3r
- Cura
- Repetier
- ReplicatorG
- SuperSkein
- SmoothieControl
If you have the machine code, you need to simulate the process to be sure it is what you intended and sometimes you have to modify the code manually and simulate it again.
- CAMotics formerly (OpenSCAM), reads 3-axis G-code, is cross-platform, is GPL v2+ licensed
These are the software which read the tool-path and control the CNC/NC machine directly:
- LinuxCNC which works on RTAI Linux, has a GNU GPLv2 license
- Grbl: parallel-port-based motion control, GPLv3 license, Arduino
- Jedicut: controlling 4 axis CNC machines to make hot wire cuttings,
- PyCNC G-code interpreter and CNC/3D-printer controller
- Inkcut
- Universal Gcode Sender (UGS)
- TinyG, Chilipepper, TgFX
- Smoothie
- LaserGRBL
- bCNC
more firmwares listed here, grbl interfaces listed here.
There are other lists also at wiki.shapeoko, wiki.linuxcnc, freebyte, GroundControl, fablab, maker-works. Also here a list of Python G-code generator scripts. I have also posted this question here in hobycnc sub
Following my former lists of awesome CAD and CAM/CNC FOSS for mechanical engineering, I decided to create also a similar list for electrical engineering too. However it turned out to be way more complicated than what I expected, taking two weeks of my free time to research.
I'm not gonna lecture you about the importance of FOSS, and I think most professionals are aware of the advantages. From software licensing costs, privacy, cross platform experience, customizability and most importantly vendor lock down. Just imaging Autodesk decides to triple its fees all of a sudden. Your designs are basically ransom! Or if you are a scientist and want to implement your own auto routing method or improved compiling algorithm, or you are a student you want to do something on your mac or Linux computer without loosing your sanity over virtualization...
The way I categorize these software will be based on the conventional workflow I use for my own work (Robotics). I will start with conceptual design including a circuit schematics and a breadboard implementation. Following by programing the Microcontroller and then merging the circuit and MCU in a prototype or simulation. Next step the PCB should be designed and send for manufacturing. I hope this list will stimulate FOSS adoption and help the community to better know of their alternatives.
These are the family of the products which try to integrate most of the PCB Design process in one place. They usually include the schematic capture and CAD parts, and sometimes even the simulation and auto routing.
- KiCAD: Is probably the most famous and stable of all FOSS EDA suits. It does not require introduction; if you haven't heard of it you have probably living under a stone :) what makes it unique is the fact it is used and supported by the folks at CERN. In the latest version it has some simulation (using Ngspice?) and some auto routing plugins.
- Fritzing: In my humble opinion is the most hobbyist friendly of all EDA suits. I have read a lot of criticism on the forums about it though. What makes it unique is the virtual breadboard where you can place parts and connections similar to the way you could do it on a real one. It is great for beginners like me as well as documentation and publication.
- gEDA Is a combination of several other packages including gschem, pcb and Gerbv. It is the classic gold standard of EDA suits world. It's community is comparable to KiCAD and Fritzing, if not bigger.
- LibrePCB: Is an ambitious attempt to develop an EDA suit from scratch which outperforms KiCAD in terms of usability and extendability. Extensive libraries and version control are some of the key features. Reading from the forums this project has a bright future.
- Horizon: similar to the LibrePCB, is another attempt to make a better FOSS EDA and very appreciated by the community.
TinyCAD, FreePCB, BSch3V MINIMAL PCB EDITOR, MeowCAD, PCB Elegance, Caneda, diy-layout-creator, BlackBoard Circuit Designer, eSim formerly Oscad FreeEDA, myNetPCB, FidoCadJ) are also some of the available options for those who enjoy investigating. Also if you care about programatic (aka code based indirect CAD), there are attempts like aeCAD and SKiDL to look into. Immediate advantages of indirect CAD are version control and object oriented programing, but it requires its own essay. If you have a design with lots of components and layers, manual placement and routing (PnR) can be cumbersome. There are some automatic PnR tools available which are either an standalone GUI/CLI and/or as plugins to above EDA suits:
- FreeRouting:, on GitHub or this website
- VeroRoute
- C-PCB
- MUCS-PCB
- qautorouter
- Graywolf formerly TimberWolf
- Fairly Good Router FGR and more has been listed in this eevblog forum post
These are the software for schematics capture. Some might use these as a conceptual design platform, But I personally prefer to use pen and paper first. Then using these software is necessary for documentation of the final design. Some of them can also export different flavors of netlist (SPICE, Spectre, CDL...) to be imported to EDA suits, auto-routing or simulation software:
- XCircuit
- YCircuit which is an attempt to improve XCircuit
- Circuit Diagram
- QElectroTech
- AACircuit
There also more general purpose software like Dia diagram editor, InkScape, LibreOffice (LibreSymbols) for design and documentation of discute boards. If you prefer non-WYSWYG way of design then TikZ CircuiTikz, METAPOST MakeCirc, PSTricks pst-circ, Circuit_macros , Cirkuit , lcapy, might be your cup of tee.
Now some people might argue that thanks to the cheap development boards like Arduino and Raspberry pi, simulation is unnecessary, which I strongly disagree. For me personally simulation is important to reduce risks of damage on the hardware or even novice students, documentation, long distance collaboration...
The most well-known software commercial software in this category is the infamous Proteus VSM which not only is very expensive for hobbyists and students, but is also only on Windows! Unfortunately there is not much in the FOSS world coming close to Proteus VSM in terms of stability and features. Mosts of the FOSS are either for analogue or logic circuits simulation or for MCU emulation, not much available for integrated virtual prototyping. However, it does not mean FOSS community has done nothing. There are amazing attempts:
- KTechLab: is probably the most amazing and in some ways peculiar of all in this section. It is primarily an KDE tool for RCL, logic and PIC MCU (using gpsim) simulation. However it has a unique visual programing environment where one can develop the MCU workflow by flowcharts. Then it is translated into Microbe or MicroBASIC, another peculiar high level language of KTechLab. It also an IDE for C, assembly and MicroBASIC development and compiling (using SDCC?). It is unfortunate that KTechLab is still very unstable full of bugs. Another long requested feature is the AVR integration. There have been requests since 2006 to use SimulAVR, yet this feature to be seen :(
- SimulIDE: is all KTechLab wished to be. It has both PIC and AVR integration. However it is also not yet stable, more to be considered as a prototype.
- Emulare: for ATMega line of MCUs
- simuino an Arduino UNO/MEGA Pin Simulator
- gpsim used in both KTechLab and SimulIDE
- PICsim PICsimLab
- SimulAVR which also includes simulavr-disp a TCL-TK GUI. It used in SimulIDE and is the gold standard FOSS AVR simulation.
- simavr is the newer AVR simulation which according to the forums is a very promising alternative to SimulAVR.
- PIC-Simulator
- GNUSim8085
- MCUSim
- Ardulator
- Arduino Simulator
- emulino
- HAPSIM
There are softwares which are not specifically for EE simulation:
- Modelica Language and its FOSS implementations such as OpenModelica and jModelica are a great option for simulation of multi physics systems. The OM software has libraries for analogue, digital and logic electronic components. You have the option to use the GUI to connect the components or code your system in Modelica Language using continuous and discrete algebraic differential equations. The language has also been adopted by Wolfram Mathematica's produces, Maple and many more. It is just a shame that it is not already an industry standard!
- Scilab's Xcos or ScicosLab's SciCos are somehow attempts to replicate MATLAB's SIMULINK. They are indeed not as powerful but still great for students, teachers and even easy industrial simulation. Especially if you want to prototype a system and do not want to spend much time to code it, the visual programing environment can be a great help.
- MyOpenLab is also a great platform for visual physical system simulation. It can be considered an alternative to NI's LabVIEW.
These are the software which can only simulate the RCL and logical circuits. They import netlist files mostly:
- SPICE (Simulation Program with Integrated Circuit Emphasis) which has been around since the beginning of time, is just for analogue simulation.
- Quite Universal Circuit Simulator (QUCS), and its SPICE compatible version Qucs-S have one of the largest user bases. Qucsstudio is also another derivative.
- Ngspice which is a combination of three FOSS projects Spice3f5, Cider1b1 and Xspice, is "a mixed-level/mixed-signal circuit simulator". It is the simulation backend of most EDAs above KiCAD, Fritzing and gEDA.
- Xyce is also an SPICE compatible simulator for "extremely large circuit problems by supporting large-scale parallel computing platforms"
- Circuit Simulator](https://github.com/pfalstad/circuitjs1) Java and web based
- BrainBox web based
- PySpice
- SpiceOpus
- QSapecNG
- oregano
- gSpiceUI
- GNU Circuit Analysis Package (Gnucap)
- linNet symbolically
- LCSIM - Laboratory Circuit Simulator)
Software for logic, FPGA, IC ...
- Electric
- Alliance CAD
- Icarus Verilog
- Verilator
- TkGate
- KSimus
- KLogic
- GHDL
- FidoCadJ
- myNetPCB
- JSchem
- BSch3V
- IRSIM
- FreeHDL
- Chisel with Scala
- MyHDL and Migen with Python
- Bluespec and Lava with Haskell
- PSHDL
- CEDAR Logic Simulator
- Logisim and the fork Logisim-Evolution
- gLogic
- Logic Gate Simulator
- Qfsm
- Yosys, netlistsvg
- Qflow
- Netgen
- IceStorm
- gwave
- GTKWave VCD
List of real-time operating systems or firmware here
- avr-gcc
- avra
- SDCC Small Device C Compiler
- GPUTILS, gpasm, gpdasm, gplink, and gplib
- gnupic spasm, gypsum
- cpik
- MSPgcc --> TI
- MIPS GCC
- MPIDE
- OpenOCD - Open On-Chip Debugger
- PicCBuilder
- pic32 microchip compiler
- Newlib
- Picprog
- Hex2bin
- Jal (not?) Just Another Language
- PicPas
- Microbe/MicroBASIC --> KTechLab
- MicroPython
- CircuitPython
- Zerynth
more at fedoraproject and piclist
- CodeBlocks Arduino IDE
- Arduino
- Pinguino
- Piklab
- Wiring http://wiring.org.co/
- Embitz
- Code::Blocks
- Eclipse CDT
- Code Composer Essentials (CCEssentials) TI
- ChipVault
- Ardiuno debugger
- MCU 8051 IDE
burner, programmer, downloader, inhibitor...: avrdude avrgal pic32prog ardupic32 PonyProg prog84
- opencircuitdesign
- vlsiacademy
- opencircuits
- semiwiki
- semiwiki
- fritzing
- wiki.archlinux wikipedia HDL simulators
- wikipedia List free electronics circuit simulators
- wikipedia Electronic circuit simulation
- m-thu
- awesome-electronics
- Awesome-Embedded
- awesome-iot-1
- awesome-c
- fedoraproject
- gnupic
- webring
- microchip
P.S. This as far as I could go. There are probably a lot of mistakes here. Please help me complete and improve this list.
- symbolic mathematical analysis alternatives to Mathematica, Maple and MATLAB symbolic toolbox (formerly MuPAD)
CAS: Cadabra, Singular, Giac/Xcas, CoCoA, GAP, Erable/ALGB, Aldor Numerical: (R, Python, Julia, gnuplot, CERN/ROOT, Fortran, GNU Octave, Scilab/Scicoslab, Modelica, ASCEND, bc, PDL Perl Data Language, IDL interactive data language ) Plotting: gnuplot, Matplotlib, TikZ/PGFplot, Qtiplot, SciDAVis, LabPlot, List simulation: Modelica language
CAS/symbolic : WxMaxima (Euler Math Toolbox (EMT), Mathics, Cantor, MathAction) Numerical: (GNU Ocatve, scilab, scicoslab, FreeMat, EngLab ,ASCEND, PyDSTool, Reinteract , MathPiper ) Ket, Mirai Math, PARI/GP, Calc, Euler Math Toolbox, GSL Shell, Genius, spyder, python(x,y), (list) Ploting: gnuplot Matplotlib Ptplot Data analysis Orange, Fityk, Simfit, QtiPlot, PyModelFit, other