WEBVTT

00:00.000 --> 00:10.000
All right, welcome back, good afternoon.

00:10.000 --> 00:13.000
At long last, it's noon here.

00:13.000 --> 00:16.000
Welcome back to the open hardware and CAD CAM dev room at

00:16.000 --> 00:20.000
Fossdom 26. Next up, we have Urban who is the founder of the

00:20.000 --> 00:22.000
Libra PCB project.

00:22.000 --> 00:24.000
Thank you.

00:24.000 --> 00:27.000
So, yeah, my name is Urban. I'm the founder of the

00:27.000 --> 00:33.000
Libra PCB project and today I will give you a quick update about my project

00:33.000 --> 00:38.000
and especially about its brand new release to 0.0.

00:38.000 --> 00:43.000
So, for those who still don't know a Libra PCB yet, it's a free

00:43.000 --> 00:47.000
and open source cross-platform PCB design software which

00:47.000 --> 00:52.000
aims to be easy to use and to empower everyone creating

00:52.000 --> 00:55.000
professional PCBs very quickly.

00:55.000 --> 00:59.000
It also features a powerful library concept and a

00:59.000 --> 01:03.000
human readable file format which is optimized for version

01:03.000 --> 01:05.000
control.

01:05.000 --> 01:10.000
First of all, I would like to mention our sponsors who share our

01:10.000 --> 01:14.000
vision of making hardware development easier.

01:14.000 --> 01:17.000
The past three years, we got two grants from the

01:17.000 --> 01:22.000
NGI-0 program through NLNet which enabled us to

01:22.000 --> 01:27.000
develop both Libra PCB 1.0 and 2.0.

01:27.000 --> 01:32.000
Then we have our sponsor, Hazler, a great PCB manufacturer with

01:32.000 --> 01:37.000
FAPS in Germany and the sponsors parts box, an

01:37.000 --> 01:40.000
electronic parts inventory system, wind source, an

01:40.000 --> 01:44.000
electronic parts distributor. We tell Canadian PCB

01:44.000 --> 01:48.000
manufacturer and three large Chinese PCB manufacturers,

01:48.000 --> 01:53.000
PCBB, PCBGoGo and next PCB.

01:53.000 --> 01:58.000
Also, we get donations and contributions from the community.

01:58.000 --> 02:03.000
At this point, I want to thank all those people for supporting

02:03.000 --> 02:09.000
the Libra PCB project which wouldn't be possible without them.

02:09.000 --> 02:14.000
So, a quick look at last year with all those sponsor

02:14.000 --> 02:21.000
donations, we raised around 47,000 euros which is almost

02:21.000 --> 02:26.000
enough to survive in Switzerland. So, since three years

02:26.000 --> 02:29.000
now since I create my job three years ago, I'm working full

02:29.000 --> 02:33.000
time on Libra PCB and from time to time, I'm doing a

02:33.000 --> 02:39.000
little bit of reliance work beside Libra PCB.

02:39.000 --> 02:45.000
Unfortunately, the NLNet grant runs out today.

02:45.000 --> 02:50.000
Our next challenge is going to be to implement sustainable funding for

02:50.000 --> 02:55.000
the Libra PCB project. In my opinion, for a long term, it should

02:55.000 --> 03:01.000
not rely on public money. This is one of the big tasks I think in

03:01.000 --> 03:06.000
future, how to fund the third development.

03:06.000 --> 03:10.000
Let's have a look at what new NLNet Libra PCB since my last

03:10.000 --> 03:14.000
talk at first time two years ago. We might have

03:14.000 --> 03:19.000
releases, for example, Libra PCB 1.1, where we

03:19.000 --> 03:24.000
implemented life parts information in NLNet Libra PCB.

03:24.000 --> 03:27.000
So, before you add a component to this

03:27.000 --> 03:30.000
schematic, you will see the stock availability and

03:30.000 --> 03:35.000
prices of the parts. So, hopefully you will never add

03:35.000 --> 03:39.000
parts to your project anymore, which have supply chain issues.

03:39.000 --> 03:44.000
You will also see whether part is whether they are active or

03:44.000 --> 03:49.000
not recommended for new design, and you get data sheet

03:49.000 --> 03:55.000
link and also picture. This is all life information fetch

