 I think you can hear me better now. Yeah, I'm sorry about that, I forgot. So I'll just repeat briefly what I just said. I'm Corvin, NetBSD developer, and now also HPSD. Uh-huh. So why HPSD? Yeah, because NetBSD is a modern and cool operating system. So it drives lots of research development efforts like Rump and Minix. It runs almost everywhere, but it uses CVS for development. And unfortunately, modern coders, like I would define myself maybe, no longer like to use CVS, because it's a decentralized world. And also, modern users don't want to phone with a Raspberry Pi because it's cool to run NetBSD on a Raspberry Pi. But if you want to work to run NetBSD on your phone, for instance, well, you don't want it to look like this. Maybe it's fine for you, I don't know. And it's a really open phone. You can see whatever is going on. You can see when your battery blows up, it's right there. This is a really cool project though, and I don't mean to say anything wrong, but right now NetBSD runs on this, but you may not want to have this in your pocket every day. However, this proves the point also that NetBSD can run on a phone. So it was one of the reasons why I started NetBSD in the first place. One of the few reasons. All of the lots of reasons. Anyway, NetBSD has tons of cool features, but a lot of them are unfortunately disabled by default, or they are not used much, and they tend to rot. And this is really sad, like him right here. Like NetBSD was the first major OS to have signed binary packages or support for signed binary packages, because actually they were never generated in the first place, officially at least. SLR was here a long time ago, but never enabled by default. So it has a few bugs still, even if it does work a bit. SSP is also used in some places, but not everywhere, so it's not always possible to build a tree if you enable it for like armor, places like that. But generally wise, I wanted more freedom to test, break, share, and review code with friends and between my different machines, and all of that, and CVS makes it a pain. So, HPSD started as sort of a fork of NetBSD using Git. So it started in July 2013, that's a bit more than a year ago, just before the announcement, just in case. I beefed up the web hosting, and I announced it at Frostcon that same month, and my web hosting, in spite of the beefing up, didn't survive a Reddit attack. It went on Reddit, and so after that, I presented the project again a bit less rushed at first day of 2014. There is a video for this also, and I presented also a more in-depth opinion about what we could improve in NetBSD regarding processes and so on in Azure BSDCon this year. So it's called Carve in NetBSD, but it was actually from Guillaume LaMeilleux, another NetBSD developer last May, and myself, and also right now I'm rushing this talk, unfortunately, but I hope it's gonna be entertaining anyway, or informational at least. Okay, so what do I have today? Actually I have more stuff I should have taken a bit more hardware on my table, but I have some time for that. But before getting into hardware, I have some mirrors. So Yorg Zonenberger, a NetBSD developer, has worked for a while on converting the CVS tree to Git through Fossil actually, and he's been publishing this on GitHub, and so I felt like, okay, we're gonna try to work with this instead of the CVS tree. So basically we have a mirror of these two original trees, plus trees where we allow ourselves to modify stuff, one for source, one for package source, and any official developer of the HPSD project can just push code, except for master and the release branches, which are managed by the release manager, meaning me right now, but you can join. So all it takes to be an official developer is to agree on our current project organization document, just like one page, and to give me your public SSH key, I just fit it into our system, and then you can do whatever you want over SSH, except pushing to master and release branches, because there is still a process. Anyway, so we do have also a couple more repositories than just source and package source, one for the infrastructure work, like where I push the Chrome jobs and some binaries which are used for build builds, the artwork, because we have a very nice logo on the left. We have a mascot, but we don't have a logo for the mascot yet, it's Hedgehog. I have some pictures of Hedgehogs, but I don't think you're here for watching pictures of Hedgehogs. And anyway, I managed the tree with Gitolite, which is an awesome system for managing privileged access on Git repository trees. It does a lot of stuff for me, which I really appreciate because I really want with this project also to automate a lot of the work, since it's right now still a small community, but I hope to grow it a bit, maybe. So anyway, where we are now, we have two releases. This table release is based on NetBSD6, so it's HPSD6, this way it's less confusing, I guess, even if we skipped like five releases also, but I don't think it matters. HPSD7 is already available, even if it's just actually a fork of the NetBSD7 branch as of a few weeks ago, and I just build sets and they are there. But right now it's not automatically being updated, even though it's a requirement that we have. We provide signed binary packages, which we maintain for security, actually, so they are based on the 2013 Q1 branch from Package Source, and we maintain it in a long-term support fashion because actually it's the last branch of NetBSD of Package Source with modular Xorg, which was not broken on base, so I had to stick to this version of Xorg and drivers to keep it running on my laptop with the possibility to use the Intel driver. So that's another motivation factor for starting the project and maintaining this for security in the longer term, but it was also a big experiment because I was basically, as far as I know, the first one to do this publicly, and I wanted to check if actually I could do that. The answer is yes and no. I'm behind security updates, but on another hand, with Git, it was very easy to just pull changes from the security updates on the current branch and to get them back, so this is quite okay. It's not such a big deal. And more than that, another thing that we achieved is to build the packages in an unprivileged mode. So NetBSD Package Source, if you want to publish binary packages, usually you will build them as root, and I don't like that, so instead I managed to use fake root and to trick Package Source into building packages which are exactly like they would be if they would be built privileged, except they are not. So the only issue is when I install, then the packages inside the bulk builder, where I have to use fake root sometimes when it creates users and groups and I have to pre-feed the users and groups, but actually it's possible to automate all of that also because you can put hooks on packages when they get installed. You create the users and groups ahead of time and it's not also such a big deal. So this works and we can do it. Yes. So during build time, I had absolutely no issue with no package at all because Package Source is usually meant to also work unprivileged. So I guess the few issues that there might have been have been around that already. Like you can bootstrap in unprivileged mode, but then it will generate different kind of packages like which are meant only for you and they are slightly different. And the issue that I have is when the install scripts create users and groups or do otherwise privileged operations where they fail. And so in this case, either I run them using fake root or I create the users and groups ahead of time and usually it's okay. So this works. So the current community, if you want to check out what we are up to, we are mostly hanging out on IRC right now. Actually almost everything is on IRC right now, which is good and bad because then it doesn't get archived even if we have really fruitful discussions. So we have the HPSD channel on three nodes. We have like five, six developers who are like talking a lot and coding a bit or coding a lot sometimes like Jan over there. That's not a real picture of Jan. That's all I could find. Sorry, mate. And we also have two mailing lists which are therefore not very active right now, but we have one for users and one for developers. Usually I cross post anyway because I have only big announcements there because we don't have much traffic right now, but maybe with more people, hopefully, they're gonna be more useful. Anyway, now to get a bit more into details of more motivations, why I spoke about the phone thingy and another reason for the project. Before doing all of that and joining NetBSD, I was part of the OpenMoco adventure which was a smartphone looking like this. So a bit ugly I have to admit. All plastic, but other than that, it was great. Some people even say it was a new iPhone, the open source iPhone. Yeah, I didn't have such high hopes but I was trying really hard to make it work because it should have been just the first step for something better. And some of the objectives initially defined were achieved. Some people managed to get parts of the phone, put something else inside and make it into a different phone, more powerful. We re-reason some of the components. And we now have three, four competing smartphone stacks in open source, including mine. Because at the time I was not satisfied with OpenHand which was abandoned or the Python stuff from OpenMoco which was also abandoned. Then there was FSO, we just started from scratch and I didn't see it going anywhere so I did my own stuff again. So it's a bit sad on one hand that there were so many different initiatives in parallel and not just one with a lot of like active developers on it. But anyway, I didn't stop working on this. But now I prefer NetBSD. So I really want to have NetBSD running on the phone and to use it instead of whatever Android crap I could buy nowadays. Sorry if you have one, I mean it's just my opinion. But even if it has a part of NetBSD inside the system. So anyway, I wrote a desktop environment and as part of that I have wrote a telephony framework. And it is my intention as the benevolent dictator to impose the default desktop as, I mean to impose my desktop as the default one. But then we do have a reference software stack on which everybody must focus or at least it gets installed by default so that things are tested and hopefully being debugged and working properly. So the project is called D4RS, something that I've been working on about 10 years right now. By now, if not 13 actually. I started in 2001 in a different way and it was based on Linux, I have to admit. So D4RS is actually Debian for all. It's not connected to Fedora or whatever, I had the domain name before. Nowadays of course it's a bit unfortunate that Fedora happened, well for me at least. But anyway, the project is decomposed, composed of three major directions for development. A distributed framework, a self-resting environment and a graphical interface. So my real goal is the distributed stuff. The self-rested stuff is more for fun and learning. And the graphical interface just happened because I didn't like GNOME or KDE or whatever else there was at the time. It was all slow and sluggish on my Spark 64 machine and I found out that by doing it myself I could achieve just as much and it would be actually faster. And today it fits on embedded platforms therefore. So I can speak more about the distributed stuff a bit later, technically it's a lot like what Jordan mentioned inside the keynote to have distributed single point of access inside the system and one way to do everything and to have events all coming from the same place and this is all there, even if it's just a really rough prototype. Really hackish but it used to work at some point. And I'm currently rewriting everything a bit more seriously but it's a bit tough to tackle everything at the same time. So anyway, the desktop. It has a file and desktop manager. It has a panel, a web browser, a client, a telephony application that I mentioned, media player, screen saver, a camera application and so on and so forth, even documentation. All written with GTK2, no other dependencies whenever I could achieve it and the unique way you can just take like the media player alone on its own and it's going to work. Unlike some of the GNOME stuff and whatever which need whichever bus or whatever else. What I don't have right now still is a proper window manager and session manager also would be nice. If you want to have a quick look at it, actually I'm running it right now. So if I just leave the PDF viewer which I could have used mine actually, what it was written by a friend, one of the few contributions that I got. So it should be like this. So this is from the D4R desktop. It even works full screen as far as I know. It's not great. It doesn't zoom in automatically yet. But it's working progress. So let's do PDF viewer. Also have a file manager like in here. Can make things bigger a bit. So I have some nail support and a plugin system here so you can have a directory tree go through your system like you would expect. Also have a camera application because I'm targeting embedded. So also have something to take pictures. Hopefully it's going to work. Why it doesn't need to work? Come on. Oh, it's here. Okay, I couldn't see it on my screen. So it's busy. Why is it busy? Something is using my camera device for some reason. Fuck you when you say. Anyway, I could show a bit more of this later. For now, back to the presentation unless you want to see more. Yes. So I'm working on a graphical installer based on the same applications. Same like framework that I did presentation tool. Pikachu manager would be nice also of course. I have a beginning of a development environment also based on this with a simulator for embedded devices where you have a small x-window with the same depth, DPI, the depth with DPI, same resolution as the actual phone or device you're emulating and you can check also if the font size is fine, the picture resizing and so on. A beginning of a graphical disassembler and Xalissim editor and so on. Of course, I would like to work more on the distributed stuff. That's something else. Right now, as things are, I'm already fairly well integrated with NetBSD as a thing. I can even show some of that. Like if I disconnect the AC, you should say. Maybe, yeah, you can see only part of that but on the top right it says ACPI, ACAD0, adapter disconnected, I can put it back. It will be happy. Full performance, awesome. Of course, for an end user right now, ACPI, ACAD0 is not very talkative but this can be tuned, of course. I have also, what can I show? Like the battery reports. If I just press the battery button on my laptop, it's going to show this, which is quite neat. So this is like all fairly easy to implement. Like you just basically do panel message with like you can choose a separate icon, I guess. Like warning and I can even have this hello people and you should say yes. So you can easily script events from the system, have them integrated here, have your own widgets up there. I mean, it works fairly easily. I have to document a bit more, as always. But I've been giving a couple of talks about this. The default was desktop at package.con and a bit more in detail at FOSDEM this year. There are videos online. So if you want to have more details and we don't have enough time today, we can have a look at this or come to see me at any time. The website is diffra.org. So you're free to have a look, even if I admit that the website is not in the best shape right now. So now the hardware. Yes, we can play a bit more with toys. So I brought some stuff. Some of which are already demonstrated. I had a couple of different talks. TouchNetBSD at EuroBSD.con two years ago and there are more recent versions of this talk. It's about the tablet device which I brought here, which runs NetBSD with my desktop environment in a finger-friendly mode. I can show a bit what it looks like. What I mean by that. And I really want to run NetBSD or HBSD on my phone. So I also tried to work on the Nokia 900 and I gave a talk about it at BSDcon a year ago. So this is the tablet that I'm working on sometimes. So it's called the WITAB. It doesn't have a BIOS, so it starts directly into the NetBSD bootloader, which is really cool. We can even hide that with a splash screen and it would look like a commercial device, like just go straight into some nice screen and then after one minute, it boots the user interface. And it has like a slot for a SIM card, Wi-Fi, and everything works. So if you are interested, you can also show, come here and touch the device, it will actually react and hopefully in the same place as where you press the screen. And if not, I'm responsible. I wrote the fucking driver. So let's have a look. So unfortunately my camera doesn't work and it wouldn't be very practical to show it like this. I don't think our live stream customers, no clients, is that how we say it? You can see much right now. So I'm gonna try to put some stuff on screen instead. Stuff on screen. So I mentioned this development environment. I have something called a simulator, very original name. And basically it's like this. It's like X-Nest or what's the other one that I'm using, I forgot. Zephyr, Zephyr. And so you can say, okay, I want to run bin, no, I put everything in embedded bin slash panel and it will run the same panel that I'm running right now on my desktop but in embedded mode with my current desktop configuration. So unfortunately it's not very reliable right now because it uses the same font size and everything. It doesn't have much time to tweak, but I can do more. I can run a window manager, like I can try much box. Hopefully it's not going to crash everything. Okay, it's not that. It should be, okay, otherwise I can try Metacity. Yes, okay, so now I have even virtual desktops and everything and I can run the file manager again in embedded mode and here it is. So the menu bar is gone. So the missing actions which were only found in the menu bar and now go into the toolbar. You still have access over like different views here. You still have access to the plugins. I have some fancy ones like forget where I can initiate. Oh, we can actually play with that. So I can go to slash temp, make a folder. Okay, not in this view. So new folder, this one, we go here. I create a git repository, it's fine. Now I can create a text file okay, it's fine. I can, okay, I run it, I don't support adding files but I can do it manually. Git, blah, blah, blah, save. And now if I come back here, I can, I should be able to say, okay, I want the log and there you go, you have it. And it works the same way. It's just running the regular commands now in a stupid window. Was the same way for CVS and for SVN. And it's fairly simple to extend. I also have like some properties and you can also have them here, blah, blah. In embedded mode, there is like third-buttoning relations through GTK. It just triggers the pop-ups. So basically that's what it looks like. And of course I can tweak the configuration to make the window manager bar go away like with matchbox. I can make the icons a bit bigger and then with the finger it's easy to access everything and use the system even if it's on a small screen. So what can I need? Hopefully I want my slides again. And then the Nokia 900. So unfortunately I'm afraid it will not be charged but I can show you anyway. I have an SDS decan all running, booting on my 900 phone if I have it here somewhere. And there is a video also online as part of my talk at SDS decan, I believe. So you can see it actually booting here. I doubt that it's charged, no, but I can connect it. So I'm not the only one to actually be working on a phone hardware right now inside the NetBSD project. I believe Reynu is working on a Samsung stock right now. I saw some commits. I don't have any Samsung phone so I couldn't check anything yet but looks like I'm not the only one to have interest in this, which is really cool. And yeah, I mentioned that the demo on this phone right now is a long one because it still takes a couple of minutes to boot. But that's with the sources from two years ago and since then there was a lot of progress and I couldn't test with a more recent candle on this hardware yet. No time for that, sorry. But if you want to have a look at NetBSD booting on this, it should work after it charged for a couple of minutes. And I can show you. I even got to start X sometimes. So we could actually use it as a tablet first and then hopefully someday give phone calls, I hope. So how to make this whole development tasks more convenient, how to make everything easier. We as part of NetBSD need to cross build packages. We are not doing this right now but there is some good stuff going on with NetBSD, with package source where it should be possible. I believe there is not a C wrapper project. There is a talk about it tomorrow if I remember from Yorg and Martin Husserman and they are making this much more convenient. I didn't follow much myself but apparently they got a lot of progress. Apparently they've been able to build a lot of different packages to cross build lots of different packages. I would really like to have also more graphical tools for debugging and development. Like I would need an SPI bus simulator because when you work on such stuff you have dozens of pages of A4 sheets with registers to push and pull and some text to explain how the SPI bus works but to put everything into a picture and connect this to the driver, the code writing and how it's going to work, it's a bit complicated. So to have graphical simulators for drivers would be awesome. And I don't think it would be so much work. I have a couple ideas how to do this. So this morning Jordan also mentioned remote debugging so it's a very good idea. We should have tools for this. More tools, better tools, it's all about the tools. Tools, tools, tools. And one such tool that I've been working on as part of HBSD is called H and it's meant to create ready to flash system images. So what do I mean by that? Actually it's just a shell script which takes a bunch of sets, packages. It just generates, for instance, a big file, mounts it as a raw disk image like with VM config. It looks like a disk to the system so you can run FDISC on it, you can partition it, prepare everything, install everything like it would be in a shrewt and bam, you have a bootable system after that. You can even install the bootloader on this virtual device and it works. Supposedly, I guess my demo will not work just for the bootloader thing, I can fix it. But anyway, I can show you, it works completely offline, you don't need to start a VM for that, you don't need to run any kind of RECP over SSH or whatever which I do not like and it works therefore across architecture and systems. I can even generate almost working Debian shrewt with H right now. I have some support for that. So this is how it looks like right now. So technically, you can use minus H. It says hostname but really it looks in a directory for a file called after this hostname for a default configuration and modifications if you need of the RECPs to create everything, config files and so on. A target file name if you want to create not just a shrewt but an actual file with a system image and you can of course use minus Q, minus V for a quiet or verbose mode. Some variables are really easy while dealing with all of this. They're really not easy or useful while dealing with all of this. And let me show you how it all works. Okay, so I have a terminal here normally. Okay, it was in the right folder or no, here's the right folder. So this is H here. That's the current usage screen. And technically, I can simply run it right now with sudo because it needs to use vnconfig and so on and mounts this fake file system. And I can tell it to use my recipe file for my base HBSD system. Like the most basic thing I can generate that should work. I just output it to a file called base EMG and let's see what it does. So if I do that and enter my password. So it will directly partition the fake drive after generating like a sparse file actually when it can with this image. So that's why it's so fast. It installs a kernel right now in my recipe file is just generic. It's extracting three sets right now. Base, ETC and modules. So it's going to take like another eight seconds here. Six, four, a bit more. Yeah, ETC should be really fast and modules fairly fast. I can zoom in maybe a bit more or put it full screen like this. So that's for base. Please go ahead and complete. Yes, okay, ETC now. Simple. I'm using progress from HBSD for the progress bar. And then it installs the bootloader. And that's it. Okay, try to install new PG but I don't have network access right now or this mirror is not on my machine anymore. Locally. So now supposedly it installed everything and I can try to run QMU on it. I suspect it will fail because of the bootloader thing that I just noticed before this talk but hopefully I'm going to be able to fix it. Let's try to launch it anyway first real quick. Ah, it works. Okay, so I found a fix. So I prefer when it's this way. So this is QMU running right now. Running on the file which I just generated. So I just generated a working virtual machine image in what, like 15 seconds. And it's booting right now a bit slow because it's QMU and you don't have KVM or something like that. But after a few more seconds, it should boot a completely working system. And you can pre-configure it. You can put default users. You can enable services in pre-installed packages. And it's just shell scripting with some helpers which I wrote so it should be fairly easy to reuse extend and so on. And it should also work for embedded devices. I didn't play with it so much yet for like targeting armor or whatever but it should just work. I'm not running any binary from the Sherwood even for installing packages. So hopefully it's going to be ready to boot now. Yes, so it switches to visa mode because I configured it this way and boot config in my recipe. And this is NetBSD61 from HPSD right now. And as you can see, it should start in it in a second. Yes. And it should give me a prompt. Okay. My computer is a bit slow, I'm sorry. It's like, oh, okay. It's doesn't boot runtime user right now. That's not supposed to happen. Fail, so there is a fail but I swear that it actually works next time with more preparation. So back to the slides. Now moving on to the goals of the project what we want to achieve after this first year of activity. Well, more and more security. It's one of my main areas personally. I do this as a living security consultant. I want to have also less software in base for instance, maybe replace in it. Like Jordan mentioned also during the keynote it's an idea that I have in mind for quite a while now. And we have lots and lots of ideas. It's always easier to have ideas than actually doing them. But yeah, it's work in progress. There's been some progress. So where to find us? Not surprisingly on IRC, we have a website. HPSD.org. We have too many lists as I mentioned earlier. This is to reach me directly. And hopefully you're not sleeping right now. So I'd be very happy to see you join and have a look or like say it's cool because it's always nice when people say it's cool. And thank you for your attention today. Hope to talk to you later. Don't hesitate if you have any questions. Anything more I could show? How much time do I have? Okay, did I speak too fast? Okay, cool. So if you can see it right here it's a screen server that I wrote using the default GNOME background which slightly slides to the bottom right. And there is an HPSD logo on top of that transparency with fake transparency. So if I touch the screen right now, it gives me a prompt where I can slide like this thingy here to unlock and it gives me my desktop. So like it would be on a regular phone or whatever. I can also set a password instead or anything. It's just a plug-in. I like plug-ins. So here you have the main menu like I configured here but of course everything can be modified. I can go to the settings of the panel and I can say, okay, which applets go on which panel. I have a bunch of different applets. This one tracks the Bluetooth tellers. There is the C-Stray here. A window to, I mean a button right now to conveniently close applications because usually they don't have like the window bar from because Matchbox doesn't have one. I can also like pop up a virtual keyboard normally. Come on, yes. So I have a virtual keyboard here with different layouts. I can switch. It's not always very convenient but it works. I can run the file manager which I showed before. I can run normally the camera application which looks like this. I should even be able to run it full screen. I'm not in this version but since then I have implemented it. Maybe if I press this. Yes, so right now it's okay. Scaling really badly but I have another mode. You can see yourself, that's awesome. I can even take a picture. It doesn't make noise right now when I take pictures but it should be easy to achieve. So here I have my souvenir, maybe, yes. I have a gallery application like on my phone and it starts automatically the file manager in the right folder like this here I am like on a regular phone or camera and here you can see yourself and I can go into the preview plugin. Where is it here? And if I press edit it should start GIMP if I configured it or something like that. Maybe I didn't or I can view it like in an image viewer like this. So here you are. So I'm really trying to like gather the whole user experience from regular devices into this environment and it's not so bad, I believe. And of course if you need there is always a terminal. And this one is actually external embedded into a GDK application and you can create new tabs with external inside. You can also run a native external of course and so on and so forth. I mean it's all open. Don't know what else I can show. That's interesting. Yeah, basically that's it for the tablet. I can show the phone here because it's now booting in a loop. So it's actually booting NetBSD from time to time. Let's see if it has enough battery to do a cold boot. I have to do this a lot because every time I was checking like testing a new kernel I had to remove the SD card and put another one with the new file. So I had to do this a lot. It's not nice for the hardware. Part of this is broken now from using it too much. But if I start the phone now, I'm still unhappy. It needs to charge more. Yeah. And I wrote the driver for the keypad which was a bit of a mess. I mean difficult to achieve. I didn't have much experience with arm development at that point. Like gory details are in my BSD can talk and the keyboard works. It just takes one second right now. Each time you press a key to actually appear on screen but this should be possible to fix to improve. And when booting Xorg right now, the layout is wrong. So it's still not really usable even with the keyboard right now. So here it's starting now. There is a small Linux penguin but it's actually from Uboot. It's not Linux. And the default, I changed the bootloader. That's why it does that. And with this bootloader, I can start an NBSD Elf kernel like it's built automatically and like it's built from the regular sources. And you can see here the console with green and white and it's actually NBSD booting. And if you're very patient, you can actually get to see it multi-user. And sometimes it starts X. I also wrote some simple drivers for like the camera cover at the back. So I can detect these events. I can detect the button pushes here and a couple of other things. The camera button, yeah, so this sort of works. I've been trying to get the touchscreen and the wireless driver to work. They are both on the SPI bus. And when you write at the same time the bus driver and the actual device driver, it's difficult to know where your bug is which is why I would love to have a simulator or to have another device with a known working SPI bus driver and then I could like plug something else. But yeah, so did it crash or yeah, I guess it did. There is a watchdog also in the bootloader or like in the hardware which is not implemented by NBSD yet. So if you don't disable this somehow when you boot the device automatically self-reboot right now. But there are ways to work around that. Apparently this time I didn't. So yeah, that's for the 900. Hopefully more hardware is going to be working soon. But that's what I had. And yeah, I guess I used most of the 10 minutes by now. Okay, well, I would like a drink. Thank you.