CB FI 433

Circuit Break Podcast #433

Building LibrePCB - Urban Bruhin's Journey in Open Source EDA

Related Topics
The Toilet Mountain of Social Media

The hefty topic of U.S. funding for 'digital twin' chips research under the CHIPS Act, comparing its budget to other big expenditures.

Wizard Trust Falls for PCB Footprints

Parker’s transition from Eagle to KiCad, facing challenges with library management and device layer integration. Also, the new MacroFab Quote Wizard.

It is 2023, Why Does Footprint Design Still Suck?

Why is there such a disconnect between component datasheet drawings and EDA footprint layout tools? Stephen and Parker dive into this on this podcast.

Other Resources

Circuit Break Podcast
Blog
eBooks & Guides
Webinars
Videos
Case Studies
Tour MacroFab's ITAR-Compliant Facility

May 31, 2024, Episode #433

In this episode of Circuit Break, Parker Dillmann and Stephen Kraig welcome Urban Bruhin, the creator of LibrePCB, an open-source EDA tool. Urban shares his journey from being an electrical engineer to developing LibrePCB, driven by his dissatisfaction with existing EDA tools like Eagle. The discussion covers the unique features of LibrePCB, the challenges faced during its development, and the design philosophy behind its advanced library concept. Urban also discusses the future of LibrePCB and how the community can contribute to its growth.

Key Discussion Points

  • Urban Bruhin's background and inspiration for creating LibrePCB.
  • The challenges faced during the development of LibrePCB.
  • The unique features of LibrePCB, including its advanced library concept and order feature.
  • How LibrePCB handles DRC and multi-user collaboration.
  • The future of LibrePCB and upcoming features.
  • Ways to contribute to and support LibrePCB.

Relevant Links

Community Questions

  • What are your thoughts on the advanced library concept in LibrePCB?
  • How do you see open-source EDA tools impacting the future of PCB design?
  • What features do you think are essential in an EDA tool for professional use?

We Want to Hear From You!

Subscribe to Circuit Break wherever you get your podcasts! And join our online discussion hub at forum.macrofab.com to keep the conversation going with electrical engineering experts and experimenters! You can also email us at podcast@macrofab.com.

Want to discuss this article with your peers?

Podcast Episode Discussion

About the Hosts

Parker Dillmann
  Parker Dillmann

Parker is an Electrical Engineer with backgrounds in Embedded System Design and Digital Signal Processing. He got his start in 2005 by hacking Nintendo consoles into portable gaming units. The following year he designed and produced an Atari 2600 video mod to allow the Atari to display a crisp, RF fuzz free picture on newer TVs. Over a thousand Atari video mods where produced by Parker from 2006 to 2011 and the mod is still made by other enthusiasts in the Atari community.

In 2006, Parker enrolled at The University of Texas at Austin as a Petroleum Engineer. After realizing electronics was his passion he switched majors in 2007 to Electrical and Computer Engineering. Following his previous background in making the Atari 2600 video mod, Parker decided to take more board layout classes and circuit design classes. Other areas of study include robotics, microcontroller theory and design, FPGA development with VHDL and Verilog, and image and signal processing with DSPs. In 2010, Parker won a Ti sponsored Launchpad programming and design contest that was held by the IEEE CS chapter at the University. Parker graduated with a BS in Electrical and Computer Engineering in the Spring of 2012.

In the Summer of 2012, Parker was hired on as an Electrical Engineer at Dynamic Perception to design and prototype new electronic products. Here, Parker learned about full product development cycles and honed his board layout skills. Seeing the difficulties in managing operations and FCC/CE compliance testing, Parker thought there had to be a better way for small electronic companies to get their product out in customer's hands.

Parker also runs the blog, longhornengineer.com, where he posts his personal projects, technical guides, and appnotes about board layout design and components.

Stephen Kraig
  Stephen Kraig

Stephen Kraig is a component engineer working in the aerospace industry. He has applied his electrical engineering knowledge in a variety of contexts previously, including oil and gas, contract manufacturing, audio electronic repair, and synthesizer design. A graduate of Texas A&M, Stephen has lived his adult life in the Houston, TX, and Denver, CO, areas.

Stephen has never said no to a project. From building guitar amps (starting when he was 17) to designing and building his own CNC table to fine-tuning the mineral composition of the water he uses to brew beer, he thrives on testing, experimentation, and problem-solving. Tune into the podcast to learn more about the wacky stuff Stephen gets up to.

Transcript

Parker Dillmann
Welcome to circuit break from MacroFab, a weekly show about all things engineering, DIY projects, manufacturing, industry news, and Libre PCB. We're your hosts, electrical engineers, Parker Dillmann

Stephen Kraig
and Stephen Kraig.

Parker Dillmann
This is episode 433.

Stephen Kraig
So our guest this week is Urban Bruhin from libre PCB. Urban is a 34 year old electrical engineer from Switzerland. After studying electrical engineering, Urban worked worked as an embedded systems firmware and hardware developer for consumer and automotive sensors. Urban began developing Libre PCB during his time at university and continued through his full time job. Since 2023, Urban has worked full time at Libre PCB with the financial support of the NL Met Foundation.

Parker Dillmann
Welcome to the podcast, Irvin.