03:55.000 --> 03:58.000
from the internet in the moment you scroll through the list.

03:58.000 --> 04:03.000
So, it's really not outdated information and also this

04:03.000 --> 04:08.000
feature actually requires no configuration, no API keys, no

04:08.000 --> 04:13.000
online account, you just start Libra PCB and it works.

04:13.000 --> 04:17.000
Then we implemented an equal project in

04:17.000 --> 04:22.000
Porter. So, if you see equal before, which is which

04:22.000 --> 04:26.000
stopped the development, you can now migrate your

04:26.000 --> 04:31.000
Libra, your equal project to Libra PCB. Then in

04:31.000 --> 04:36.000
Libra PCB 1.2, we also implemented a keycat

04:36.000 --> 04:40.000
library in Porter. So, if you can find the specific

04:40.000 --> 04:43.000
symbol or footprint in the Libra PCB libraries, you can

04:43.000 --> 04:50.000
just import them from a keypad library. And it also

04:50.000 --> 04:56.000
imports the step models out of the box. Then in the

04:56.000 --> 05:00.000
footprint editor, it is now possible to overlay

05:00.000 --> 05:04.000
the footprint with a drawing from the data sheet, which is

05:04.000 --> 05:08.000
very useful to review a footprint. For example, you will

05:08.000 --> 05:12.000
see immediately if one pad is at the wrong position.

05:12.000 --> 05:17.000
That's really helpful to review.

05:17.000 --> 05:21.000
Then the schematic editor now also provides links to the

05:21.000 --> 05:25.000
data sheets of the parts, and even if a part doesn't have

05:25.000 --> 05:28.000
a data sheet linked, Libra PCB provides you the option

05:28.000 --> 05:32.000
to directly ask for that data sheet in the internet. So,

05:32.000 --> 05:36.000
if it finds the data sheet in the internet, it immediately

05:36.000 --> 05:43.000
opens it with your local PDF view. Then, since

05:43.000 --> 05:47.000
people always ask me for an auto router, I still don't

05:47.000 --> 05:51.000
know why. We implemented the Spectre export and

05:51.000 --> 05:54.000
import. So, at least you can now use an external

05:54.000 --> 06:00.000
router if you want to. Then, another simple but

06:00.000 --> 06:04.000
actually quite useful feature is importing pins from

06:04.000 --> 06:10.000
a data sheet. So, instead of typing all the pin names

06:10.000 --> 06:14.000
by hand, when you create a new symbol, you can just copy

06:14.000 --> 06:17.000
them from a pin out table from the data sheet, paste it

06:17.000 --> 06:21.000
into Libra PCB, and Libra PCB automatically

06:21.000 --> 06:25.000
extracts the pin names from the data sheet and puts the

06:25.000 --> 06:28.000
pins. So, you only need to direct them to their

06:28.000 --> 06:34.000
position. Then, Libra PCB 1.3, we made some

06:34.000 --> 06:39.000
technology updates. We migrated from Q5 to Q6, which

06:39.000 --> 06:44.000
involved quite some effort. And, we started to use the

06:44.000 --> 06:48.000
Rust programming language in addition to C++.

06:48.000 --> 06:52.000
And, the main reason for this step is actually to

06:52.000 --> 06:56.000
increase the speed of development. Thanks to the

06:56.000 --> 07:00.000
huge Rust ecosystem, compared to C++. And,

07:00.000 --> 07:04.000
also to reduce runtime errors and bugs. And, thanks

07:04.000 --> 07:08.000
to Rust compile tantex and memory safety guarantees.

07:08.000 --> 07:14.000
And, in general, also to move Libra PCB to a future

07:14.000 --> 07:18.000
proof technology. And, instead of staying with C++, which

07:18.000 --> 07:23.000
is more and more considered legacy. However, this is

07:23.000 --> 07:27.000
still a long way. As you are currently around at

07:27.000 --> 07:34.000
0.9 percent of Rust code. So, yeah. And, the very first

07:34.000 --> 07:38.000
feature we actually implemented in Rust is a

07:38.000 --> 07:41.000
generator for the interactive HTML

07:41.000 --> 07:46.000
platform. And, this generator is integrated into

07:46.000 --> 07:50.000
Libra PCB as an output shop. So, just with click

07:50.000 --> 07:53.000
you can now export an interactive foam. You might

