Episode Transcript
Available transcripts are automatically generated. Complete accuracy is not guaranteed.
Parker Dillmann (00:21):
Welcome to
circuit break from MacroFab, a
weekly show about all thingsengineering, DIY projects,
manufacturing, industry news,and Libre PCB. We're your hosts,
electrical engineers, ParkerDillmann
Stephen Kraig (00:33):
and Stephen
Kraig.
Parker Dillmann (00:35):
This is episode
433.
Stephen Kraig (00:39):
So our guest this
week is Urban Bruhin from libre
PCB. Urban is a 34 year oldelectrical engineer from
Switzerland. After studyingelectrical engineering, Urban
worked worked as an embeddedsystems firmware and hardware
developer for consumer andautomotive sensors. Urban began
developing Libre PCB during histime at university and continued
(01:00):
through his full time job. Since2023, Urban has worked full time
at Libre PCB with the financialsupport of the NL Met
Foundation.
Parker Dillmann (01:12):
Welcome to the
podcast, Irvin.
Urban Bruhin (01:14):
Thank you very
much. Nice to be here.
Parker Dillmann (01:17):
So my my first
question is so you came you you
graduated, and then you startedworking as a electrical engineer
for embedded systems andhardware. 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 (01:39):
Before that, I
always used Eagle, actually. And
I think, some users of LiberPCB, yeah, saw that some
concepts are very similar toEagle. So I think it's, it's,
it's quite obvious.
Parker Dillmann (01:53):
Yeah. Yeah. I'm
a big Eagle user as well. I
think it was my first it was myfirst, like, big EDA tool I ever
started using. And, yeah, the Iwould say it's not fair to say
it's similar, but there'sdefinitely inspiration there.
Urban Bruhin (02:09):
Yeah. Exactly.
Yeah. I mean, generally, I I try
to reuse concepts I like. So ifI see some good feature on one
tool, I, yeah, I I implement itin a similar way.
And if another tool has anothergreat feature, I I, yeah, I I I
(02:30):
used his inspiration from there.So I tried to to mix the best of
all the tools, basically.
Parker Dillmann (02:37):
So, Erbik, can
you explain what Libre PCB is
then for our listeners?
Urban Bruhin (02:44):
Yeah. I mean,
basically, it's a PCB design
tool, to draw schematics and anddesign PCBs, which aims to be
easy to use, basically. I thinkthat's one of the main
advantages of Liber PCB, thatbasically everyone should be
able, to create a PCB with thistool. So you shouldn't shouldn't
(03:09):
need a lot of time to get intoit. And on the other hand, it
still provides quite advancedfeatures.
So it's not only for beginners,It's also for yeah. More or less
professional use.
Parker Dillmann (03:26):
So what made
you decide to stop using, let's
say, Eagle and your your day jobof being an embedded systems
firmware and hardware developerand been like, I wanna build an
EDA tool? What was what was thatday like for you?
Urban Bruhin (03:41):
Well, actually, it
wasn't my main idea to build an
EDA tool. Actually, my goal wasto build a quadrocopter, a
drone, in around 20 12 orsomething like that. I don't
remember. 2011 or so. I startedto build my own quadrocopter
from scratch and doing themechanics and, the electronics.
(04:06):
And I started with the brushlesscontrollers. I I even wanted to
build my own brushlesscontrollers. So I had to create
a lot of electronics for thisproject, and I heavily used
Eagle for this. But the more,the longer I used Eagle, the
more I realized this tool couldbe better. So I I I just saw a
(04:30):
lot of things which whichannoyed me, and I was always
thinking, there must be a betterway to design PCBs.
It's not really efficient. Theremust be a more efficient way. So
then I was thinking about whynot creating your own tool? If
the available tools are not whatI'm looking for. The only the
(04:53):
only alternative is to createyour own tool.
So yeah, I gave it a try. It wasnot really serious at the
beginning, more just for fun.Let's see what, what I can do.
And, yeah, after a few days orweeks of hacking around, trying
a bit to build something, I saw,yeah, yeah, that's I think I can
(05:17):
build something better. Andyeah, at this point, my color
copter project stopped.
The brushes controllers are arestill in my office here. Not not
finished yet. Still at the samepoint I stopped because, yeah,
now now Liberty PCB is myproject.
Stephen Kraig (05:38):
I kinda I kinda
like the idea that in order to
build the e d or sorry, the, thequadcopter, you first had to
build the EDA tool to make theport.
Urban Bruhin (05:47):
There are still
some friends asking, when is the
quadrocopter finished? Yeah, Ithink it will never finish now.
I mean, yeah, Libre PCB isbasically a project which never
ends. So yeah.
Parker Dillmann (06:03):
So so what
about Eagle that you were like,
I can make this better?
Urban Bruhin (06:08):
I think the main
problem I I had with this tool
was the whole library concept. Imean, you download the library
which contains resistor symbolsand resistor packages, and then
you buy some special resistorwith a non standard package, put
(06:29):
it in your own library and youdon't have a symbol for it.
BOLTU, the standard libraryprovides a symbol for resistor,
but you have to copy it in yourown library. Otherwise, you
cannot use it with your ownfootprint. Because, yeah, in
Eagle, every every library is,is closed.
It's self contained. You cannotreference elements from other
(06:52):
libraries. So reusability wasreally, really bad in this tool,
and I don't like to copy thingswhich which don't need to be
copied. There there are a lot ofduplicates in the ecolibraries.
And, yeah, I think this was themain reason.
And, yeah, another reason wasusability. I mean, it was not so
(07:15):
bad, but it had some quitestrange, usability concepts.
Very it was very different tomost other tools. So I was
thinking why why not reuse goodconcepts, well known concepts of
usability? So, yeah, I, so, somy main goal was to, to build a
(07:39):
better library concept andimproved usability.
And that's actually, the libraryconcept is also, I mean, it's
the part of Lieber PCB which Ispent most of my time at the
beginning. I didn't think aboutwhat features the tool need to
(07:59):
have or what technologies I wantto use or something like that. I
didn't think about this. I wasonly thinking about the library
concept. How how should thelibrary concept be to be to
improve reusability and, yeah,to to reduce the time to create
new elements.
(08:21):
So my main focus, I think, many,many months I spent just for
this concept, actually.
Parker Dillmann (08:29):
And Yeah. That
was the idea.
Urban Bruhin (08:30):
That I I started
with with implementing it.
Parker Dillmann (08:34):
I mean, that
was what initially drew me to
Libre PCB was the libraryconcept, because I was moving
around to different EDA toolsfiguring out what I wanted to
use next, and that that's whatstruck me with Libre was the
library concept. So could youactually talk more about the
philosophy and the design behindthe library cuts? Because that's
(08:55):
what really sets Libre apart isis library management.
Urban Bruhin (08:59):
Yeah. I think one
big difference, it's it's a
little bit technical, but it'sit's one of the main advantages
is that we don't use, humanreadable identifiers for
referencing any kind of object.For example, a symbol. Every
(09:19):
symbol has a name. I mean, let'ssay it's just called resistor.
And for example, in Eagle, yourthat, the device references a
symbol by its name. And if you,yeah, if if you change a name
also in in KiCad, this is aproblem. If you rename an
existing element, other elementsreferencing it are broken
(09:43):
afterwards because it's justreferenced by its name. But
names can be changed. In LibrePCB, we don't reference things
by name.
Every every element, everyobject which needs a reference
to it has a UUID, a uniqueidentifier which is randomly
generated. So this UUID neverchanges. It is, I mean, as a
(10:09):
user, you don't see this UUIDnormally. It's behind the
scenes. If you create a newelement, Libre generates random
UUIDs for this element.
And if you reference it fromsomewhere else, it is referenced
by this UUID. So you can changethe name how many times you ever
like and nothing will break. Ithink this is one of the
(10:33):
advantages. And it's not only,symbols and footprints and so on
which are referenced, it's evenevery 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 orwhatever, it's no problem.
(10:54):
You can rename it. And I thinkone other big difference is,
Libre Physically allows toreference elements across
library boundaries. So you candownload our our official
libraries, which containsstandard symbols and packages,
and you can add your own libraryon your computer, adding a
(11:19):
device. Let's say a device, sometransistor or whatever. And this
device in your library can useor reuse the symbols from our
official libraries and thepackages from our official
libraries.
So you don't need to duplicateit into your your library. And,
yeah, this is, for example,something I I just said that's
(11:41):
not possible in Eagle. And,yeah. And I think this is
really, I mean, it's it'stechnically, it's it's a very
simple feature, very simpleconcept, but from usability
view, I think it's a greatimprovement because it, yeah, it
highly improves reusability oflibrary elements.
Parker Dillmann (12:05):
So on on the
UUID, how how does that ensure
so so let's say if Steven hereis using LibrePcb and builds his
own part, and I build my ownpart, 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'srandom. Yeah. How how is it
(12:29):
generated so it makes sure thatwhat Steven creates doesn't
conflict have it same UUID thatI have?
Urban Bruhin (12:34):
Yeah. It's the the
UUID has enough bits that the
the probability of conflicts isalmost 0. Cannot Okay.
Stephen Kraig (12:44):
I like that. So
so I'm actually curious about
how, a system like that wouldwork for a multi user base. For
example, in my day job, we haveanywhere between 7 and 9
engineers working off of thesame library. How does Libre BCD
handle multi users?
Urban Bruhin (13:04):
Yeah, I think on,
on library and libraries, it's,
it should work pretty good. Imean, the main idea is if you
work with multiple persons fromthe same library, I would
recommend to use a versioncontrol system like Git. Manage
your library with Git then, so,I mean, with Git you think
(13:26):
you'll get, you fetch thechanges from other persons and
you push your changes to theother persons. And in Lieber
PCB, the thing is, as long asyou don't work on the same
library element, there will beno conflicts because every
library element, is stored inits own subdirectory of the
(13:50):
library with the new UID asdirectory name. So if someone
else creates a new libraryelement, it will have a
different file name than all theexisting library elements and
files.
So then there are no conflicts.If you are working, if you are
modifying on the same libraryelement from different places, I
(14:13):
mean, there is, of course, arisk of conflicts then. But this
is why I choose a human readablefile format, which is also
optimized for version control.So it is implemented in a way
that diffs are minimal. And ifyou, for example, make a change
(14:35):
in a library element and changeit back, it will lead to no
change at all in the file.
It's, it's called a canonicalfile system. There there cannot
be 2 different representationsof the same data. And, and,
yeah, with these concepts, thepossibility of conflict is very,
(14:58):
very low. And if you ever getthe conflict, you can so you can
resolve the conflict by yourown, because files are human
readable. You can you will seein Git what the other person
changed and what you changed,and you can can choose what
should be the resolution of it.
So, yeah, basically that's theidea of of working with multiple
(15:21):
multiple persons.
Parker Dillmann (15:23):
I I'm gonna
have to give that a test drive
because my I use Git for Eagleand Mhmm. It's human readable in
quotes, you know, XML format.
Urban Bruhin (15:35):
Yeah. Yeah.
Parker Dillmann (15:35):
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 ofchange. And it's just like, well
Yep. I'm I'm not gonna reviewthat. I'm just gonna click okay.
Urban Bruhin (15:50):
Yeah. That's
that's horrible. Especially, I
think the attributes in Eagleare not sorted. So they their
order just changes randomlysometimes. So this leads this is
what is not canonical.
I mean, 2 differentrepresentations of the file can
represent the same actual data.And this is something, this
(16:11):
doesn't happen with Libre PCB.There will be no change in
files, no changes you didn't doby yourself.
Stephen Kraig (16:22):
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. Soso what kind of challenges did
you face when starting LibrePCB?
Urban Bruhin (16:36):
I think at the
beginning, challenges were quite
small. Challenges are gettingbigger and bigger with time,
actually. Yeah. At thebeginning, actually, my my my
main concern was the graphicaluser interface. I had no
experience in the graphicalrepresentation.
(16:57):
For example, the schematic andhow to draw symbols and lines
and so on on screen, how to makeit zoomable, movable, draggable,
selectable, and all thesethings. I had no experience in
this area. I mean, all the logicbehind behind the user interface
is yeah. It was obvious how toimplement it, basically, for me.
(17:20):
So yeah.
But but the user interface, itwas the main challenge at the
beginning. And actually it isstill today, still today the
user interface is one of the,yeah, it's something, it's
really, it's easy to saysomething is bad. This user
(17:42):
interface is bad. That's easy tosay. But how to make it better?
How should it be to make itbetter, to make it more usable,
to make it more intuitive? Thisis really difficult. It's really
hard to, yeah, to find a gooduser interface and also to
(18:02):
implement it. For example,performance is getting bigger
and bigger problem. At thebeginning, performance was no a
now people are doing morecomplex, bigger designs with
lots of symbols in theschematic, lots of wires and and
(18:25):
pads in in the board.
So performance of of thegraphic, of the graphics
rendering is getting, bigger andbigger problem. And yeah,
challenge is now how, whattechnology to use and how to
implement it to still be, tostill have a good performance
even for large designs?
Stephen Kraig (18:47):
Yeah. So
engineers are always going to
have opinions on things and eveneven if you move one button
around in its location on a userinterface, somebody will like
that and somebody will hatethat, and they will let you know
for sure.
Parker Dillmann (19:01):
Exactly. Yeah.
Urban Bruhin (19:04):
Absolutely.
Parker Dillmann (19:06):
So the so
besides the library, advanced
library, what unique features ofLibre PCB that you're, like,
very proud of?
Urban Bruhin (19:15):
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 simplefeature, but it makes ordering a
PCB so much easier than everbefore. And I didn't see a
feature like this integratedlike this. I didn't see it in
(19:40):
another tool.
In Liber PCB, you can just clickthe order button and it uploads
your project to our own webserver. And the project is
analyzed, Gerber files areexported on the web server. You
can choose the manufacturerwhere you want to produce the
PCB, click continue and you endup in the shop, in the web
(20:02):
interface of the manufacturer.And you never had to touch any
file. You never had to to makeany any settings for Gerber
export or something like that.
It's so easy. You cannot doanything wrong with this
feature. And but technically,it's a simple feature. I mean, I
I cannot be proud of it from thetechnical point of view, but but
(20:27):
but I like how simple it makesordering a PCB. And and I didn't
see this, yeah, this easyworkflow in another tool yet.
Parker Dillmann (20:38):
Yeah. I started
looking at the Libre PC has a
command line interface.
Urban Bruhin (20:43):
Yeah.
Parker Dillmann (20:44):
And so I was
looking at that and figuring out
how I can integrate, Libre intointo the Macrofab front end.
Yeah. So I'm I'm looking forward
Urban Bruhin (20:54):
to that. This this
is a good point. I think the
command line interface is, sincethe last release, it's, it was
getting even much more powerful.And this is a good point because
this is another feature I'mactually proud of, an output
job. I think this is a really,really cool feature.
You can you can now actually, Iknow this feature from from
(21:18):
expensive EDA tools like Altium.I mean, Altium is one of the
lower cost EDA tools, but fromfrom the hobbyist point of view,
it's still an expensive tool.And I know this tool from from
Altium, and I think no, no opensource tool has something that
(21:39):
is even close to it, how weimplemented it in Libre PCB now.
So, you can now just configureall the output jobs, all the
output files you want togenerate. A PDF of the
schematics, maybe an assemblyplan of the PCB, Gerber files of
the PCB, the BOM, pick and placefiles, whatever you want.
(22:00):
It's it depends from project toproject and and on preferences
of users. What kind of outputfile they want, and with with
which settings they want to haveit. And in Libre PCB, you can
now configure it once for aproject, and with one button
click, you generate all thefiles at once. Even the zip
(22:20):
file, zipping all the Gerberfiles together, you can generate
it with this single click. Andnext time you, on the next
iteration, you modify something,release a new version of this
PCB, you make one click and youget all your output files ready
to send to the manufacturer.
So I think this is a really,really cool feature. No. It's
(22:43):
awesome. And saving you a lot oftime.
Stephen Kraig (22:46):
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 areall working on a variety of
projects. And, so we've beenworking on how do we get
everyone to click one button andin reality, maybe it's 3 or 4
buttons. But but they get all oftheir files exported and it
(23:09):
happens the same way for eachperson. And in fact, we have a
we have a a joke that we've beentalking about but all of our
files we say have to pass anintern test.
So if we have an an internworking at the company, we
should be able to tell theintern, hey, go export Mhmm. The
files for any project and theycould do it with very little
(23:29):
information. So we we weretrying to build our processes
like that. So I I love this.This is this is really
fantastic, this output jobs.
A question about actuallybecause because I noticed you
were you have the PDF and theboard assembly PDF as as
exports. Is it possible toinclude an engineering title
block with that such that itexports with, you know, official
(23:53):
documentation, I guess?
Urban Bruhin (23:55):
You mean to
include custom content in the in
the PDF basically? Yeah.
Stephen Kraig (23:59):
Correct.
Urban Bruhin (23:59):
I was thinking
about this. It's not possible
yet, but I hope someday we canalso implement that. Yeah. Okay.
Cool.
The main, the basic concept isalready prepared to, to include
something like this. Forexample, you can already
generate 1 PDF containing boththe schematic and the assembly
(24:19):
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 theoption to include custom custom
pages, custom content in thisPDF. That's
Parker Dillmann (24:36):
very very good.
Specifications and that kind of
stuff?
Urban Bruhin (24:40):
Yeah. Exactly.
Yeah. It's even a little bit
it's already prepared, not notfor the PDF, but for for the
output files itself. It'salready possible to generate, an
output file which is customized.
It's basically a template. I I Iknow it from some people are
writing a text doc text file forthe PCB manufacturer or for the
(25:04):
assembly house containing someblah blah blah about company and
some, yeah, some boilerplate,what they want to let the
manufacturer know. And it'salready possible in Liber PCB to
include a template filecontaining the spoiler plate.
And Lieber PCB is able to toreplace placeholders in this
(25:27):
file with with data from theproject. For example, you can
make a template with on oneline, you write number of
layers, and then a placeholder,and librePCB fills in the number
of layers of this PCB.
So it's already possible to togenerate custom custom output
(25:48):
files, but not for the PDF yet.
Parker Dillmann (25:51):
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 havefor specifications for PCBs?
Because that a lot of the, Iwould say, hobbyist EDA tools, I
think it's a lot unfair becauseI've I've made professional
boards with Eagle and KiCad andthat kind of stuff. But but
(26:14):
those tools don't really have away to specify, like, if, like,
an edge is, like, supposed to bebeveled or or, like, what the
material for the PCB is. Some ofthem have, like, you can put in
stack ups, of course, but a lotof times you can't tell it,
like, it's gonna be a specifickind of, you know, substrate.
(26:37):
What does Libre PCB have in thatregard?
Urban Bruhin (26:40):
Yeah. That's
actually a difficult topic
because the main problem isthere is no standardized way to
forward this information to themanufacturer. Gerber files don't
handle this information. GerberX2 has some attributes you can
use for some of these things,but most manufacturers don't
read these attributes, so itdoesn't really help. So if there
(27:05):
is no standardized way to toforward this data to the
manufacturer, what should thetool do?
How can the tool help you ifthere is no standardized way? So
it's really hard to to implementthese features in the tool
because I don't know what whatto do with this information. And
(27:29):
a little bit of this informationis already it's possible to to
specify in Lieber PCB, forexample, the thickness of the
PCB. You can specify, the colorof the silk screen and of the
solder mask, you can specify.But the main reason to make this
configurable is the 3 d viewer.
(27:50):
That integrated 3 d viewer knowshow to render it. And, but the
data is not really used yet forordering the PCB. Even through
through our internal orderservice, the data is not used
yet because manufacturers don'tprovide an API. For example,
PCBWay, when when I forward aproject to PCBWay, I have no way
(28:12):
to forward the color of of thesilk screen. So it it's not it's
it's not in my in my hands to toto implement this feature for
for the manufacturers.
Manufacturers need to providesome standardized way to provide
this information. So, yeah,especially things like bevels
(28:36):
and something like that, this isreally, yeah, it's I still don't
know how to implement it. I Iwas thinking about it several
times already, and I I don'tknow a clean way yet how how to
handle this information. So atthe moment, features like that,
are not not available yet inLieber PCB.
Parker Dillmann (28:56):
I don't think,
where Steve and I lopped off
talking about it is we don'tknow if the ODB plus plus
packages can contain that, but Ithink someone said that the ipc
2581 contains some of thatinformation, but again, not all
of it.
Urban Bruhin (29:14):
Yeah. To be
honest, I know about this output
formats, but I didn't have thetime yet to to really read and
understand this this outputformats. Also, many PCB
manufacturers don't support ityet. So, for me, it's a bit sad,
but for me, this is not reallyhigh priority to implement these
(29:37):
exports. But I think this wouldsolve at least parts of the
problems.
Yes.
Parker Dillmann (29:43):
Yeah.
Stephen Kraig (29:43):
Well, and
traditionally, the way that it's
handled is on the fabricationdrawing. Right? Which which you
are already producing afabrication drawing. It's just
there's written text thatdetails all of what we just
talked about. Now that requiresthe engineer to actually write
the text and write it properlyand make sure that there's no
(30:04):
issues.
Yeah. You know, perhaps astepping stone from where we are
today to some future standardwhere this gets handled
automatically is perhaps thetool can produce that text that
just says solder mask colorshould be green and silkscreen
should be white and f r four isthe material. It's it's it's
(30:25):
simplistic, but it but it getsthe job done. Yeah.
Urban Bruhin (30:29):
I think it's
sometimes it's a bit I don't
want to say dangerous, but a bitmisleading. Maybe if the user
somehow I don't like to addknobs for this information in
the tool. For example, if youcan configure the width of the
PCB, but in the end, dependingon the output format, how they
(30:50):
forward the data to themanufacturer, this data may not
be used. So it it may bemisleading and and some users
might be frustrating. Iconfigured the color of the silk
screen in the tool, but, aftermanufacturing, the color was
different.
So and then they blame LieberPCB that the color didn't work.
(31:14):
So I want to be careful withimplementing features like this
when they they don't workalways. Correct.
Parker Dillmann (31:23):
Yeah. I have a
question, from from my end is is
that is the command lineinterface is that those kind of
attributes able to be pulled outof the project? So let's say you
set the solder mask color tored.
Urban Bruhin (31:42):
Yeah. Yeah.
Parker Dillmann (31:43):
That happens to
be a crab's color. So you set to
red. Is there a way to get thatout of it? I guess you could
parse the actual file itself.
Urban Bruhin (31:54):
I think it is. I I
have some some output job type.
I mean, the CLI is the now sincewe have output jobs, I think the
main advantage of the CLI is torun output jobs, To generate the
same output data as you would inthe graphical user interface.
And I implemented one specialoutput job type, which generates
(32:18):
a JSON file. It's not really adata you you need as a user
normally.
It's more a technical outputfile. And to be able to
automate, things like this, howhow to forward a solder mask
color and something like that. Ithink attributes like solder
mask color should be containedin the JSON. I'm not 100% sure,
(32:41):
but basically this is the ideaof this JSON file.
Parker Dillmann (32:45):
Yeah. You said
JSON, and I'm like, oh, yeah.
Time to get the Python going.
Urban Bruhin (32:49):
Yeah. Yeah. I
mean, this JSON file is also
used on our on our server. Whenyou order a PCB, the project is
uploaded to the website andthere is a job running executing
the calling the CLI and alsoexporting the JSON file on the
server. So, for example, thesize of the PCB is contained in
(33:11):
the JSON file.
So the web interface can show tothe user then how, how the size
of the PCB is. So some of thefeatures we implement, we
actually implement for ourserve, for ourselves. But, yeah,
of course, you can you can alsouse these features to to build
(33:32):
your own process.
Parker Dillmann (33:35):
Alright. So I
am going to ask so the it's
librepcv.org. There's a FAQ onthere. While I was writing all
these questions, I was makingsure not to touch those
questions. There is one though,and it's probably one you get a
lot, Urban, is especiallybecause I read this a lot too,
like, especially when the UDPhas, like, a press release or or
(33:59):
a new version and stuff likethat is why not work on other
open source EDA tools?
I know this you get this a lot.This is, like, the first
question that's on your FAQ aswell.
Urban Bruhin (34:11):
Yeah.
Parker Dillmann (34:11):
But why is
that?
Urban Bruhin (34:14):
Yeah. This is
really something a lot of people
ask me, especially at thebeginning when the Libre Physi
was not truly known yet. And nowI think people start realizing
or understand why why I work onLiber PCB and not on an existing
tool. And I'm not sure if Iremember correctly what I wrote
(34:37):
on the website, but I think onemain reason is there are
different opinions how a toolshould be. And let's say, for
example, KiCad.
I mean, Liber PCB is often oftencompared to KiCad. Why not
contributing to KiCad? And Ithink there are different
opinions how a tool should be.And KiCad developers have
(34:59):
different opinions than I have,how the tool should be. And it
makes no sense to contribute toa tool which has different
concepts and by by on purpose.
They have different concepts onon purpose. So why should I
contribute to this project whenI think another concept makes
(35:22):
more sense? So I cannot changebasic concepts in another tool
just as one of manycontributors. I don't have the
the force to to change basicconcepts. It's really hard.
And another reason is, ofcourse, also, when you manage to
(35:43):
change basic concepts in anexisting tool, you always have
the problem of backwardscompatibility. You still need to
be backwards compatible to loadexisting project files. And this
is really, really a big problemwhen you change fundamental
concepts of the tool. And it'smuch, much easier to build a new
(36:08):
tool because you don't with newconcepts because you don't need
backwards com compatibility. Youyou there are no existing
project files yet.
And, of course, I mean, in 10years or so, maybe I have the
same problem. Maybe I want tochange some fundamental concept,
but it's not easy then, or it'seasy at the beginning.
Parker Dillmann (36:32):
Steven?
Stephen Kraig (36:34):
Yes. Sorry. No. I
I I I agree. And actually your
statement on the on the websiteis that it's good for users to
have multiple different EDAtools.
Urban Bruhin (36:45):
Yeah. Exactly.
Stephen Kraig (36:46):
And I absolutely
agree with that. I think it to
give to give people optionsbased off of what they're
working with.
Urban Bruhin (36:52):
Yeah, exactly. And
I mean, also there are different
target audiences. I think thetarget audience of KiCad is,
yeah, I would say very, veryadvanced users. I mean, there
are also a lot of beginnersusing KiCad, but when you when
you, see what features KiCadhas, many of those features are
(37:14):
targeting professional, highlyprofessional users, creating
very, very complex designs. AndI think for Liber PCB, the
target audience is a little bitdifferent.
I focus more on simpler designs.I mean, Libre Physbie also
supports things like micro biosand so on. And so it's it's not
(37:41):
just a beginner tool. It's alsousable for for advanced, more
complicated projects, but stillat the lower end of what KiCad
targets. So, and I think if thetarget audience is very
different, it's hard to buildone tool for the whole audience,
for everyone.
(38:02):
It's very difficult to createone tool which which suits
everyone's needs. Yeah.
Stephen Kraig (38:10):
Is it your goal
to, push Libre PCB more into
that territory?
Urban Bruhin (38:17):
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. Andbasically my, how to say it, my
goal is to make simple taskssimple in the tool. Simple
(38:40):
features should be easy to touse.
But there should also be itshould also be possible to
create more complex, things withthe with the drawback of more
complex usability. So, yeah,Compared to KiCad, I think even
simple tasks are are complicatedto use. I don't know why, but
Parker Dillmann (39:02):
You're telling
me.
Urban Bruhin (39:04):
Some something.
Everything feels when I use
KiCad, everything feelscomplicated. No matter what
simple task I want to do. That'sAnd with Libre
Parker Dillmann (39:14):
PCS that you're
saying that.
Urban Bruhin (39:16):
I I I try to keep
things simple and only make them
complicated when they need to becomplicated.
Parker Dillmann (39:23):
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'velearned, and it's the first time
since the first EDA tool I'vepicked up that I had to go read
the manual on how to do stuffand ask questions. Because
otherwise, I'm like, I can pokearound and figure out how to
(39:45):
make whatever I want to work.Mhmm. And then I started playing
around with Libre a bit, and itwas back to that where
everything made sense of how itit's laid out differently and
the processes are different, butat least it there's there's it
makes sense when you startclicking the buttons.
Yeah. There's still some stuffin KiCad that I am still, like,
(40:09):
wondering how to do, I guess, isa good way to
Urban Bruhin (40:12):
do it.
Parker Dillmann (40:12):
I haven't fully
figured it out yet. I didn't
make a fully functional board inKiCad, though, so that was good.
It's so funny that you say thatbecause that was I was ramming
right onto that wall on onKiCad.
Urban Bruhin (40:26):
Yeah. I I totally
understand you. Yeah.
Parker Dillmann (40:30):
So you talked
about a little bit because you
said you you're aiming for morehobbyists or or simpler boards.
Simpler can, honestly, PCBs asthemselves are really
complicated things, even simpleones. But so what is what is the
limitation that y'all have on onLibre PCV that's makes that why
(40:51):
is why do you compare it where,like, you're saying that key
cats in advance for can can befor advanced users. What what is
Libre missing then to becomethat?
Urban Bruhin (41:04):
Yeah. I mean, at
at the moment, I think one one
big thing missing is nestedschematics, hierarchical
schematics. In Lieber PCB, it'sjust a plain, a flat schematic.
You can have multiple pages, butyou cannot nest and reuse parts
of the circuit. So especially ifyou have repetitive designs,
(41:28):
let's say, 16 channel any kindof module with 16 channels of
something, 16 times the samesubcircuit, I mean, that that
would be a pain with Libre PCBbecause you have to copy and
paste these 16 subcircuitsmanually.
And if you make a change, youhave to change you you need to
(41:51):
apply the change 16 times. So
Stephen Kraig (41:54):
for such,
Urban Bruhin (41:55):
and
Parker Dillmann (41:55):
we know how
much you hate copy and pasting.
Urban Bruhin (41:59):
It. Yeah. So, so I
mean, for depending on the
project, this this might be areal pain that this feature is
missing. But of course, this issomething someday, this needs to
be implemented for sure. And theother thing is, in the board
editor, technically, you can doalmost everything in the border
(42:19):
editor, but the tool doesn'treally help you to do that.
For example, there is no toolhelping you routing traces.
There is no, length matching oftraces. Basically you need to
draw every single trace on yourown manually. So, yeah, also if
(42:40):
you do something with, with, Idon't know, 16 bit bus, with 16
bus signals or something likethat, it will be a real pain
because the tool doesn't helpyou to do it. But still, it's
not, it's not a hard limitation.
You can do it manually. I alsodid a project with Ethernet, 100
(43:05):
megabit Ethernet on it. And Ijust trace lengths manually on
my own. The tool can measure thelength of traces. So I just
wrote down the length of everytrace and and added, yeah, and
longed or shortened some of thetraces manually.
It's possible. But, yeah, it'snot fun with KiCad.
Stephen Kraig (43:29):
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 usingthese more advanced options very
often, but the times that you doneed them, it's a lifesaver.
(43:49):
Like like length matching
Parker Dillmann (43:51):
is a great
example.
Urban Bruhin (43:52):
I totally agree. I
think many many users of Libre
PCB don't miss these featuresbecause they do simple designs,
where you don't need thesefeatures.
Stephen Kraig (44:01):
They may not even
be aware that it is a feature on
other EDs.
Urban Bruhin (44:04):
Yeah, of course.
Of course. Yeah. But of course,
there are people doing a lot ofcomplex designs, they they will
not be happy at with librePCB.
Stephen Kraig (44:15):
You know, I have
I I've played around with
librePCB a bit, but I haven't Ihaven't made a full board on it.
One thing that one thing that Ihave found as sort of a just a a
a general gripe on EDA toolsacross the board is is typically
the DRC. When you run a DRC on aboard, most EDA tools just give
(44:36):
you this gigantic list of here'sall the things I found, and it
kinda just says good luck. Gofix things. How does leebay PCB
handle DRC and informing theuser that there's errors?
Urban Bruhin (44:49):
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 clickor there is a help button and
you can get more informationwhich tells you why this this
warning appeared and what youcan do to resolve it. Sometimes
(45:11):
it makes suggestions or or asksyou, maybe you wanted to do this
instead of this. Or maybe, yeah,if the clearance is too small,
it says the clearance is smallerthan what is configured in the,
in the design rules. So eitheryou want to change your design
rules according to yourmanufacturer specifications, or
(45:34):
you need to increase theclearance on the PCB. So I tried
to implement texts which whichguide the user what what he
should do to resolve thewarnings.
And, of course, the everywarning also points on the PCB.
It highlights the location wherethe error is from. So it's easy
(45:58):
to spot where the error iscoming from. And actually, in
the what is also a bit differentin Libre PCB, there is also a
check like the DRC in thelibrary editor. For example, if
you draw a footprint and makesomething yeah.
You make a mistake or orsomething which which may lead
(46:22):
to problems later in the board.Even the the library editor
already warns that you makesomething that might be might
lead to problems later. And inthe library editor, there is
even a fix button in some of thewarnings. Some warnings which
can be fixed automatically, youjust click the button and the
(46:44):
tool fixes it on its own. Andso, yeah, I think this helps a
lot to, yeah, to resolve theproblems easily and quickly.
Stephen Kraig (46:56):
That's very cool.
Urban Bruhin (46:58):
And I hope someday
in the board editor we can also
implement it. If there areerrors which you too can resolve
for you, I hope we can implementthis feature there too.
Parker Dillmann (47:09):
Are the DRC, I
guess, rule set, is that like a
template or is that somethingyou have to punch in for each
board?
Urban Bruhin (47:18):
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 humanreadable. So if you like, you
can just copy paste it fromanother project. But and and
someday, probably, we will wewill provide some import export.
(47:38):
And and actually I I
Parker Dillmann (47:42):
So how because
we're now Steve and I are
already starting to ask forfeatures. So how do you
prioritize features andimprovements for future
releases? Because Steve and Iare already given up our we
don't really use the tool and wealready have, like, our opinions
on on on features.
Urban Bruhin (48:02):
Yeah. Yeah.
Priorizing is really it's some
sometimes I I really strugglewith it. What what should be the
next feature or bug fix orwhatever I need to plan. And
yeah, I have to admit, sometimesI just implement the feature I
the features I like toimplement.
(48:25):
For example, a feature whichmakes fun to implement. But in
general, I try to implement whatwhat user are asking to. And
some some time ago, I I evenstarted a survey that user can
can vote what they are thinkingabout tool now, what features
(48:47):
they like, and what featuresthey think are missing. So I
hope in future these theseresults will also help a little
bit to prioritize. And sometimesit's really it's a bit
difficult.
Sometimes features are dependingon other things. For example,
(49:08):
feature a maybe needs a technotechnology change first, to even
make sense to be implemented.And so sometimes I have to
implement different things firstbefore I can implement the
actual feature which I want to.And, yeah. And actually, it's
(49:28):
not just about features of thetool itself.
There are also a lot of otherthings, and I need to I need to
spend time for, for example, thewebsite or the documentation or
working on libraries, and whichfootprints our our users are
asking and for the officiallibraries. And, yeah, a lot of
(49:52):
things like that, whichactually, yeah, are not not it's
not just about the tool. Therethere are a lot of other things
to do.
Parker Dillmann (50:01):
So what are
before we wrap up for today,
what are upcoming features andimprovements that people can
look forward to?
Urban Bruhin (50:11):
Oh, this is
difficult. Actually, to be
honest, it at the moment, itdepends a little bit on if the
support from the from NL Netwill continue or not. If it
will, I will have more time toto implement bigger features and
one or bigger changes. And Ithink one of the main problems
(50:34):
at the moment is now the theuser interface. It's it's it is
getting too crowded with withwith features.
And I think that there could bea huge improvement in user
interface. But this is a really,really big task, which I'm only
(50:55):
able to do with with somefinancial support. And so it it
really depends on on how theproject proceeds now. And yeah.
And, of course, what what I saidbefore already, hierarchical
schematics is is one of the topfeatures I I want to implement.
Parker Dillmann (51:16):
So you
mentioned, like, contributions.
So how do how do people donateto Libre PCB?
Urban Bruhin (51:25):
How how they do
contribute? I mean, at at the
moment there are several waysof, of donations on Patreon, on
Github sponsors or throughPayPal. And there are also some
sponsors listed on the website.Some, yeah, some companies, some
(51:45):
of them PCB manufacturers. Yeah.
They they support the projectfinancially. And of course there
are also contributions, codecontributions, pull requests,
library cont documentationimprovements, and things like
that. So, yeah, there are manydifferent ways how to
contribute. But, I mean, to behonest, to to run a project like
(52:10):
this, you need a full time, atleast one full time developer.
The project is getting too bigto be developed just as a hobby
project.
And there are too many it's it'stoo many time needed to to push
the project forward. And evenall the maintenance, work on
server side, yeah, And andlibrary updates and so on. It's
(52:34):
it requires really a lot oftime. So a project like this
needs needs at least one fulltime developer. So in the end,
it it depends on how muchdonations and other income the
project generates.
Parker Dillmann (52:50):
Servan, thank
you so much for coming on to our
podcast. So where can peoplefind out more about Libre PCB
and you?
Urban Bruhin (52:58):
I think, the main,
starting point is librepcb.org,
And there are also, some YouTubetutorials linked where you can
easily get into LibrePCPs, seewhat it is able to do and and to
learn how to do it. And myrecommendation is just download
(53:19):
it. It's so easy. Just downloadand install it. Play around with
it.
And I'm pretty sure you you willsee what is how Liber PCB is
different to the than the othertools, and and you will see if
you like it or not. And, yeah, II hope you will like it.
Stephen Kraig (53:41):
And if anyone is
interested in, donating or
contributing, there'sinformation on leaveapcb.org.
Urban Bruhin (53:50):
Exactly. Yep.
Thank you.
Stephen Kraig (53:52):
Thank you so
much.
Urban Bruhin (53:55):
Thank you very
much for your invitation.
Parker Dillmann (54:00):
So thank you
for listening to circuit break
from MacroFab. We are your hosts
Stephen Kraig (54:04):
And Steven Craig.
Parker Dillmann (54:06):
Later, one. Hi,
Urban. I'm just gonna record our
outro here, and then I'll clickthe stop button.
Urban Bruhin (54:12):
Okay.
Parker Dillmann (54:12):
Thank you, Yes
You Breaker, for downloading our
podcast. Tell your friends,coworkers about the circuit
break podcast from Macrofab. Ifyou have a cool idea, project,
or topic you want us to discuss,let Steven and I and the
community of Breakers know. Ourcommunity where you can find
personal projects, discussionsabout the podcast, engineering
(54:33):
topics, and news is locatedatform.macfab.com.