Urban Bruhin
Thank you very much. Nice to be here.

Parker Dillmann
So my my first question is so you came you you graduated, and then you started working as a electrical engineer for embedded systems and hardware. What so so Libre PCB is a EDA tool to design PCBs. What did you what EDA tool did you use before then?

Urban Bruhin
Before that, I always used Eagle, actually. And I think, some users of Liber PCB, yeah, saw that some concepts are very similar to Eagle. So I think it's, it's, it's quite obvious.

Parker Dillmann
Yeah. Yeah. I'm a big Eagle user as well. I think it was my first it was my first, like, big EDA tool I ever started using. And, yeah, the I would say it's not fair to say it's similar, but there's definitely inspiration there.

Urban Bruhin
Yeah. Exactly. Yeah. I mean, generally, I I try to reuse concepts I like. So if I see some good feature on one tool, I, yeah, I I implement it in a similar way.

Urban Bruhin
And if another tool has another great feature, I I, yeah, I I I used his inspiration from there. So I tried to to mix the best of all the tools, basically.

Parker Dillmann
So, Erbik, can you explain what Libre PCB is then for our listeners?

Urban Bruhin
Yeah. I mean, basically, it's a PCB design tool, to draw schematics and and design PCBs, which aims to be easy to use, basically. I think that's one of the main advantages of Liber PCB, that basically everyone should be able, to create a PCB with this tool. So you shouldn't shouldn't need a lot of time to get into it. And on the other hand, it still provides quite advanced features.

Urban Bruhin
So it's not only for beginners, It's also for yeah. More or less professional use.

Parker Dillmann
So what made you decide to stop using, let's say, Eagle and your your day job of being an embedded systems firmware and hardware developer and been like, I wanna build an EDA tool? What was what was that day like for you?

Urban Bruhin
Well, actually, it wasn't my main idea to build an EDA tool. Actually, my goal was to build a quadrocopter, a drone, in around 20 12 or something like that. I don't remember. 2011 or so. I started to build my own quadrocopter from scratch and doing the mechanics and, the electronics.

Urban Bruhin
And I started with the brushless controllers. I I even wanted to build my own brushless controllers. So I had to create a lot of electronics for this project, and I heavily used Eagle for this. But the more, the longer I used Eagle, the more I realized this tool could be better. So I I I just saw a lot of things which which annoyed me, and I was always thinking, there must be a better way to design PCBs.

Urban Bruhin
It's not really efficient. There must be a more efficient way. So then I was thinking about why not creating your own tool? If the available tools are not what I'm looking for. The only the only alternative is to create your own tool.

Urban Bruhin
So yeah, I gave it a try. It was not really serious at the beginning, more just for fun. Let's see what, what I can do. And, yeah, after a few days or weeks of hacking around, trying a bit to build something, I saw, yeah, yeah, that's I think I can build something better. And yeah, at this point, my color copter project stopped.

Urban Bruhin
The brushes controllers are are still in my office here. Not not finished yet. Still at the same point I stopped because, yeah, now now Liberty PCB is my project.

Stephen Kraig
I kinda I kinda like the idea that in order to build the e d or sorry, the, the quadcopter, you first had to build the EDA tool to make the port.

Urban Bruhin
There are still some friends asking, when is the quadrocopter finished? Yeah, I think it will never finish now. I mean, yeah, Libre PCB is basically a project which never ends. So yeah.

Parker Dillmann
So so what about Eagle that you were like, I can make this better?

Urban Bruhin
I think the main problem I I had with this tool was the whole library concept. I mean, you download the library which contains resistor symbols and resistor packages, and then you buy some special resistor with a non standard package, put it in your own library and you don't have a symbol for it. BOLTU, the standard library provides a symbol for resistor, but you have to copy it in your own library. Otherwise, you cannot use it with your own footprint. Because, yeah, in Eagle, every every library is, is closed.

Urban Bruhin
It's self contained. You cannot reference elements from other libraries. So reusability was really, really bad in this tool, and I don't like to copy things which which don't need to be copied. There there are a lot of duplicates in the ecolibraries. And, yeah, I think this was the main reason.

Urban Bruhin
And, yeah, another reason was usability. I mean, it was not so bad, but it had some quite strange, usability concepts. Very it was very different to most other tools. So I was thinking why why not reuse good concepts, well known concepts of usability? So, yeah, I, so, so my main goal was to, to build a better library concept and improved usability.

Urban Bruhin
And that's actually, the library concept is also, I mean, it's the part of Lieber PCB which I spent most of my time at the beginning. I didn't think about what features the tool need to have or what technologies I want to use or something like that. I didn't think about this. I was only thinking about the library concept. How how should the library concept be to be to improve reusability and, yeah, to to reduce the time to create new elements.

Urban Bruhin
So my main focus, I think, many, many months I spent just for this concept, actually.

Parker Dillmann
And Yeah. That was the idea.

Urban Bruhin
That I I started with with implementing it.

Parker Dillmann
I mean, that was what initially drew me to Libre PCB was the library concept, because I was moving around to different EDA tools figuring out what I wanted to use next, and that that's what struck me with Libre was the library concept. So could you actually talk more about the philosophy and the design behind the library cuts? Because that's what really sets Libre apart is is library management.

