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.