All right, welcome back, good afternoon.
At long last, it's noon here.
Welcome back to the open hardware and CAD CAM dev room at
Fossdom 26. Next up, we have Urban who is the founder of the
Libra PCB project.
Thank you.
So, yeah, my name is Urban. I'm the founder of the
Libra PCB project and today I will give you a quick update about my project
and especially about its brand new release to 0.0.
So, for those who still don't know a Libra PCB yet, it's a free
and open source cross-platform PCB design software which
aims to be easy to use and to empower everyone creating
professional PCBs very quickly.
It also features a powerful library concept and a
human readable file format which is optimized for version
control.
First of all, I would like to mention our sponsors who share our
vision of making hardware development easier.
The past three years, we got two grants from the
NGI-0 program through NLNet which enabled us to
develop both Libra PCB 1.0 and 2.0.
Then we have our sponsor, Hazler, a great PCB manufacturer with
FAPS in Germany and the sponsors parts box, an
electronic parts inventory system, wind source, an
electronic parts distributor. We tell Canadian PCB
manufacturer and three large Chinese PCB manufacturers,
PCBB, PCBGoGo and next PCB.
Also, we get donations and contributions from the community.
At this point, I want to thank all those people for supporting
the Libra PCB project which wouldn't be possible without them.
So, a quick look at last year with all those sponsor
donations, we raised around 47,000 euros which is almost
enough to survive in Switzerland. So, since three years
now since I create my job three years ago, I'm working full
time on Libra PCB and from time to time, I'm doing a
little bit of reliance work beside Libra PCB.
Unfortunately, the NLNet grant runs out today.
Our next challenge is going to be to implement sustainable funding for
the Libra PCB project. In my opinion, for a long term, it should
not rely on public money. This is one of the big tasks I think in
future, how to fund the third development.
Let's have a look at what new NLNet Libra PCB since my last
talk at first time two years ago. We might have
releases, for example, Libra PCB 1.1, where we
implemented life parts information in NLNet Libra PCB.
So, before you add a component to this
schematic, you will see the stock availability and
prices of the parts. So, hopefully you will never add
parts to your project anymore, which have supply chain issues.
You will also see whether part is whether they are active or
not recommended for new design, and you get data sheet
link and also picture. This is all life information fetch
from the internet in the moment you scroll through the list.
So, it's really not outdated information and also this
feature actually requires no configuration, no API keys, no
online account, you just start Libra PCB and it works.
Then we implemented an equal project in
Porter. So, if you see equal before, which is which
stopped the development, you can now migrate your
Libra, your equal project to Libra PCB. Then in
Libra PCB 1.2, we also implemented a keycat
library in Porter. So, if you can find the specific
symbol or footprint in the Libra PCB libraries, you can
just import them from a keypad library. And it also
imports the step models out of the box. Then in the
footprint editor, it is now possible to overlay
the footprint with a drawing from the data sheet, which is
very useful to review a footprint. For example, you will
see immediately if one pad is at the wrong position.
That's really helpful to review.
Then the schematic editor now also provides links to the
data sheets of the parts, and even if a part doesn't have
a data sheet linked, Libra PCB provides you the option
to directly ask for that data sheet in the internet. So,
if it finds the data sheet in the internet, it immediately
opens it with your local PDF view. Then, since
people always ask me for an auto router, I still don't
know why. We implemented the Spectre export and
import. So, at least you can now use an external
router if you want to. Then, another simple but
actually quite useful feature is importing pins from
a data sheet. So, instead of typing all the pin names
by hand, when you create a new symbol, you can just copy
them from a pin out table from the data sheet, paste it
into Libra PCB, and Libra PCB automatically
extracts the pin names from the data sheet and puts the
pins. So, you only need to direct them to their
position. Then, Libra PCB 1.3, we made some
technology updates. We migrated from Q5 to Q6, which
involved quite some effort. And, we started to use the
Rust programming language in addition to C++.
And, the main reason for this step is actually to
increase the speed of development. Thanks to the
huge Rust ecosystem, compared to C++. And,
also to reduce runtime errors and bugs. And, thanks
to Rust compile tantex and memory safety guarantees.
And, in general, also to move Libra PCB to a future
proof technology. And, instead of staying with C++, which
is more and more considered legacy. However, this is
still a long way. As you are currently around at
0.9 percent of Rust code. So, yeah. And, the very first
feature we actually implemented in Rust is a
generator for the interactive HTML
platform. And, this generator is integrated into
Libra PCB as an output shop. So, just with click
you can now export an interactive foam. You might
already know the interactive foam from kick-at.
If I remember correctly, this is a plugin. And, in
Libra PCB, this built in. And, the actual
implementation is a public Rust crate, which any
project can just include in their project. It's not in
the Libra PCB code, but it's actually. So, now, let's
get to the interesting part. Libra PCB 2.0 was just
released four days ago. And, where we made another
technology update, we have rewritten our whole user
interface from scratch with a new UI toolkit named
. And, compared to cute widgets, which we used
before, a link gives us much more freedom in the
UI design. And, it also ensures a consistent
look and feel across all the platforms. It
speeds up development. Thanks to a
declarative UI description language. And, in
general, it also lines with our long-term
strategy of moving from C++ to Rust since
a link itself is implemented in Rust, too.
And, this new UI, we have also switched to a
completed different user concept. Instead of having
a project management window, a
schematic editor window, a board editor window, and so
on, we now have a single window where you can open
any kind of document as tabs. So, you can open
a schematic in one tap, a board in another
tap. You can split the window, and to see
tabs next to each other, which is very useful on
single-monitor setups. And, on multi-monitor setups,
you may just open a second window, move some
tabs there. For example, the board editor on
one-one-tor and a 3D live port, on
another window, which is then on another screen.
Yeah. The library manager has been
riveted from scratch also, and is now
seamlessly integrated into the main window.
In the site board, you will actually see if
there is any outdated library available,
or update. So, when you open the library
manager, you will see which libraries have
updates available. You can just select the
libraries you want to update to install or
remove. And, yeah, after applying the
changes, the libraries will be fetched from the
internet, and they are ready to use.
The PCB ordering feature has been integrated
into the main window too, and it now also automatically
informs you about the state of the ERC and the
DRC before you actually order a PCB.
So, if you try to order a PCB without running the
DRC first, a library piece would actually
provide you the option to run the DRC and
replace the other result. And, after
fixing any issues, the upload button will be
green, and you can proceed with ordering the PCB,
which forwaves the project to deliver PCB FAP,
very content to use the DRC PCB manufacturer.
The 3D boardware also got the small update, which
allows you now to hide every physical layer
individually.
And, to inspect the board in more detail.
Besides the new UI, liver PCB 2.0 now also
supports buses to keep the schematics clean.
And, it allows you to add images to schematics, for
example, to add formulas, or diagrams, or
company logos, or whatever.
Also, we made it much easier to set up
board design rules for a specific PCB
manufacturer. And, design rules can now be
shared, can now be stored in libraries, and
with libraries, they can be shared with other users.
So, we can now add design rules to our official
libraries, and all the users using the libraries
will have those available.
So, in future, we plan to add design rules to our
official libraries. So, for the, for the popular
PCB manufacturers. So, you never need to type in
those parameters manually anymore.
So, and to say, actually, also works for output
jobs. For example, every PCB manufacturer requires
different naming of liver files, and so on.
This can now be shared exactly the same way.
And, then, one challenge, actually, of an
case of there, is to be suitable for both the
hobbyist, with a big solder iron, and
tricky hands. And, on the other side, the
professional PCB engineer, which is creating
high density ports. So, the hobbyist wants to have
large solder pads. And, so, it is easy to
solder by hand, while the engineer wants to have
small pads to save space on the board, and
suitable for reflow soldering. So, in
the PCB 2.0, you can therefore now set your
preference about the soldering technique. And, for
example, you can set hand soldering for
PhD pads, and reflow soldering for SMT pads, and
liver PCB will then choose the footprint. If a package
provides different footprint, it will choose the
correct footprint for what you have chosen here.
And, in addition, you can also switch between IP
sedensity levels A, B, and C. And, in the footprint,
you can see how the pad size is changing with
sedensity level you are choosing. So, whenever you
add a new device to a board, and liver PCB
automatically chooses the footprint, which matches your
preference. Then, for those people who are
generating liver PCB symbols or
footprints, for example, with a patent script, you can
use liver PCB as a live preview of those files,
since liver PCB watches for file modifications,
and automatically reloads the file from this whenever
it changes. Yeah, so it is basically a live preview for
the files. And, this also works for step files. So,
if you are generating the 3D models from script, you have a
live preview and liver PCB.
Last but not least, our official releases for Windows
and Apple Silicon are now signed. And, also, we
restart competitive with my cost 10-14, because
people are always complaining, it is not running on 10-14.
So, it is working now. And, the code signing is
sponsored by OSIN. So, thanks to their support.
Operating systems are no longer claiming that
liver PCB is dangerous of there. So, it is safe to
use now. So, thank you for your attention.
And, you can reach me out after the talk on
metrics, or you can make me happy with a donation to
the liver PCB project. Thanks.
Thank you for your talk. I have tried using
liver PCB in the past, and I have a question. Where are
the cure fan packages? cure fan? Yeah, like
the cure fan. I have tried using liver PCB in the past,
and I have a question. Where are the cure fan packages?
cure fan? Yeah, like the cure fan. I think there is
still a pull request open to generate them. Yeah,
that is one's outdated and a draft, and it has been
some years now. Yeah, true. Yeah,
to be honest, creating the libraries is actually
the biggest problem, I think, of our project. It
requires so, so much time to create high quality
libraries, and we still don't have a huge community able to
create and review those libraries. So, in the end,
it's often myself who needs to review the pull
requests, and this is, it requires too much time.
So, I hope in future, we get a bigger community, and people
able to review the library contributions. But, yeah,
I'm really sorry, but, at least, you can now import the
keycat cure fan packages. That one works really well. Okay, nice.
Can I have to do that? So, in keycat, we have a
putpin generator, please deal with. Thank you.
I will have to look at time for one more.
Why rust, and I'm curious, what language is rust written in?
Reason I say is that you're presenting C++ as being
obsolete in somebody, I don't think so.
Yeah, I think, yeah, I have to say it. Actually, I was
waiting for a long, long time, I was thinking rust.
It's just one hype, like many other programming languages,
I was waiting for a long time. I was still having with BFC
++, and to be honest, I'm still happy with C++,
but I do think rust has some unique advantages,
like the memory safety guarantees, and I do see in a
complex project, like liver PCB, even though you know
how to use C++, and you try everything to make it stable
in a complex project, like liver PCB, you always have
box memory management box, always. It's not possible to avoid
them, and I think rust helps us really, really well
to avoid many of those box.
All right, thank you very much.
Thank you.