Urban Bruhin
Yeah. I think one big difference, it's it's a little bit technical, but it's it's one of the main advantages is that we don't use, human readable identifiers for referencing any kind of object. For example, a symbol. Every symbol has a name. I mean, let's say it's just called resistor.

Urban Bruhin
And for example, in Eagle, your that, the device references a symbol by its name. And if you, yeah, if if you change a name also in in KiCad, this is a problem. If you rename an existing element, other elements referencing it are broken afterwards because it's just referenced by its name. But names can be changed. In Libre PCB, we don't reference things by name.

Urban Bruhin
Every every element, every object which needs a reference to it has a UUID, a unique identifier which is randomly generated. So this UUID never changes. It is, I mean, as a user, you don't see this UUID normally. It's behind the scenes. If you create a new element, Libre generates random UUIDs for this element.

Urban Bruhin
And if you reference it from somewhere else, it is referenced by this UUID. So you can change the name how many times you ever like and nothing will break. I think this is one of the advantages. And it's not only, symbols and footprints and so on which are referenced, it's even every single pin in a symbol, every single pad in a package, has its own UUID. So if if you want to rename a pin or a pad or whatever, it's no problem.

Urban Bruhin
You can rename it. And I think one other big difference is, Libre Physically allows to reference elements across library boundaries. So you can download our our official libraries, which contains standard symbols and packages, and you can add your own library on your computer, adding a device. Let's say a device, some transistor or whatever. And this device in your library can use or reuse the symbols from our official libraries and the packages from our official libraries.

Urban Bruhin
So you don't need to duplicate it into your your library. And, yeah, this is, for example, something I I just said that's not possible in Eagle. And, yeah. And I think this is really, I mean, it's it's technically, it's it's a very simple feature, very simple concept, but from usability view, I think it's a great improvement because it, yeah, it highly improves reusability of library elements.

Parker Dillmann
So on on the UUID, how how does that ensure so so let's say if Steven here is using LibrePcb and builds his own part, and I build my own part, how and let's say we're sharing stuff back and forth. How does how does the UID not conflict? Like, I you said it's random. Yeah. How how is it generated so it makes sure that what Steven creates doesn't conflict have it same UUID that I have?

Urban Bruhin
Yeah. It's the the UUID has enough bits that the the probability of conflicts is almost 0. Cannot Okay.

Stephen Kraig
I like that. So so I'm actually curious about how, a system like that would work for a multi user base. For example, in my day job, we have anywhere between 7 and 9 engineers working off of the same library. How does Libre BCD handle multi users?

Urban Bruhin
Yeah, I think on, on library and libraries, it's, it should work pretty good. I mean, the main idea is if you work with multiple persons from the same library, I would recommend to use a version control system like Git. Manage your library with Git then, so, I mean, with Git you think you'll get, you fetch the changes from other persons and you push your changes to the other persons. And in Lieber PCB, the thing is, as long as you don't work on the same library element, there will be no conflicts because every library element, is stored in its own subdirectory of the library with the new UID as directory name. So if someone else creates a new library element, it will have a different file name than all the existing library elements and files.

Urban Bruhin
So then there are no conflicts. If you are working, if you are modifying on the same library element from different places, I mean, there is, of course, a risk of conflicts then. But this is why I choose a human readable file format, which is also optimized for version control. So it is implemented in a way that diffs are minimal. And if you, for example, make a change in a library element and change it back, it will lead to no change at all in the file.

Urban Bruhin
It's, it's called a canonical file system. There there cannot be 2 different representations of the same data. And, and, yeah, with these concepts, the possibility of conflict is very, very low. And if you ever get the conflict, you can so you can resolve the conflict by your own, because files are human readable. You can you will see in Git what the other person changed and what you changed, and you can can choose what should be the resolution of it.

Urban Bruhin
So, yeah, basically that's the idea of of working with multiple multiple persons.

Parker Dillmann
I I'm gonna have to give that a test drive because my I use Git for Eagle and Mhmm. It's human readable in quotes, you know, XML format.

Urban Bruhin
Yeah. Yeah.

Parker Dillmann
And, when but when you make a change, sometimes it will just rewrite, like, the whole thing, and so you get Yep. 4,000 lines of change. And it's just like, well Yep. I'm I'm not gonna review that. I'm just gonna click okay.

Urban Bruhin
Yeah. That's that's horrible. Especially, I think the attributes in Eagle are not sorted. So they their order just changes randomly sometimes. So this leads this is what is not canonical.

Urban Bruhin
I mean, 2 different representations of the file can represent the same actual data. And this is something, this doesn't happen with Libre PCB. There will be no change in files, no changes you didn't do by yourself.

Stephen Kraig
So so you built you built this basically with library from the get go. Like, that was where you were hunting on on or or beginning from. So so what kind of challenges did you face when starting Libre PCB?

Urban Bruhin
I think at the beginning, challenges were quite small. Challenges are getting bigger and bigger with time, actually. Yeah. At the beginning, actually, my my my main concern was the graphical user interface. I had no experience in the graphical representation.

Urban Bruhin
For example, the schematic and how to draw symbols and lines and so on on screen, how to make it zoomable, movable, draggable, selectable, and all these things. I had no experience in this area. I mean, all the logic behind behind the user interface is yeah. It was obvious how to implement it, basically, for me. So yeah.