07:53.000 --> 07:56.000
already know the interactive foam from kick-at.

07:56.000 --> 08:00.000
If I remember correctly, this is a plugin. And, in

08:00.000 --> 08:04.000
Libra PCB, this built in. And, the actual

08:04.000 --> 08:09.000
implementation is a public Rust crate, which any

08:09.000 --> 08:13.000
project can just include in their project. It's not in

08:13.000 --> 08:18.000
the Libra PCB code, but it's actually. So, now, let's

08:18.000 --> 08:22.000
get to the interesting part. Libra PCB 2.0 was just

08:22.000 --> 08:27.000
released four days ago. And, where we made another

08:27.000 --> 08:31.000
technology update, we have rewritten our whole user

08:31.000 --> 08:36.000
interface from scratch with a new UI toolkit named

08:36.000 --> 08:40.000
. And, compared to cute widgets, which we used

08:40.000 --> 08:43.000
before, a link gives us much more freedom in the

08:43.000 --> 08:48.000
UI design. And, it also ensures a consistent

08:48.000 --> 08:51.000
look and feel across all the platforms. It

08:51.000 --> 08:54.000
speeds up development. Thanks to a

08:54.000 --> 08:58.000
declarative UI description language. And, in

08:58.000 --> 09:01.000
general, it also lines with our long-term

09:01.000 --> 09:05.000
strategy of moving from C++ to Rust since

09:05.000 --> 09:10.000
a link itself is implemented in Rust, too.

09:10.000 --> 09:14.000
And, this new UI, we have also switched to a

09:14.000 --> 09:18.000
completed different user concept. Instead of having

09:18.000 --> 09:21.000
a project management window, a

09:21.000 --> 09:24.000
schematic editor window, a board editor window, and so

09:24.000 --> 09:28.000
on, we now have a single window where you can open

09:28.000 --> 09:33.000
any kind of document as tabs. So, you can open

09:33.000 --> 09:36.000
a schematic in one tap, a board in another

09:36.000 --> 09:41.000
tap. You can split the window, and to see

09:41.000 --> 09:44.000
tabs next to each other, which is very useful on

09:44.000 --> 09:49.000
single-monitor setups. And, on multi-monitor setups,

09:49.000 --> 09:53.000
you may just open a second window, move some

09:53.000 --> 09:56.000
tabs there. For example, the board editor on

09:56.000 --> 10:00.000
one-one-tor and a 3D live port, on

10:00.000 --> 10:05.000
another window, which is then on another screen.

10:05.000 --> 10:13.000
Yeah. The library manager has been

10:13.000 --> 10:17.000
riveted from scratch also, and is now

10:17.000 --> 10:21.000
seamlessly integrated into the main window.

10:21.000 --> 10:25.000
In the site board, you will actually see if

10:25.000 --> 10:29.000
there is any outdated library available,

10:29.000 --> 10:34.000
or update. So, when you open the library

10:34.000 --> 10:37.000
manager, you will see which libraries have

10:37.000 --> 10:39.000
updates available. You can just select the

10:39.000 --> 10:42.000
libraries you want to update to install or

10:42.000 --> 10:46.000
remove. And, yeah, after applying the

10:46.000 --> 10:49.000
changes, the libraries will be fetched from the

10:49.000 --> 10:53.000
internet, and they are ready to use.

10:59.000 --> 11:02.000
The PCB ordering feature has been integrated

11:02.000 --> 11:06.000
into the main window too, and it now also automatically

11:06.000 --> 11:10.000
informs you about the state of the ERC and the

11:10.000 --> 11:14.000
DRC before you actually order a PCB.

11:14.000 --> 11:21.000
So, if you try to order a PCB without running the

11:21.000 --> 11:24.000
DRC first, a library piece would actually

11:24.000 --> 11:27.000
provide you the option to run the DRC and

11:27.000 --> 11:30.000
replace the other result. And, after

11:30.000 --> 11:33.000
fixing any issues, the upload button will be

11:33.000 --> 11:37.000
green, and you can proceed with ordering the PCB,

11:37.000 --> 11:41.000
which forwaves the project to deliver PCB FAP,

11:41.000 --> 11:45.000
very content to use the DRC PCB manufacturer.

11:45.000 --> 11:48.000
The 3D boardware also got the small update, which

