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
Fossilum 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
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
federal 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 resource, an
electronic parts distributor. We tell Canadian PCB
manufacturer and three large Chinese PCB manufacturers,
PCBway, PCBGoGo and next PCB.
We also 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 sponsoring
donations, we raised around 47,000 euros, which is
almost enough to survive in Switzerland.
Since three years now, since I create my job three years ago,
I'm working full-time on Libra PCB.
From time to time, I'm doing a little bit of reliance work
outside Libra PCB.
Unfortunately, the NLNet grant runs out today.
So, 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.
Anyway, let's have a look at what NLNet Libra PCB
since my last talk at full-time two years ago.
We made several releases for example, Libra PCB1.1,
where we implemented life parts information in Libra PCB.
So, before you add a component to this committee,
you'll 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 of the NLNet picture.
This is all life information fetched 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'll just start Libra PCB and it works.
Then we implemented an equal project in Porter.
So, if you used the equal before, which is which stopped the development,
you can now migrate your EGLE project to Libra PCB.
Then in Libra PCB 1.2,
we also implemented a keycat library in Porter.
So, if you can find a specific symbol or footprint in the Libra PCB libraries,
you can just import them from a kitlet kit 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.
And if it finds a data sheet in the internet, it immediately opens it with your local PDF view.
And then since people always ask me for an author router,
I still don't know why.
We implemented a vector export and import, so at least you can now use an external author router if you want to.
Then another simple but actually quite useful feature is importing pins from a data sheet.
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 in Libra PCB 1.3, we made some technology updates.
We migrated from Q5 to Q6, which involves quite some effort.
And we started to use the Rust programming language in addition to C++.
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.
Thanks to Rust compile time checks and memory safety guarantees.
And in general also to move Libra PCB to a future proof technology.
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 bombs.
And this generator is integrated into Libra PCB as an output shop.
So just with click you can now export an interactive bomb.
You might already know the interactive bomb from Q4.
If I remember correctly, this is a plugin.
And in Libra PCB it is built in.
And the actual implementation is a public Rust crate, which any Rust project can just include in their project.
It's not just in the Libra PCB code base 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 Slint.
And compared to cute widgets which we used before.
Slint 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 Slint itself is implemented in Rust too.
In this new UI, we have also switched to a completely 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 tab, a board in another tab.
You can split the window and to see tabs next to each other, which is very useful on single monitors setups.
And on multi monitors setups, you may just open a second window, move some tabs there.
For example, the board editor on one monitor and a 3D live port view 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 bar, you will actually see if there is any outdated library available, available for update.
And when you open the library manager, you will see which libraries have updated available.
You can just select the libraries you want to update to install or remove.
And 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 PCB directly provides you the option to run the DRC and displays you the result.
And after fixing any issues, the upload button will be green, and you can proceed with ordering the PCB, which for us a project to deliver PCB FAP.
Very content to use the DRC PCB manufacturer.
The 3D board here 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 schematic, for example, to add formulas or diagrams or company logos or whatever.
Also we made it much easier to set up poor 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, yeah for the popular PCB manufacturers, so you never need to type in those parameters manually anymore.
So, and the same actually also works for output jobs.
For example, every PCB manufacturer requires different naming of care profiles and so on, this can now be shared exactly the same way.
And then one challenge actually of an idea is of there is to be sweetable 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.
And 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 sweetable for reflow soldering.
In library PCB 2.0 you can therefore now set your preference about the soldering technique.
And for example you can set hand soldering for THT pads and reflow soldering for S&T pads.
And libraries will be built and 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 the density level you are choosing.
So whenever you add a new device to a board and libraries will be automatically chooses the footprint which matches your preference.
Then for those people who are generating libraries to be in symbols or footprints.
For example with a patent script you can now use library PCB as a life preview of those files.
And since library PCB watches for file modifications and automatically reloads the file from disk whenever it changes.
Yeah so it is basically a life preview for the files.
And this is also worth for step files.
So if you are generating the 3D models from script you have a life preview and library PCB.
Last but not least our official releases for Windows and Apple Silicon are now signed.
And also we restart completely with MacOS 1014 because people are always complaining it is not running on 1014.
So it is working now.
And the code signing is sponsored by OSign.
So thanks to their support.
The operating systems are no longer claiming that the library PCB is the dangerous software.
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 library PCB project.
Thanks.
Questions.
Thank you for your talk.
I have tried using library PCB in the past and I have a question.
Where are the key event packages?
Key event.
Yeah.
Like VK fan.
I think there is still a pull request open to generate them.
Yeah.
That is one of the data that I dropped 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 it requires too much time.
So I hope in future we get the bigger community and people able to review the library contributions.
But yeah.
I'm really sorry.
But at least you can now import the key kit to your fan packages.
That one works really well.
Okay.
Nice.
Can I have to do that?
So in kick-up, we have a put pin generator.
Please do it.
Thank you.
I will have to look.
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.