Urban Bruhin
But but the user interface, it was the main challenge at the beginning. And actually it is still today, still today the user interface is one of the, yeah, it's something, it's really, it's easy to say something is bad. This user interface is bad. That's easy to say. But how to make it better?

Urban Bruhin
How should it be to make it better, to make it more usable, to make it more intuitive? This is really difficult. It's really hard to, yeah, to find a good user interface and also to implement it. For example, performance is getting bigger and bigger problem. At the beginning, performance was no a now people are doing more complex, bigger designs with lots of symbols in the schematic, lots of wires and and pads in in the board.

Urban Bruhin
So performance of of the graphic, of the graphics rendering is getting, bigger and bigger problem. And yeah, challenge is now how, what technology to use and how to implement it to still be, to still have a good performance even for large designs?

Stephen Kraig
Yeah. So engineers are always going to have opinions on things and even even if you move one button around in its location on a user interface, somebody will like that and somebody will hate that, and they will let you know for sure.

Parker Dillmann
Exactly. Yeah.

Urban Bruhin
Absolutely.

Parker Dillmann
So the so besides the library, advanced library, what unique features of Libre PCB that you're, like, very proud of?

Urban Bruhin
Cool. I think I mean, it's it's a feature maybe not used by by a lot of people, but actually I'm a fan of the order feature. It's a simple feature, but it makes ordering a PCB so much easier than ever before. And I didn't see a feature like this integrated like this. I didn't see it in another tool.

Urban Bruhin
In Liber PCB, you can just click the order button and it uploads your project to our own web server. And the project is analyzed, Gerber files are exported on the web server. You can choose the manufacturer where you want to produce the PCB, click continue and you end up in the shop, in the web interface of the manufacturer. And you never had to touch any file. You never had to to make any any settings for Gerber export or something like that.

Urban Bruhin
It's so easy. You cannot do anything wrong with this feature. And but technically, it's a simple feature. I mean, I I cannot be proud of it from the technical point of view, but but but I like how simple it makes ordering a PCB. And and I didn't see this, yeah, this easy workflow in another tool yet.

Parker Dillmann
Yeah. I started looking at the Libre PC has a command line interface.

Urban Bruhin
Yeah.

Parker Dillmann
And so I was looking at that and figuring out how I can integrate, Libre into into the Macrofab front end. Yeah. So I'm I'm looking forward

Urban Bruhin
to that. This this is a good point. I think the command line interface is, since the last release, it's, it was getting even much more powerful. And this is a good point because this is another feature I'm actually proud of, an output job. I think this is a really, really cool feature.

Urban Bruhin
You can you can now actually, I know this feature from from expensive EDA tools like Altium. I mean, Altium is one of the lower cost EDA tools, but from from the hobbyist point of view, it's still an expensive tool. And I know this tool from from Altium, and I think no, no open source tool has something that is even close to it, how we implemented it in Libre PCB now. So, you can now just configure all the output jobs, all the output files you want to generate. A PDF of the schematics, maybe an assembly plan of the PCB, Gerber files of the PCB, the BOM, pick and place files, whatever you want.

Urban Bruhin
It's it depends from project to project and and on preferences of users. What kind of output file they want, and with with which settings they want to have it. And in Libre PCB, you can now configure it once for a project, and with one button click, you generate all the files at once. Even the zip file, zipping all the Gerber files together, you can generate it with this single click. And next time you, on the next iteration, you modify something, release a new version of this PCB, you make one click and you get all your output files ready to send to the manufacturer.

Urban Bruhin
So I think this is a really, really cool feature. No. It's awesome. And saving you a lot of time.

Stephen Kraig
We we've been trying to do something similar to this at work. Like I said, I'm I mentioned earlier that we have 7 to 9 engineers who are all working on a variety of projects. And, so we've been working on how do we get everyone to click one button and in reality, maybe it's 3 or 4 buttons. But but they get all of their files exported and it happens the same way for each person. And in fact, we have a we have a a joke that we've been talking about but all of our files we say have to pass an intern test.

Stephen Kraig
So if we have an an intern working at the company, we should be able to tell the intern, hey, go export Mhmm. The files for any project and they could do it with very little information. So we we were trying to build our processes like that. So I I love this. This is this is really fantastic, this output jobs.

Stephen Kraig
A question about actually because because I noticed you were you have the PDF and the board assembly PDF as as exports. Is it possible to include an engineering title block with that such that it exports with, you know, official documentation, I guess?

Urban Bruhin
You mean to include custom content in the in the PDF basically? Yeah.

Stephen Kraig
Correct.

Urban Bruhin
I was thinking about this. It's not possible yet, but I hope someday we can also implement that. Yeah. Okay. Cool.

Urban Bruhin
The main, the basic concept is already prepared to, to include something like this. For example, you can already generate 1 PDF containing both the schematic and the assembly plan. You can build your PDF, you can select what should be contained in this single PDF. And it's I think it's just a matter of time to also have the option to include custom custom pages, custom content in this PDF. That's

Parker Dillmann
very very good. Specifications and that kind of stuff?

Urban Bruhin
Yeah. Exactly. Yeah. It's even a little bit it's already prepared, not not for the PDF, but for for the output files itself. It's already possible to generate, an output file which is customized.