11:48.000 --> 11:52.000
allows you now to hide every physical layer

11:52.000 --> 11:56.000
individually.

11:56.000 --> 12:07.000
And, to inspect the board in more detail.

12:07.000 --> 12:11.000
Besides the new UI, liver PCB 2.0 now also

12:11.000 --> 12:21.000
supports buses to keep the schematics clean.

12:21.000 --> 12:26.000
And, it allows you to add images to schematics, for

12:26.000 --> 12:30.000
example, to add formulas, or diagrams, or

12:30.000 --> 12:34.000
company logos, or whatever.

12:34.000 --> 12:38.000
Also, we made it much easier to set up

12:38.000 --> 12:41.000
board design rules for a specific PCB

12:41.000 --> 12:45.000
manufacturer. And, design rules can now be

12:45.000 --> 12:48.000
shared, can now be stored in libraries, and

12:48.000 --> 12:52.000
with libraries, they can be shared with other users.

12:52.000 --> 12:55.000
So, we can now add design rules to our official

12:55.000 --> 12:58.000
libraries, and all the users using the libraries

12:58.000 --> 13:01.000
will have those available.

13:01.000 --> 13:05.000
So, in future, we plan to add design rules to our

13:05.000 --> 13:11.000
official libraries. So, for the, for the popular

13:11.000 --> 13:16.000
PCB manufacturers. So, you never need to type in

13:16.000 --> 13:21.000
those parameters manually anymore.

13:21.000 --> 13:24.000
So, and to say, actually, also works for output

13:24.000 --> 13:29.000
jobs. For example, every PCB manufacturer requires

13:29.000 --> 13:32.000
different naming of liver files, and so on.

13:32.000 --> 13:38.000
This can now be shared exactly the same way.

13:38.000 --> 13:41.000
And, then, one challenge, actually, of an

13:41.000 --> 13:44.000
case of there, is to be suitable for both the

13:44.000 --> 13:47.000
hobbyist, with a big solder iron, and

13:47.000 --> 13:50.000
tricky hands. And, on the other side, the

13:50.000 --> 13:54.000
professional PCB engineer, which is creating

13:54.000 --> 13:57.000
high density ports. So, the hobbyist wants to have

13:57.000 --> 14:00.000
large solder pads. And, so, it is easy to

14:00.000 --> 14:03.000
solder by hand, while the engineer wants to have

14:03.000 --> 14:06.000
small pads to save space on the board, and

14:06.000 --> 14:10.000
suitable for reflow soldering. So, in

14:11.000 --> 14:15.000
the PCB 2.0, you can therefore now set your

14:15.000 --> 14:19.000
preference about the soldering technique. And, for

14:19.000 --> 14:23.000
example, you can set hand soldering for

14:23.000 --> 14:29.000
PhD pads, and reflow soldering for SMT pads, and

14:29.000 --> 14:32.000
liver PCB will then choose the footprint. If a package

14:32.000 --> 14:35.000
provides different footprint, it will choose the

14:35.000 --> 14:38.000
correct footprint for what you have chosen here.

14:38.000 --> 14:42.000
And, in addition, you can also switch between IP

14:42.000 --> 14:45.000
sedensity levels A, B, and C. And, in the footprint,

14:45.000 --> 14:49.000
you can see how the pad size is changing with

14:49.000 --> 14:53.000
sedensity level you are choosing. So, whenever you

14:53.000 --> 14:56.000
add a new device to a board, and liver PCB

14:56.000 --> 14:59.000
automatically chooses the footprint, which matches your

14:59.000 --> 15:04.000
preference. Then, for those people who are

15:04.000 --> 15:07.000
generating liver PCB symbols or

15:07.000 --> 15:11.000
footprints, for example, with a patent script, you can

15:11.000 --> 15:15.000
use liver PCB as a live preview of those files,

15:15.000 --> 15:19.000
since liver PCB watches for file modifications,

15:19.000 --> 15:23.000
and automatically reloads the file from this whenever

15:23.000 --> 15:27.000
it changes. Yeah, so it is basically a live preview for

15:27.000 --> 15:31.000
the files. And, this also works for step files. So,

15:31.000 --> 15:35.000
if you are generating the 3D models from script, you have a

15:35.000 --> 15:38.000
live preview and liver PCB.

