WEBVTT 00:00.000 --> 00:10.000 All right, welcome back, good afternoon. 00:10.000 --> 00:12.000 At long last, it's noon here. 00:12.000 --> 00:16.000 Welcome back to the open hardware and CAD CAM dev room at 00:16.000 --> 00:20.000 Fossilum 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:28.000 So, yeah, my name is Urban. I'm the founder of the Libra 00:28.000 --> 00:34.000 Project and today I will give you a quick update about my project and 00:34.000 --> 00:38.000 especially about its brand new release to 0.0. 00:38.000 --> 00:42.000 So, for those who still don't know a Libra PCB yet, 00:42.000 --> 00:46.000 it's a free and open source cross platform PCB design software, 00:46.000 --> 00:50.000 which aims to be easy to use and to empower everyone 00:50.000 --> 00:54.000 creating professional PCBs very quickly. 00:54.000 --> 01:00.000 It also features a powerful library concept and a human readable 01:00.000 --> 01:06.000 file format, which is optimized for version control. 01:06.000 --> 01:10.000 First of all, I would like to mention our sponsors who share 01:10.000 --> 01:14.000 our vision of making hardware development easier. 01:14.000 --> 01:18.000 The past three years, we got two grants from the 01:18.000 --> 01:22.000 federal program through NLNet, which enabled us to 01:22.000 --> 01:26.000 develop both Libra PCB 1.0 and 2.0. 01:26.000 --> 01:32.000 Then we have our sponsor Hazler, a great PCB manufacturer with 01:32.000 --> 01:38.000 FAPS in Germany, and the sponsors parts box, an 01:38.000 --> 01:40.000 electronic parts inventory system resource, 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:52.000 PCBway, PCBGoGo and next PCB. 01:52.000 --> 01:58.000 We also get donations and contributions from the community. 01:58.000 --> 02:02.000 At this point, I want to thank all those people for supporting 02:02.000 --> 02:08.000 the Libra PCB project, which wouldn't be possible without them. 02:08.000 --> 02:14.000 So, a quick look at last year with all those sponsoring 02:14.000 --> 02:20.000 donations, we raised around 47,000 euros, which is 02:20.000 --> 02:24.000 almost enough to survive in Switzerland. 02:24.000 --> 02:28.000 Since three years now, since I create my job three years ago, 02:28.000 --> 02:32.000 I'm working full-time on Libra PCB. 02:32.000 --> 02:36.000 From time to time, I'm doing a little bit of reliance work 02:36.000 --> 02:40.000 outside Libra PCB. 02:40.000 --> 02:44.000 Unfortunately, the NLNet grant runs out today. 02:44.000 --> 02:48.000 So, our next challenge is going to be to implement 02:48.000 --> 02:52.000 sustainable funding for the Libra PCB project. 02:52.000 --> 02:56.000 In my opinion, for a long term, it should not rely on 02:56.000 --> 03:02.000 public money. This is one of the big tasks I think in future, 03:02.000 --> 03:06.000 how to fund the third development. 03:06.000 --> 03:10.000 Anyway, let's have a look at what NLNet Libra PCB 03:10.000 --> 03:14.000 since my last talk at full-time two years ago. 03:14.000 --> 03:18.000 We made several releases for example, Libra PCB1.1, 03:18.000 --> 03:24.000 where we implemented life parts information in Libra PCB. 03:24.000 --> 03:28.000 So, before you add a component to this committee, 03:28.000 --> 03:32.000 you'll see the stock availability and prices of the parts. 03:32.000 --> 03:36.000 So, hopefully you will never add parts to your project anymore, 03:36.000 --> 03:40.000 which have supply chain issues. 03:40.000 --> 03:44.000 You will also see whether part is whether they are active 03:44.000 --> 03:46.000 or not recommended for new design, 03:46.000 --> 03:52.000 and you get data sheet link and of the NLNet picture. 03:52.000 --> 03:56.000 This is all life information fetched from the internet 03:56.000 --> 03:58.000 in the moment you scroll through the list. 03:58.000 --> 04:02.000 So, it's really not outdated information, 04:02.000 --> 04:06.000 and also this feature actually requires no configuration, 04:06.000 --> 04:08.000 no API keys, no online account, 04:08.000 --> 04:12.000 you'll just start Libra PCB and it works. 04:12.000 --> 04:18.000 Then we implemented an equal project in Porter. 04:18.000 --> 04:24.000 So, if you used the equal before, which is which stopped the development, 04:24.000 --> 04:30.000 you can now migrate your EGLE project to Libra PCB. 04:30.000 --> 04:34.000 Then in Libra PCB 1.2, 04:34.000 --> 04:38.000 we also implemented a keycat library in Porter. 04:38.000 --> 04:42.000 So, if you can find a specific symbol or footprint in the Libra PCB libraries, 04:42.000 --> 04:48.000 you can just import them from a kitlet kit library. 04:48.000 --> 04:56.000 And it also imports the step models out of the box. 04:56.000 --> 05:00.000 Then in the footprint editor, it is now possible to overlay 05:00.000 --> 05:04.000 the footprint with a drawing from the data sheet, 05:04.000 --> 05:06.000 which is very useful to review a footprint. 05:06.000 --> 05:12.000 For example, you will see immediately if one pad is at the wrong position. 05:12.000 --> 05:16.000 That's really helpful to review. 05:16.000 --> 05:22.000 Then the schematic editor now also provides links to the data sheets 05:22.000 --> 05:26.000 of the parts, and even if a part doesn't have a data sheet linked, 05:26.000 --> 05:32.000 Libra PCB provides you the option to directly ask for that data sheet in the internet. 05:32.000 --> 05:42.000 And if it finds a data sheet in the internet, it immediately opens it with your local PDF view. 05:42.000 --> 05:46.000 And then since people always ask me for an author router, 05:46.000 --> 05:48.000 I still don't know why. 05:48.000 --> 05:58.000 We implemented a vector export and import, so at least you can now use an external author router if you want to. 05:58.000 --> 06:06.000 Then another simple but actually quite useful feature is importing pins from a data sheet. 06:07.000 --> 06:12.000 Instead of typing all the pin names by hand when you create a new symbol, 06:12.000 --> 06:16.000 you can just copy them from a pin out table from the data sheet, 06:16.000 --> 06:26.000 paste it into Libra PCB, and Libra PCB automatically extracts the pin names from the data sheet and puts the pins. 06:26.000 --> 06:30.000 So you only need to direct them to their position. 06:30.000 --> 06:36.000 Then in Libra PCB 1.3, we made some technology updates. 06:36.000 --> 06:42.000 We migrated from Q5 to Q6, which involves quite some effort. 06:42.000 --> 06:48.000 And we started to use the Rust programming language in addition to C++. 06:48.000 --> 06:54.000 The main reason for this step is actually to increase the speed of development. 06:54.000 --> 06:59.000 Thanks to the huge Rust ecosystem compared to C++. 06:59.000 --> 07:03.000 And also to reduce runtime errors and bugs. 07:03.000 --> 07:08.000 Thanks to Rust compile time checks and memory safety guarantees. 07:08.000 --> 07:15.000 And in general also to move Libra PCB to a future proof technology. 07:15.000 --> 07:21.000 Instead of staying with C++, which is more and more considered legacy. 07:22.000 --> 07:25.000 However, this is still a long way. 07:25.000 --> 07:30.000 As you are currently around at 0.9 percent of Rust code. 07:30.000 --> 07:33.000 So yeah. 07:33.000 --> 07:42.000 And the very first feature we actually implemented in Rust is a generator for the interactive HTML bombs. 07:42.000 --> 07:48.000 And this generator is integrated into Libra PCB as an output shop. 07:48.000 --> 07:52.000 So just with click you can now export an interactive bomb. 07:52.000 --> 07:56.000 You might already know the interactive bomb from Q4. 07:56.000 --> 07:59.000 If I remember correctly, this is a plugin. 07:59.000 --> 08:03.000 And in Libra PCB it is built in. 08:03.000 --> 08:11.000 And the actual implementation is a public Rust crate, which any Rust project can just include in their project. 08:11.000 --> 08:16.000 It's not just in the Libra PCB code base actually. 08:16.000 --> 08:20.000 So now let's get to the interesting part. 08:20.000 --> 08:24.000 Libra PCB 2.0 was just released four days ago. 08:24.000 --> 08:28.000 And where we made another technology update. 08:28.000 --> 08:36.000 We have rewritten our whole user interface from scratch with a new UI toolkit named Slint. 08:36.000 --> 08:40.000 And compared to cute widgets which we used before. 08:40.000 --> 08:44.000 Slint gives us much more freedom in the UI design. 08:44.000 --> 08:51.000 And it also ensures a consistent look and feel across all the platforms. 08:51.000 --> 08:54.000 It speeds up development. 08:54.000 --> 08:58.000 Thanks to a declarative UI description language. 08:58.000 --> 09:10.000 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. 09:10.000 --> 09:18.000 In this new UI, we have also switched to a completely different user concept. 09:18.000 --> 09:25.000 Instead of having a project management window, a schematic editor window, a board editor window, and so on. 09:25.000 --> 09:32.000 We now have a single window where you can open any kind of document as tabs. 09:32.000 --> 09:37.000 So you can open a schematic in one tab, a board in another tab. 09:37.000 --> 09:46.000 You can split the window and to see tabs next to each other, which is very useful on single monitors setups. 09:46.000 --> 09:54.000 And on multi monitors setups, you may just open a second window, move some tabs there. 09:54.000 --> 10:05.000 For example, the board editor on one monitor and a 3D live port view on another window, which is then on another screen. 10:05.000 --> 10:10.000 Yeah. 10:10.000 --> 10:22.000 The library manager has been riveted from scratch also, and is now seamlessly integrated into the main window. 10:22.000 --> 10:32.000 In the site bar, you will actually see if there is any outdated library available, available for update. 10:33.000 --> 10:38.000 And when you open the library manager, you will see which libraries have updated available. 10:38.000 --> 10:44.000 You can just select the libraries you want to update to install or remove. 10:44.000 --> 10:59.000 And after applying the changes, the libraries will be fetched from the internet, and they are ready to use. 10:59.000 --> 11:04.000 The PCB ordering feature has been integrated into the main window too. 11:04.000 --> 11:14.000 And it now also automatically informs you about the state of the ERC and the DRC before you actually order a PCB. 11:18.000 --> 11:28.000 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. 11:29.000 --> 11:41.000 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. 11:41.000 --> 11:48.000 Very content to use the DRC PCB manufacturer. 11:49.000 --> 12:01.000 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. 12:01.000 --> 12:16.000 Besides the new UI, liver PCB 2.0 now also supports buses to keep the schematics clean. 12:16.000 --> 12:32.000 And it allows you to add images to schematic, for example, to add formulas or diagrams or company logos or whatever. 12:32.000 --> 12:42.000 Also we made it much easier to set up poor design rules for a specific PCB manufacturer. 12:42.000 --> 12:52.000 And design rules can now be shared, can now be stored in libraries, and with libraries they can be shared with other users. 12:52.000 --> 13:01.000 So we can now add design rules to our official libraries, and all the users using the libraries will have those available. 13:01.000 --> 13:21.000 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. 13:21.000 --> 13:25.000 So, and the same actually also works for output jobs. 13:25.000 --> 13:37.000 For example, every PCB manufacturer requires different naming of care profiles and so on, this can now be shared exactly the same way. 13:38.000 --> 13:48.000 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. 13:48.000 --> 13:56.000 And on the other side the professional PCB engineer which is creating high density ports. 13:56.000 --> 14:10.000 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. 14:11.000 --> 14:18.000 In library PCB 2.0 you can therefore now set your preference about the soldering technique. 14:18.000 --> 14:29.000 And for example you can set hand soldering for THT pads and reflow soldering for S&T pads. 14:29.000 --> 14:34.000 And libraries will be built and choose the footprint if a package provides different footprint. 14:34.000 --> 14:39.000 It will choose the correct footprint for what you have chosen here. 14:39.000 --> 14:44.000 And in addition you can also switch between IP sedensity levels A, B and C. 14:44.000 --> 14:51.000 And in the footprint you can see how the pad size is changing with the density level you are choosing. 14:51.000 --> 15:02.000 So whenever you add a new device to a board and libraries will be automatically chooses the footprint which matches your preference. 15:03.000 --> 15:09.000 Then for those people who are generating libraries to be in symbols or footprints. 15:09.000 --> 15:16.000 For example with a patent script you can now use library PCB as a life preview of those files. 15:16.000 --> 15:25.000 And since library PCB watches for file modifications and automatically reloads the file from disk whenever it changes. 15:25.000 --> 15:28.000 Yeah so it is basically a life preview for the files. 15:28.000 --> 15:31.000 And this is also worth for step files. 15:31.000 --> 15:38.000 So if you are generating the 3D models from script you have a life preview and library PCB. 15:38.000 --> 15:47.000 Last but not least our official releases for Windows and Apple Silicon are now signed. 15:48.000 --> 15:57.000 And also we restart completely with MacOS 1014 because people are always complaining it is not running on 1014. 15:57.000 --> 15:59.000 So it is working now. 15:59.000 --> 16:05.000 And the code signing is sponsored by OSign. 16:05.000 --> 16:07.000 So thanks to their support. 16:07.000 --> 16:14.000 The operating systems are no longer claiming that the library PCB is the dangerous software. 16:14.000 --> 16:19.000 So it is safe to use now. 16:19.000 --> 16:25.000 So thank you for your attention and you can reach me out after the talk on metrics. 16:25.000 --> 16:29.000 Or you can make me happy with a donation to the library PCB project. 16:29.000 --> 16:30.000 Thanks. 16:30.000 --> 16:38.000 Thanks. 16:38.000 --> 16:47.000 Questions. 16:47.000 --> 16:49.000 Thank you for your talk. 16:49.000 --> 16:53.000 I have tried using library PCB in the past and I have a question. 16:53.000 --> 16:57.000 Where are the key event packages? 16:57.000 --> 16:58.000 Key event. 16:58.000 --> 16:59.000 Yeah. 16:59.000 --> 17:01.000 Like VK fan. 17:01.000 --> 17:05.000 I think there is still a pull request open to generate them. 17:05.000 --> 17:06.000 Yeah. 17:06.000 --> 17:09.000 That is one of the data that I dropped and it has been some years now. 17:09.000 --> 17:10.000 Yeah. 17:10.000 --> 17:11.000 True. 17:11.000 --> 17:12.000 Yeah. 17:12.000 --> 17:18.000 To be honest, creating the libraries is actually the biggest problem I think of our project. 17:18.000 --> 17:25.000 It requires so, so much time to create high quality libraries. 17:25.000 --> 17:32.000 And we still don't have a huge community able to create and review those libraries. 17:32.000 --> 17:40.000 So in the end, it's often myself who needs to review the pull requests. 17:40.000 --> 17:43.000 And it requires too much time. 17:43.000 --> 17:51.000 So I hope in future we get the bigger community and people able to review the library contributions. 17:51.000 --> 17:52.000 But yeah. 17:52.000 --> 17:53.000 I'm really sorry. 17:53.000 --> 17:57.000 But at least you can now import the key kit to your fan packages. 17:57.000 --> 17:58.000 That one works really well. 17:58.000 --> 17:59.000 Okay. 17:59.000 --> 18:00.000 Nice. 18:00.000 --> 18:07.000 Can I have to do that? 18:07.000 --> 18:10.000 So in kick-up, we have a put pin generator. 18:10.000 --> 18:12.000 Please do it. 18:12.000 --> 18:13.000 Thank you. 18:13.000 --> 18:15.000 I will have to look. 18:15.000 --> 18:22.000 Time for one more. 18:22.000 --> 18:24.000 Why rust? 18:24.000 --> 18:25.000 And I'm curious. 18:25.000 --> 18:27.000 What language is rust written in? 18:27.000 --> 18:31.000 Reason I say is that you're presenting C++ as being obsolete in somebody. 18:31.000 --> 18:35.000 I don't think so. 18:35.000 --> 18:36.000 Yeah. 18:36.000 --> 18:38.000 I think. 18:38.000 --> 18:39.000 Yeah. 18:39.000 --> 18:40.000 I have to say it. 18:40.000 --> 18:43.000 Actually, I was waiting for a long, long time. 18:43.000 --> 18:44.000 I was thinking rust. 18:44.000 --> 18:47.000 It's just one hype, like many other programming languages. 18:47.000 --> 18:50.000 I was waiting for a long time. 18:50.000 --> 18:53.000 I was still having with BFC++. 18:53.000 --> 18:56.000 And to be honest, I'm still happy with C++. 18:56.000 --> 19:04.000 But I do think rust has some unique advantages, like the memory safety guarantees. 19:04.000 --> 19:12.000 And I do see in a complex project like liver PCB, even though you know how to use C++. 19:12.000 --> 19:17.000 And you try everything to make it stable in a complex project. 19:17.000 --> 19:21.000 Like liver PCB, you always have box memory management box. 19:21.000 --> 19:22.000 Always. 19:22.000 --> 19:24.000 It's not possible to avoid them. 19:24.000 --> 19:30.000 And I think rust helps us really, really well to avoid many of those box. 19:30.000 --> 19:31.000 All right. 19:31.000 --> 19:33.000 Thank you very much. 19:33.000 --> 19:34.000 Thank you. 19:42.000 --> 19:44.000 Thank you.