Urban Bruhin
It's basically a template. I I I know it from some people are writing a text doc text file for the PCB manufacturer or for the assembly house containing some blah blah blah about company and some, yeah, some boilerplate, what they want to let the manufacturer know. And it's already possible in Liber PCB to include a template file containing the spoiler plate. And Lieber PCB is able to to replace placeholders in this file with with data from the project. For example, you can make a template with on one line, you write number of layers, and then a placeholder, and librePCB fills in the number of layers of this PCB.

Urban Bruhin
So it's already possible to to generate custom custom output files, but not for the PDF yet.

Parker Dillmann
The we were talking about this, actually, a couple weeks ago, Steven and I, on the podcast about setting up, like, what what EDA tools have for specifications for PCBs? Because that a lot of the, I would say, hobbyist EDA tools, I think it's a lot unfair because I've I've made professional boards with Eagle and KiCad and that kind of stuff. But but those tools don't really have a way to specify, like, if, like, an edge is, like, supposed to be beveled or or, like, what the material for the PCB is. Some of them have, like, you can put in stack ups, of course, but a lot of times you can't tell it, like, it's gonna be a specific kind of, you know, substrate. What does Libre PCB have in that regard?

Urban Bruhin
Yeah. That's actually a difficult topic because the main problem is there is no standardized way to forward this information to the manufacturer. Gerber files don't handle this information. Gerber X2 has some attributes you can use for some of these things, but most manufacturers don't read these attributes, so it doesn't really help. So if there is no standardized way to to forward this data to the manufacturer, what should the tool do?

Urban Bruhin
How can the tool help you if there is no standardized way? So it's really hard to to implement these features in the tool because I don't know what what to do with this information. And a little bit of this information is already it's possible to to specify in Lieber PCB, for example, the thickness of the PCB. You can specify, the color of the silk screen and of the solder mask, you can specify. But the main reason to make this configurable is the 3 d viewer.

Urban Bruhin
That integrated 3 d viewer knows how to render it. And, but the data is not really used yet for ordering the PCB. Even through through our internal order service, the data is not used yet because manufacturers don't provide an API. For example, PCBWay, when when I forward a project to PCBWay, I have no way to forward the color of of the silk screen. So it it's not it's it's not in my in my hands to to to implement this feature for for the manufacturers.

Urban Bruhin
Manufacturers need to provide some standardized way to provide this information. So, yeah, especially things like bevels and something like that, this is really, yeah, it's I still don't know how to implement it. I I was thinking about it several times already, and I I don't know a clean way yet how how to handle this information. So at the moment, features like that, are not not available yet in Lieber PCB.

Parker Dillmann
I don't think, where Steve and I lopped off talking about it is we don't know if the ODB plus plus packages can contain that, but I think someone said that the ipc 2581 contains some of that information, but again, not all of it.

Urban Bruhin
Yeah. To be honest, I know about this output formats, but I didn't have the time yet to to really read and understand this this output formats. Also, many PCB manufacturers don't support it yet. So, for me, it's a bit sad, but for me, this is not really high priority to implement these exports. But I think this would solve at least parts of the problems.

Urban Bruhin
Yes.

Parker Dillmann
Yeah.

Stephen Kraig
Well, and traditionally, the way that it's handled is on the fabrication drawing. Right? Which which you are already producing a fabrication drawing. It's just there's written text that details all of what we just talked about. Now that requires the engineer to actually write the text and write it properly and make sure that there's no issues.

Stephen Kraig
Yeah. You know, perhaps a stepping stone from where we are today to some future standard where this gets handled automatically is perhaps the tool can produce that text that just says solder mask color should be green and silkscreen should be white and f r four is the material. It's it's it's simplistic, but it but it gets the job done. Yeah.

Urban Bruhin
I think it's sometimes it's a bit I don't want to say dangerous, but a bit misleading. Maybe if the user somehow I don't like to add knobs for this information in the tool. For example, if you can configure the width of the PCB, but in the end, depending on the output format, how they forward the data to the manufacturer, this data may not be used. So it it may be misleading and and some users might be frustrating. I configured the color of the silk screen in the tool, but, after manufacturing, the color was different.

Urban Bruhin
So and then they blame Lieber PCB that the color didn't work. So I want to be careful with implementing features like this when they they don't work always. Correct.

Parker Dillmann
Yeah. I have a question, from from my end is is that is the command line interface is that those kind of attributes able to be pulled out of the project? So let's say you set the solder mask color to red.

Urban Bruhin
Yeah. Yeah.

Parker Dillmann
That happens to be a crab's color. So you set to red. Is there a way to get that out of it? I guess you could parse the actual file itself.

Urban Bruhin
I think it is. I I have some some output job type. I mean, the CLI is the now since we have output jobs, I think the main advantage of the CLI is to run output jobs, To generate the same output data as you would in the graphical user interface. And I implemented one special output job type, which generates a JSON file. It's not really a data you you need as a user normally.

Urban Bruhin
It's more a technical output file. And to be able to automate, things like this, how how to forward a solder mask color and something like that. I think attributes like solder mask color should be contained in the JSON. I'm not 100% sure, but basically this is the idea of this JSON file.