15:38.000 --> 15:43.000
Last but not least, our official releases for Windows

15:43.000 --> 15:48.000
and Apple Silicon are now signed. And, also, we

15:48.000 --> 15:52.000
restart competitive with my cost 10-14, because

15:52.000 --> 15:56.000
people are always complaining, it is not running on 10-14.

15:56.000 --> 16:03.000
So, it is working now. And, the code signing is

16:03.000 --> 16:07.000
sponsored by OSIN. So, thanks to their support.

16:07.000 --> 16:11.000
Operating systems are no longer claiming that

16:11.000 --> 16:15.000
liver PCB is dangerous of there. So, it is safe to

16:15.000 --> 16:21.000
use now. So, thank you for your attention.

16:21.000 --> 16:25.000
And, you can reach me out after the talk on

16:25.000 --> 16:28.000
metrics, or you can make me happy with a donation to

16:28.000 --> 16:31.000
the liver PCB project. Thanks.

16:31.000 --> 16:37.000
Thank you for your talk. I have tried using

16:37.000 --> 16:41.000
liver PCB in the past, and I have a question. Where are

16:41.000 --> 16:46.000
the cure fan packages? cure fan? Yeah, like

16:46.000 --> 16:51.000
the cure fan. I have tried using liver PCB in the past,

16:51.000 --> 16:56.000
and I have a question. Where are the cure fan packages?

16:56.000 --> 17:02.000
cure fan? Yeah, like the cure fan. I think there is

17:02.000 --> 17:06.000
still a pull request open to generate them. Yeah,

17:06.000 --> 17:08.000
that is one's outdated and a draft, and it has been

17:08.000 --> 17:11.000
some years now. Yeah, true. Yeah,

17:11.000 --> 17:15.000
to be honest, creating the libraries is actually

17:15.000 --> 17:18.000
the biggest problem, I think, of our project. It

17:18.000 --> 17:23.000
requires so, so much time to create high quality

17:24.000 --> 17:29.000
libraries, and we still don't have a huge community able to

17:29.000 --> 17:33.000
create and review those libraries. So, in the end,

17:33.000 --> 17:38.000
it's often myself who needs to review the pull

17:38.000 --> 17:42.000
requests, and this is, it requires too much time.

17:42.000 --> 17:47.000
So, I hope in future, we get a bigger community, and people

17:47.000 --> 17:51.000
able to review the library contributions. But, yeah,

17:51.000 --> 17:55.000
I'm really sorry, but, at least, you can now import the

17:55.000 --> 17:59.000
keycat cure fan packages. That one works really well. Okay, nice.

17:59.000 --> 18:08.000
Can I have to do that? So, in keycat, we have a

18:08.000 --> 18:12.000
putpin generator, please deal with. Thank you.

18:12.000 --> 18:16.000
I will have to look at time for one more.

18:22.000 --> 18:27.000
Why rust, and I'm curious, what language is rust written in?

18:27.000 --> 18:30.000
Reason I say is that you're presenting C++ as being

18:30.000 --> 18:34.000
obsolete in somebody, I don't think so.

18:34.000 --> 18:41.000
Yeah, I think, yeah, I have to say it. Actually, I was

18:41.000 --> 18:44.000
waiting for a long, long time, I was thinking rust.

18:44.000 --> 18:47.000
It's just one hype, like many other programming languages,

18:47.000 --> 18:52.000
I was waiting for a long time. I was still having with BFC

18:52.000 --> 18:56.000
++, and to be honest, I'm still happy with C++,

18:56.000 --> 19:01.000
but I do think rust has some unique advantages,

19:01.000 --> 19:05.000
like the memory safety guarantees, and I do see in a

19:05.000 --> 19:10.000
complex project, like liver PCB, even though you know

19:10.000 --> 19:16.000
how to use C++, and you try everything to make it stable

19:16.000 --> 19:20.000
in a complex project, like liver PCB, you always have

19:20.000 --> 19:24.000
box memory management box, always. It's not possible to avoid

19:24.000 --> 19:28.000
them, and I think rust helps us really, really well

19:28.000 --> 19:31.000
to avoid many of those box.

19:31.000 --> 19:34.000
All right, thank you very much.

19:34.000 --> 19:39.000
Thank you.

