KiCad is an amazing suite of multiple software components which allow users to draw electrical schematics and design corresponding printed circuit boards (PCBs) that can be manufactured and used. KiCad has a library of components that are modeled after real-world components which allow users to easily add those parts to their design. Kicad has support for electronic simulations, 3D views, scripting and many more functionalities, while keeping all of the software open-source!
Jean-Piere Charras, the founder of KiCad, was working as a researcher with research group GIPSA in Grenoble1, when he wanted to learn C++ and decided to try to make an electric drawing program. This all started in 1992 and eventually his hobby project led to KiCad.
In 2006, Wayne Stambaugh joined the project. At first he was using the software for personal use and later he started making contributions to the project by sending patches to Jean-Piere directly. As time went on he became the project manager of KiCad, which is now his full time job2.
In 2013, CERN started making substantial contributions which gave the program a boost in the number of features it supported, leading to its first release candidate3 in 2015.
The project aims to make Electronic Design Automation (EDA) more accessible to developers and hobbyists, without the need of expensive licenses. It is very unlikely, if not impossible that KiCad will, in the future, ask its users to pay for the software, because the code is GPL-licensed. Therefore giving everyone the right to get the source-code and redistribute it, even when a company has a paid version with changes2 4.
What is KiCad
KiCad consists of a total of seven separate programs, listed below, that are installed as independent programs when downloading and installing KiCad.
|KiCad||Main Project manager|
|Eeschema||Schematic capture editor|
|Pcbnew||PCB layout editor|
|GerbView||Gerber (Generated PCB files) viewer|
|Bitmap2component||Convert images to footprints|
|Page layout editor||Graphic editor to edit PCB page layout|
|Pcb calculator||GUI for calculating PCB aspects|
We will elaborate on, in our opinion, the four main components of KiCad which are listed in the preceding table. Let’s commence with KiCad. KiCad is the project manager of the program, no real editing or designing is done in this part of the program, if the user wishes to do so he should use EEschema. In this program the schematic electrical drawings are made. KiCad uses symbols, such as a resistor icon, which are used in EEschema and footprints, that define the physical interface between the PCB and the component. Whenever a symbol does not exist yet it can be configured by the user using the library editor.
Once the schematics in EEschema are finalized it should be checked if for all components a footprint exists, if not they should be created in Pcbnew. Subsequently a netlist will be generated, after which the work in EEschema is concluded.
The user will then open the generated netlist in Pcbnew, where the components can be placed and tracks are routed between them. Subsequently a gerber file is exported and the PCB is plotted. If the user would like to inspect the gerber file, the Gerbview program can be used.
There are many groups with different interests with regard to KiCad. Hence, in this section we will explain the different interests and their stakeholder.
The end users
Let’s start with the end users. This is the most important group of stakeholders which consists of multiple sub-groups, from hobbyists who use KiCad for DIY projects to students and academic institutions in technical fields. They mainly use KiCad because it is free, many tutorials are available and it works on many platforms.
Another subgroup of end-users are corporate users. Mainly smaller companies make use of KiCad, on the one hand, because paid programmers are very expensive and on the other, because large companies prefer to use “state-of-the-art” EDA programmes to cover themselves against claims of using bad software.
Having said that, for small companies, it is much more important, compared to hobbyists, that the software works correctly and leads to correct designs, as an error can have major financial consequences. On top of that, companies may need more specific design optimisations that require a lot of development while they are only used by a small group of end-users.
At last, KiCad does also benefit from a large group of end users. By having a large group of end users, the chance of there being developers willing to contribute to KiCad grows. Furthermore, KiCad benefits from having many end-users, because the chances are that more bugs will be found.
Funds and Donations
KiCad gets funding through the Linux Foundation and the CERN & Society Foundation. The latter receives funds and uses it to pay CERN developers to contribute to the KiCad project. Therefore, to a certain extent, they influence the improvements and direction of KiCad. Another way to donate to KiCad is through the Linux Foundation. At the time of writing, $61,951 has been donated through the Linux Foundation5. KiCad can decide for itself how they would like to utilize the donations, so the foundation has no influence on the development of the software.
Everyone is free to choose to make donations, most of them are made by end-users. Yet another kind of stakeholder emerges when you examine the donations. PCB manufacturers also make many donations, this is because more PCBs are ordered if the software is more accessible and easy to use for end users.
Moreover, end-users are sooner willing to order from these manufacturers when they observe they are sponsors of KiCad. In the upcoming release (6.0), manufacturers will be able to define their own Design Rule Checking (hereafter DRC) to ensure a design is compatible with their manufacturing capabilities6.
Obviously, developers work on the software to fix bugs and make improvements for new versions. These developers are therefore stakeholders too since they have a great influence on the functioning and future development of KiCad. Developers of KiCad can be divided into roughly two groups, (paid) main developers and the (non-paid) developer community. The developer community consists of a large group of people who contribute to KiCad voluntarily.
The lead developers are a group consisting of 6 people as described in the figure above. All paid developers benefit from improving KiCad because the companies that pay them benefit from excellent software and will not fund them if KiCad deteriorates.
There are two types of competitors for KiCad, the free (open source) EDA suites and the paid ‘professional’ applications. Where the first type of competitors are interesting for hobbyists, academia and smaller companies and the second type of suites are more for professional users.
In conclusion, KiCad is the main free EDA suite, but it needs a lot of new features, time and support to become the best professional software.
The world of KiCad
KiCad is a purely offline software that runs on Windows, macOS, Ubuntu, FreeBSD and other operating systems. The Figure below shows the most important aspects of KiCad’s context, however, there are more external software libraries, file structures (etc) used by KiCad.
As mentioned earlier, KiCad consists of multiple programs that can be used independently. This comes at a cost, KiCad needs to have precisely defined file structures which can be used between the programs. The upside is that some file structures are known universally which allows integration of results from KiCad for example in CAD software via IDFv3 files. Furthermore the generated gerber files are the de facto standard used by the PCB industry to describe the printed circuit board images.
It is important to have descriptions of each component that can be placed on a PCB, these are combined in component libraries which are of major importance to KiCad. Without those you would not be able to use certain components and draw them in a schematic. These libraries consist of the symbols of electronic components as well as their connections and electrical characteristics, but also their footprints and even 3D views. KiCad has its own library for a lot of components, however, there also exist external libraries. For example Digi-Key and SparkFun have such libraries consisting of many products they sell.
The KiCad project uses several developer services in order to keep track of changes as well as to easily combine new code during development. Besides developer services, KiCad uses a large amount of external software libraries for a variety of functionalities. For instance wxWidgets is used for the graphical user interface and OpenGL via GLEW is used to render images with the use of your graphics card.
Lastly, users can write python scripts to automate repetitive tasks in PcbNew and currently 3D plugins can be implemented with shared libraries to better visualize the designs. A list of some plugins can be found here.
The most important quality attribute for KiCad to have is correctness, because if the files that are generated are incorrect it can cost users a lot of money. To expand on this another very important quality attribute for KiCad is usability, since designing PCBs is a very complex process that can easily become confusing. A large part of the way KiCad achieves usability is by splitting its functionality into separate programs, preventing the UI from being too cluttered. This design choice also means that KiCad is very modular and individual programs can be independently modified. Finally, as for any software system, KiCad must be maintainable.
What lies ahead?
The KiCad developers are currently working hard on the next version, version 6.0. The feature freeze was in December 2020 and currently they are fixing the bugs which are found. The first release candidate (6.0.0-rc1) milestone was the 28th of February 2021, however, this has been moved to the 31st of April7. After the first release candidate, the developers are still able to make changes and publish new release candidates. The most important changes of 6.0 compared to 5.x are6:
- More modern look and feel
- Better and more logical click handling
- Different file structure, from legacy system to S-Expressions
- DRC rules scripting, useful for factories to send out their rules to customers
- Custom color scheme
There already exists a milestone for version 7.0 on GitLab, however, it seems that this is for features and issues the developers want to postpone for now8.
One of the features they eventually want to implement is an even more modern UI, with dockable bars, windows, perspectives to be arranged by the users preference9. Another desired feature is grouping parts of boards. KiCad’s lead developer said in an interview that he sees KiCad in about 5 to 10 years moving to more simulation and open source silicon, with tools for chip design10, like RISC-V.
Identifying ethical issues
Since KiCad is free it lowers the barrier for engineers to design PCBs significantly, compared to commercial solutions, since the only thing required to create PCBs with KiCad is knowledge of how to use it. For malicious parties it is possible to use KiCad in order to design harmful devices, however, the same can be said for almost any tool. When code is copied from books or other sources that are not available as a library, credit is given and any original headers are included. KiCad is purely local offline software and has no telemetry or other ways of sharing user data that could violate privacy. Many KiCad developers, artists, translators etc. are credited in AUTORS.txt and the about section of the program. KiCad has a clear code of conduct that is adapted from Contributor Covenant11 and emphasizes that the community should be open and welcoming to all. There are no restrictions on products made with KiCad, no royalties or copyright issues.
KiCad is a great suite of software to fully develop electronic projects in, with an active community of developers, users and contributors. The maintainers of KiCad have a long list of features they want to implement, but not before version 6.0.0 is released somewhere in 2021.
Technifree. KiCad download. accessed 1st of March 2021 https://technifree.com/download/47-divers-vie-pratique/7-kikad/ ↩︎
Peter Dalmaris. An interview with Wayne Stambaugh, KiCad project leader. accessed 2nd of March 2021 https://techexplorations.com/blog/kicad/blog-wayne-stambaugh/ ↩︎
Wikipedia. Software release life cycle. accessed 2nd of March 2021 https://en.wikipedia.org/wiki/Software_release_life_cycle ↩︎
James Bayley. GPL: Living with cancer. accessed 4st of March 2021 https://blog.jamesbayley.com/2014/01/17/gpl-living-with-cancer/ ↩︎
Linux Foundation. KiCad Crowdfunding. accessed 2nd of March 2021 https://crowdfunding.lfx.linuxfoundation.org/projects/06d36004-70a3-4f1f-8ae3-d0b2dd98815d ↩︎
Peter Dalmaris. KiCad 6 is coming! Peter’s BIG review. accessed 26th of Februari 2021 https://techexplorations.com/blog/kicad/kicad-6-review-new-and-improved-features/ ↩︎
Gitlab. KiCad 6.0.0-rc1 milestone. accessed 1st of March 2021 https://gitlab.com/kicad/code/kicad/-/milestones/8 ↩︎
Gitlab. KiCad 7.0 milestone. accessed 2nd of March 2021 https://gitlab.com/kicad/code/kicad/-/milestones/16 ↩︎
Gitlab. KiCad Future Versions Roadmap. accessed 1st of March 2021https://gitlab.com/kicad/code/kicad/-/wikis/KiCad-Future-Versions-Roadmap ↩︎
SnapEDA. Why open hardware needs open software - and more from wayne Stambaugh of KiCad. accessed 1st of March 2021 https://blog.snapeda.com/2019/10/28/an-interview-with-wayne-stambaugh-of-kicad/ ↩︎