Parker Dillmann
Yeah. You said JSON, and I'm like, oh, yeah. Time to get the Python going.

Urban Bruhin
Yeah. Yeah. I mean, this JSON file is also used on our on our server. When you order a PCB, the project is uploaded to the website and there is a job running executing the calling the CLI and also exporting the JSON file on the server. So, for example, the size of the PCB is contained in the JSON file.

Urban Bruhin
So the web interface can show to the user then how, how the size of the PCB is. So some of the features we implement, we actually implement for our serve, for ourselves. But, yeah, of course, you can you can also use these features to to build your own process.

Parker Dillmann
Alright. So I am going to ask so the it's librepcv.org. There's a FAQ on there. While I was writing all these questions, I was making sure not to touch those questions. There is one though, and it's probably one you get a lot, Urban, is especially because I read this a lot too, like, especially when the UDP has, like, a press release or or a new version and stuff like that is why not work on other open source EDA tools?

Parker Dillmann
I know this you get this a lot. This is, like, the first question that's on your FAQ as well.

Urban Bruhin
Yeah.

Parker Dillmann
But why is that?

Urban Bruhin
Yeah. This is really something a lot of people ask me, especially at the beginning when the Libre Physi was not truly known yet. And now I think people start realizing or understand why why I work on Liber PCB and not on an existing tool. And I'm not sure if I remember correctly what I wrote on the website, but I think one main reason is there are different opinions how a tool should be. And let's say, for example, KiCad.

Urban Bruhin
I mean, Liber PCB is often often compared to KiCad. Why not contributing to KiCad? And I think there are different opinions how a tool should be. And KiCad developers have different opinions than I have, how the tool should be. And it makes no sense to contribute to a tool which has different concepts and by by on purpose.

Urban Bruhin
They have different concepts on on purpose. So why should I contribute to this project when I think another concept makes more sense? So I cannot change basic concepts in another tool just as one of many contributors. I don't have the the force to to change basic concepts. It's really hard.

Urban Bruhin
And another reason is, of course, also, when you manage to change basic concepts in an existing tool, you always have the problem of backwards compatibility. You still need to be backwards compatible to load existing project files. And this is really, really a big problem when you change fundamental concepts of the tool. And it's much, much easier to build a new tool because you don't with new concepts because you don't need backwards com compatibility. You you there are no existing project files yet.

Urban Bruhin
And, of course, I mean, in 10 years or so, maybe I have the same problem. Maybe I want to change some fundamental concept, but it's not easy then, or it's easy at the beginning.

Parker Dillmann
Steven?

Stephen Kraig
Yes. Sorry. No. I I I I agree. And actually your statement on the on the website is that it's good for users to have multiple different EDA tools.

Urban Bruhin
Yeah. Exactly.

Stephen Kraig
And I absolutely agree with that. I think it to give to give people options based off of what they're working with.

Urban Bruhin
Yeah, exactly. And I mean, also there are different target audiences. I think the target audience of KiCad is, yeah, I would say very, very advanced users. I mean, there are also a lot of beginners using KiCad, but when you when you, see what features KiCad has, many of those features are targeting professional, highly professional users, creating very, very complex designs. And I think for Liber PCB, the target audience is a little bit different.

Urban Bruhin
I focus more on simpler designs. I mean, Libre Physbie also supports things like micro bios and so on. And so it's it's not just a beginner tool. It's also usable for for advanced, more complicated projects, but still at the lower end of what KiCad targets. So, and I think if the target audience is very different, it's hard to build one tool for the whole audience, for everyone.

Urban Bruhin
It's very difficult to create one tool which which suits everyone's needs. Yeah.

Stephen Kraig
Is it your goal to, push Libre PCB more into that territory?

Urban Bruhin
I would say a little bit. Yes. And the focus is still on on simpler designs, on on users like hobbyists and maybe small companies. And basically my, how to say it, my goal is to make simple tasks simple in the tool. Simple features should be easy to to use.

Urban Bruhin
But there should also be it should also be possible to create more complex, things with the with the drawback of more complex usability. So, yeah, Compared to KiCad, I think even simple tasks are are complicated to use. I don't know why, but

Parker Dillmann
You're telling me.

Urban Bruhin
Some something. Everything feels when I use KiCad, everything feels complicated. No matter what simple task I want to do. That's And with Libre

Parker Dillmann
PCS that you're saying that.

Urban Bruhin
I I I try to keep things simple and only make them complicated when they need to be complicated.

Parker Dillmann
Yeah. Because a couple months ago, I started using KiCad almost full time, and it's it's at the time that was like the 5th EDA tool I've learned, and it's the first time since the first EDA tool I've picked up that I had to go read the manual on how to do stuff and ask questions. Because otherwise, I'm like, I can poke around and figure out how to make whatever I want to work. Mhmm. And then I started playing around with Libre a bit, and it was back to that where everything made sense of how it it's laid out differently and the processes are different, but at least it there's there's it makes sense when you start clicking the buttons.

Parker Dillmann
Yeah. There's still some stuff in KiCad that I am still, like, wondering how to do, I guess, is a good way to

Urban Bruhin
do it.

Parker Dillmann
I haven't fully figured it out yet. I didn't make a fully functional board in KiCad, though, so that was good. It's so funny that you say that because that was I was ramming right onto that wall on on KiCad.

Urban Bruhin
Yeah. I I totally understand you. Yeah.

Parker Dillmann
So you talked about a little bit because you said you you're aiming for more hobbyists or or simpler boards. Simpler can, honestly, PCBs as themselves are really complicated things, even simple ones. But so what is what is the limitation that y'all have on on Libre PCV that's makes that why is why do you compare it where, like, you're saying that key cats in advance for can can be for advanced users. What what is Libre missing then to become that?

Urban Bruhin
Yeah. I mean, at at the moment, I think one one big thing missing is nested schematics, hierarchical schematics. In Lieber PCB, it's just a plain, a flat schematic. You can have multiple pages, but you cannot nest and reuse parts of the circuit. So especially if you have repetitive designs, let's say, 16 channel any kind of module with 16 channels of something, 16 times the same subcircuit, I mean, that that would be a pain with Libre PCB because you have to copy and paste these 16 subcircuits manually.

Urban Bruhin
And if you make a change, you have to change you you need to apply the change 16 times. So

Stephen Kraig
for such,

Urban Bruhin
and

Parker Dillmann
we know how much you hate copy and pasting.

Urban Bruhin
It. Yeah. So, so I mean, for depending on the project, this this might be a real pain that this feature is missing. But of course, this is something someday, this needs to be implemented for sure. And the other thing is, in the board editor, technically, you can do almost everything in the border editor, but the tool doesn't really help you to do that.

Urban Bruhin
For example, there is no tool helping you routing traces. There is no, length matching of traces. Basically you need to draw every single trace on your own manually. So, yeah, also if you do something with, with, I don't know, 16 bit bus, with 16 bus signals or something like that, it will be a real pain because the tool doesn't help you to do it. But still, it's not, it's not a hard limitation.

Urban Bruhin
You can do it manually. I also did a project with Ethernet, 100 megabit Ethernet on it. And I just trace lengths manually on my own. The tool can measure the length of traces. So I just wrote down the length of every trace and and added, yeah, and longed or shortened some of the traces manually.

Urban Bruhin
It's possible. But, yeah, it's not fun with KiCad.

Stephen Kraig
I mean, KiCad have tools to make this very easy to to to route such traces. Yeah. In in general with EDA tools, I don't find myself using these more advanced options very often, but the times that you do need them, it's a lifesaver. Like like length matching

Parker Dillmann
is a great example.

Urban Bruhin
I totally agree. I think many many users of Libre PCB don't miss these features because they do simple designs, where you don't need these features.

Stephen Kraig
They may not even be aware that it is a feature on other EDs.

Urban Bruhin
Yeah, of course. Of course. Yeah. But of course, there are people doing a lot of complex designs, they they will not be happy at with librePCB.

Stephen Kraig
You know, I have I I've played around with librePCB a bit, but I haven't I haven't made a full board on it. One thing that one thing that I have found as sort of a just a a a general gripe on EDA tools across the board is is typically the DRC. When you run a DRC on a board, most EDA tools just give you this gigantic list of here's all the things I found, and it kinda just says good luck. Go fix things. How does leebay PCB handle DRC and informing the user that there's errors?

Urban Bruhin
I mean, one one thing is on every PRC warning or error you get, you can, depending on how it is configured, you can double click or there is a help button and you can get more information which tells you why this this warning appeared and what you can do to resolve it. Sometimes it makes suggestions or or asks you, maybe you wanted to do this instead of this. Or maybe, yeah, if the clearance is too small, it says the clearance is smaller than what is configured in the, in the design rules. So either you want to change your design rules according to your manufacturer specifications, or you need to increase the clearance on the PCB. So I tried to implement texts which which guide the user what what he should do to resolve the warnings.

Urban Bruhin
And, of course, the every warning also points on the PCB. It highlights the location where the error is from. So it's easy to spot where the error is coming from. And actually, in the what is also a bit different in Libre PCB, there is also a check like the DRC in the library editor. For example, if you draw a footprint and make something yeah.

Urban Bruhin
You make a mistake or or something which which may lead to problems later in the board. Even the the library editor already warns that you make something that might be might lead to problems later. And in the library editor, there is even a fix button in some of the warnings. Some warnings which can be fixed automatically, you just click the button and the tool fixes it on its own. And so, yeah, I think this helps a lot to, yeah, to resolve the problems easily and quickly.

Stephen Kraig
That's very cool.

Urban Bruhin
And I hope someday in the board editor we can also implement it. If there are errors which you too can resolve for you, I hope we can implement this feature there too.

Parker Dillmann
Are the DRC, I guess, rule set, is that like a template or is that something you have to punch in for each board?

Urban Bruhin
At the moment, you you need to configure it for each board on your own. I mean, the the file where where this information is stored is human readable. So if you like, you can just copy paste it from another project. But and and someday, probably, we will we will provide some import export. And and actually I I

Parker Dillmann
So how because we're now Steve and I are already starting to ask for features. So how do you prioritize features and improvements for future releases? Because Steve and I are already given up our we don't really use the tool and we already have, like, our opinions on on on features.

Urban Bruhin
Yeah. Yeah. Priorizing is really it's some sometimes I I really struggle with it. What what should be the next feature or bug fix or whatever I need to plan. And yeah, I have to admit, sometimes I just implement the feature I the features I like to implement.

Urban Bruhin
For example, a feature which makes fun to implement. But in general, I try to implement what what user are asking to. And some some time ago, I I even started a survey that user can can vote what they are thinking about tool now, what features they like, and what features they think are missing. So I hope in future these these results will also help a little bit to prioritize. And sometimes it's really it's a bit difficult.

Urban Bruhin
Sometimes features are depending on other things. For example, feature a maybe needs a techno technology change first, to even make sense to be implemented. And so sometimes I have to implement different things first before I can implement the actual feature which I want to. And, yeah. And actually, it's not just about features of the tool itself.

Urban Bruhin
There are also a lot of other things, and I need to I need to spend time for, for example, the website or the documentation or working on libraries, and which footprints our our users are asking and for the official libraries. And, yeah, a lot of things like that, which actually, yeah, are not not it's not just about the tool. There there are a lot of other things to do.

Parker Dillmann
So what are before we wrap up for today, what are upcoming features and improvements that people can look forward to?

Urban Bruhin
Oh, this is difficult. Actually, to be honest, it at the moment, it depends a little bit on if the support from the from NL Net will continue or not. If it will, I will have more time to to implement bigger features and one or bigger changes. And I think one of the main problems at the moment is now the the user interface. It's it's it is getting too crowded with with with features.

Urban Bruhin
And I think that there could be a huge improvement in user interface. But this is a really, really big task, which I'm only able to do with with some financial support. And so it it really depends on on how the project proceeds now. And yeah. And, of course, what what I said before already, hierarchical schematics is is one of the top features I I want to implement.

Parker Dillmann
So you mentioned, like, contributions. So how do how do people donate to Libre PCB?

Urban Bruhin
How how they do contribute? I mean, at at the moment there are several ways of, of donations on Patreon, on Github sponsors or through PayPal. And there are also some sponsors listed on the website. Some, yeah, some companies, some of them PCB manufacturers. Yeah.

Urban Bruhin
They they support the project financially. And of course there are also contributions, code contributions, pull requests, library cont documentation improvements, and things like that. So, yeah, there are many different ways how to contribute. But, I mean, to be honest, to to run a project like this, you need a full time, at least one full time developer. The project is getting too big to be developed just as a hobby project.

Urban Bruhin
And there are too many it's it's too many time needed to to push the project forward. And even all the maintenance, work on server side, yeah, And and library updates and so on. It's it requires really a lot of time. So a project like this needs needs at least one full time developer. So in the end, it it depends on how much donations and other income the project generates.

Parker Dillmann
Servan, thank you so much for coming on to our podcast. So where can people find out more about Libre PCB and you?

Urban Bruhin
I think, the main, starting point is librepcb.org, And there are also, some YouTube tutorials linked where you can easily get into LibrePCPs, see what it is able to do and and to learn how to do it. And my recommendation is just download it. It's so easy. Just download and install it. Play around with it.

Urban Bruhin
And I'm pretty sure you you will see what is how Liber PCB is different to the than the other tools, and and you will see if you like it or not. And, yeah, I I hope you will like it.

Stephen Kraig
And if anyone is interested in, donating or contributing, there's information on leaveapcb.org.

Urban Bruhin
Exactly. Yep. Thank you.

Stephen Kraig
Thank you so much.

Urban Bruhin
Thank you very much for your invitation.

Parker Dillmann
So thank you for listening to circuit break from MacroFab. We are your hosts

Stephen Kraig
And Steven Craig.

Parker Dillmann
Later, one. Hi, Urban. I'm just gonna record our outro here, and then I'll click the stop button.

Urban Bruhin
Okay.

Parker Dillmann
Thank you, Yes You Breaker, for downloading our podcast. Tell your friends, coworkers about the circuit break podcast from Macrofab. If you have a cool idea, project, or topic you want us to discuss, let Steven and I and the community of Breakers know. Our community where you can find personal projects, discussions about the podcast, engineering topics, and news is located atform.macfab.com.

Related Podcasts

When an alien craps

When an Alien Craps

The things that change the world, according to Chaos theory, are the tiny things. An Alien craps in Space and subsequently this podcast gets made.

CB FI 422

Wizard Trust Falls for PCB Footprints

Parker’s transition from Eagle to KiCad, facing challenges with library management and device layer integration. Also, the new MacroFab Quote Wizard.

Has open source hardware run its course

Has Open Source Hardware Run Its Course?

Ben Heckendorn and Chris Kraft rejoin the podcast to discuss if Open Source Hardware has run its course or is the dream still alive in our souls.

It is 2023 why does footprint design still suck

It is 2023, Why Does Footprint Design Still Suck?

Why is there such a disconnect between component datasheet drawings and EDA footprint layout tools? Stephen and Parker dive into this on this podcast.

The pinch load

The Pinch Load

What are the common Design Rule Check errors that Parker and Stephen see as Contract Manufacturers? Are these DRC errors the ones that you run into?

CB FI 430

The Toilet Mountain of Social Media

The hefty topic of U.S. funding for 'digital twin' chips research under the CHIPS Act, comparing its budget to other big expenditures.