1 99:59:59,999 --> 99:59:59,999 Debian GNU/Hurd status update 2 99:59:59,999 --> 99:59:59,999 [Slide 1] 3 99:59:59,999 --> 99:59:59,999 Let's talk about GNU/Hurd 4 99:59:59,999 --> 99:59:59,999 [Slide 2] 5 99:59:59,999 --> 99:59:59,999 For us it's a bit all about freedom 0, that is, the ability to use software, 6 99:59:59,999 --> 99:59:59,999 basically, for any purpose. 7 99:59:59,999 --> 99:59:59,999 And for us, the important thing is that you shouldn't have to ask the system administrator for things. 8 99:59:59,999 --> 99:59:59,999 You should be allowed to do whatever you want. 9 99:59:59,999 --> 99:59:59,999 So for instance, why is fdisk, mke2fs, etc. hidden in /sbin? 10 99:59:59,999 --> 99:59:59,999 I want to be able to build disk images, play with them, mount them, etc. 11 99:59:59,999 --> 99:59:59,999 So just be able to work with the kind of disk and network access I have, 12 99:59:59,999 --> 99:59:59,999 and do whatever I want with this. 13 99:59:59,999 --> 99:59:59,999 It's about freedom to innovate as well, if I want to use an experimental filesystem, 14 99:59:59,999 --> 99:59:59,999 just play with, without being afraid of crashing the machine. 15 99:59:59,999 --> 99:59:59,999 You should be able to just run the file system 16 99:59:59,999 --> 99:59:59,999 and let the system administrator be happy with this because it's safe to do this. 17 99:59:59,999 --> 99:59:59,999 And also, it's a way to provide freedom from misbehaving programs 18 99:59:59,999 --> 99:59:59,999 like a driver which doesn't work so well, some things like this. 19 99:59:59,999 --> 99:59:59,999 [Slide 15] 20 99:59:59,999 --> 99:59:59,999 Just to give an idea, in GNU/Hurd, 21 99:59:59,999 --> 99:59:59,999 you have the kernel which does basically almost nothing, 22 99:59:59,999 --> 99:59:59,999 just managing tasks, the memory and inter-process communications, 23 99:59:59,999 --> 99:59:59,999 and then you have a lot of daemons doing the actual stuff, 24 99:59:59,999 --> 99:59:59,999 so the pfinet is the TCP/IP stack, and ext2fs does the filesystem thing. 25 99:59:59,999 --> 99:59:59,999 And then, you have the user, just running programs. 26 99:59:59,999 --> 99:59:59,999 And these tools just, actually just talk to the daemons through the microkernel, 27 99:59:59,999 --> 99:59:59,999 the microkernel doesn't do much, it just passes requests along. 28 99:59:59,999 --> 99:59:59,999 [Slide 17] 29 99:59:59,999 --> 99:59:59,999 For instance, if a server crashes, then that's fine. 30 99:59:59,999 --> 99:59:59,999 For instance a driver crashes, or just hangs, 31 99:59:59,999 --> 99:59:59,999 you just can kill and then pfinet will re-open a new instance of the driver 32 99:59:59,999 --> 99:59:59,999 and it will just work, thanks to TCP just continuing to ping the other computer. 33 99:59:59,999 --> 99:59:59,999 So it's just an error, it's not something of the death. 34 99:59:59,999 --> 99:59:59,999 At some point of my desktop, I could switch off the light, 35 99:59:59,999 --> 99:59:59,999 and then that would crash my laptop. 36 99:59:59,999 --> 99:59:59,999 Because switching off the light would reboot my hard disk, USB hard disk, 37 99:59:59,999 --> 99:59:59,999 and then the kernel of the laptop wouldn't like this. 38 99:59:59,999 --> 99:59:59,999 This is not something which is supposed to happen. 39 99:59:59,999 --> 99:59:59,999 So, with a server approach, this is completely fixed. 40 99:59:59,999 --> 99:59:59,999 It's also easier to debug, it's really nice to be able to gdb a TCP/IP stack, 41 99:59:59,999 --> 99:59:59,999 when there is something happening in there, just run gdb, you can gprof it, etc. 42 99:59:59,999 --> 99:59:59,999 You can also dare more crazy things. 43 99:59:59,999 --> 99:59:59,999 For instance, the Linux console doesn't support much, because we don't want to put 44 99:59:59,999 --> 99:59:59,999 too much complex code in there. 45 99:59:59,999 --> 99:59:59,999 On GNU/Hurd the console actually supports things like Chinese, 46 99:59:59,999 --> 99:59:59,999 double-width support, etc. 47 99:59:59,999 --> 99:59:59,999 which is not supported by the Linux console, 48 99:59:59,999 --> 99:59:59,999 and that's right because you don't want to put too crazy stuff. 49 99:59:59,999 --> 99:59:59,999 Here since it's just a userland program, then you're fine, 50 99:59:59,999 --> 99:59:59,999 and so we do have Chinese support in, actually, textmode in the Debian Installer. 51 99:59:59,999 --> 99:59:59,999 [Slide 18] 52 99:59:59,999 --> 99:59:59,999 Just to show an example, so here I have ftpfs which uses the TCP/IP stack 53 99:59:59,999 --> 99:59:59,999 to actually mount a remote directory, 54 99:59:59,999 --> 99:59:59,999 and then I can use isofs to mount an ISO image which is inside that FTP server. 55 99:59:59,999 --> 99:59:59,999 And then I can just let cp copy a file from the ISO image which is on the server. 56 99:59:59,999 --> 99:59:59,999 [Slide 19] 57 99:59:59,999 --> 99:59:59,999 So this translates that way, so I've done this command a long time ago, 58 99:59:59,999 --> 99:59:59,999 just to say that "ftp:" in my home directory is whatever FTP, 59 99:59:59,999 --> 99:59:59,999 and then I can take a "~/ftp:/etc." URL and give that to isofs 60 99:59:59,999 --> 99:59:59,999 and then mount that on my "mnt", 61 99:59:59,999 --> 99:59:59,999 and then I can just browse inside the ISO image, without having to download 62 99:59:59,999 --> 99:59:59,999 the whole ISO image, without having to ask root for this kind of things, etc. 63 99:59:59,999 --> 99:59:59,999 And I can also permanently store this in ext2fs. 64 99:59:59,999 --> 99:59:59,999 So just to give an example, I have a translator on my signature files, 65 99:59:59,999 --> 99:59:59,999 which just calls fortune, so when I "cat .signature" [demo], 66 99:59:59,999 --> 99:59:59,999 I get one signature or another, because each time I open the file, 67 99:59:59,999 --> 99:59:59,999 it's a new instance of fortune which is started. 68 99:59:59,999 --> 99:59:59,999 You can see that, indeed, this is stored in my signature file. 69 99:59:59,999 --> 99:59:59,999 So this is fun! 70 99:59:59,999 --> 99:59:59,999 [Slide 20] 71 99:59:59,999 --> 99:59:59,999 Another example: as a user, I can start my own TCP/IP stack, 72 99:59:59,999 --> 99:59:59,999 tell it to use a virtual network interface, 73 99:59:59,999 --> 99:59:59,999 and then put the TCP/IP service on some node in my home, 74 99:59:59,999 --> 99:59:59,999 and then I can run openvpn to actually push and pull packets 75 99:59:59,999 --> 99:59:59,999 from that virtual interface, and build a VPN with somewhere else. 76 99:59:59,999 --> 99:59:59,999 And then I can remap the system, what is supposed to be the system TCP/IP stack 77 99:59:59,999 --> 99:59:59,999 into my own socket, 78 99:59:59,999 --> 99:59:59,999 and then I get a new shell for which the system TCP/IP stack is actually 79 99:59:59,999 --> 99:59:59,999 my own TCP/IP stack. 80 99:59:59,999 --> 99:59:59,999 So I can decide which program actually uses this TCP/IP stack, 81 99:59:59,999 --> 99:59:59,999 and just do my own VPN without having to ask anything to the administrator. 82 99:59:59,999 --> 99:59:59,999 [Slide 21] 83 99:59:59,999 --> 99:59:59,999 But also, for instance it happens quite often that you have a binary, 84 99:59:59,999 --> 99:59:59,999 maybe not sh, but like, python or perl or whatever, 85 99:59:59,999 --> 99:59:59,999 you have a program which wants /bin/sh to be actually bash or whatever, 86 99:59:59,999 --> 99:59:59,999 so I want to change this, so I can remap this, so for instance [demo] 87 99:59:59,999 --> 99:59:59,999 if I look at sh, so as usual, oh it's green, 88 99:59:59,999 --> 99:59:59,999 but you can see here that it's dash, 89 99:59:59,999 --> 99:59:59,999 and if I remap /bin/sh into /bin/bash, for instance, I get a new shell where actually, 90 99:59:59,999 --> 99:59:59,999 sh is not the same, so it's remapped into /bin/bash, 91 99:59:59,999 --> 99:59:59,999 and so it's actually bash which actually shows up here. 92 99:59:59,999 --> 99:59:59,999 So I do really choose how I work, what my environment looks like. 93 99:59:59,999 --> 99:59:59,999 And for instance, I can remap the whole /bin directory into my own directory, 94 99:59:59,999 --> 99:59:59,999 where I expose /bin, but also other things, 95 99:59:59,999 --> 99:59:59,999 so that programs which have /bin/something hardcoded into them, 96 99:59:59,999 --> 99:59:59,999 I can use them without having to ask the administrator to install stuff inside /bin. 97 99:59:59,999 --> 99:59:59,999 So it's kind of interesting, a bit like stow, Nix, Guix, but done in a nice way. 98 99:59:59,999 --> 99:59:59,999 [Slide 22] 99 99:59:59,999 --> 99:59:59,999 How does it work? Well it's actually relatively simple in the principle, 100 99:59:59,999 --> 99:59:59,999 it's simply that libc doesn't talk with the kernel or whatever, 101 99:59:59,999 --> 99:59:59,999 it always uses RPCs, so to ask nicely about opening files etc., 102 99:59:59,999 --> 99:59:59,999 and so it's really natural in GNU/Hurd that you can redirect things. 103 99:59:59,999 --> 99:59:59,999 So for instance, the remap translator here is like, maybe, 104 99:59:59,999 --> 99:59:59,999 200-300 lines [Note of transcriptor: 150 actually], 105 99:59:59,999 --> 99:59:59,999 because it's just a matter of 106 99:59:59,999 --> 99:59:59,999 "you open a file, OK, I look at the file path, is it something I want to translate? 107 99:59:59,999 --> 99:59:59,999 Yes, I translate that, and then I open the real file, 108 99:59:59,999 --> 99:59:59,999 and give the new handle to the program", 109 99:59:59,999 --> 99:59:59,999 and that's all, so it's extremely simple. 110 99:59:59,999 --> 99:59:59,999 [Slide 23] 111 99:59:59,999 --> 99:59:59,999 So *everything* in GNU/Hurd is an RPC and so it is interposable, 112 99:59:59,999 --> 99:59:59,999 and then translators get exposed in the filesystem, we have seen the TCP/IP stack, 113 99:59:59,999 --> 99:59:59,999 it's just a path inside the filesystem. 114 99:59:59,999 --> 99:59:59,999 And then the user can decide whatever it wants to do to interpose whatever. 115 99:59:59,999 --> 99:59:59,999 So, for instance fakeroot, in Linux, is quite big, 116 99:59:59,999 --> 99:59:59,999 because it has to interpose libc symbols, 117 99:59:59,999 --> 99:59:59,999 and every time libc invents something new, then it breaks in fakeroot 118 99:59:59,999 --> 99:59:59,999 because fakeroot has to know about this new symbol, etc. and interpose them, 119 99:59:59,999 --> 99:59:59,999 either through ptrace or ld or whatever. 120 99:59:59,999 --> 99:59:59,999 In GNU/Hurd, fakeroot is, like, a thousand lines long, 121 99:59:59,999 --> 99:59:59,999 because it just implements a few basic things, 122 99:59:59,999 --> 99:59:59,999 and then everything just works, which just interpose basic authentication hooks, 123 99:59:59,999 --> 99:59:59,999 and libc uses them all the time. 124 99:59:59,999 --> 99:59:59,999 So it's fully virtualizable, and with a really fine grain interface, 125 99:59:59,999 --> 99:59:59,999 because you can precisely decide which RPCs are interposed, 126 99:59:59,999 --> 99:59:59,999 or which files in the filesystem are interposed. 127 99:59:59,999 --> 99:59:59,999 And then you can just use your home directory, the TCP/IP stack, 128 99:59:59,999 --> 99:59:59,999 and pile stuff over it, the way you want. 129 99:59:59,999 --> 99:59:59,999 [Slide 24] 130 99:59:59,999 --> 99:59:59,999 Just to give a crazy example, we have a lot of stuff, 131 99:59:59,999 --> 99:59:59,999 I actually have ISO image inside a partitioned disk image on FTP over a VPN. 132 99:59:59,999 --> 99:59:59,999 And this is not *so* crazy. 133 99:59:59,999 --> 99:59:59,999 Maybe the ISO image inside the partitioned disk, the ISO image is a bit too much, 134 99:59:59,999 --> 99:59:59,999 but one file inside the partitioned disk image on FTP over VPN is not so crazy, 135 99:59:59,999 --> 99:59:59,999 because maybe you are on a hostile network, so you have to use a VPN, 136 99:59:59,999 --> 99:59:59,999 and then you want to access a file you know is inside a disk image, 137 99:59:59,999 --> 99:59:59,999 I don't know, a known disk image which is provided on a public FTP server, 138 99:59:59,999 --> 99:59:59,999 and you don't want to download the whole image just to get, I don't know, 139 99:59:59,999 --> 99:59:59,999 the README file or something like this. 140 99:59:59,999 --> 99:59:59,999 So it's not so crazy, and it just works nicely. 141 99:59:59,999 --> 99:59:59,999 [Slide 80] 142 99:59:59,999 --> 99:59:59,999 So a bit more Debian stuff. 143 99:59:59,999 --> 99:59:59,999 Porting packages to Hurd is quite easy in principle, 144 99:59:59,999 --> 99:59:59,999 because it's just a POSIX system, there is a lot more than just POSIX, 145 99:59:59,999 --> 99:59:59,999 but it provides a POSIX interface. 146 99:59:59,999 --> 99:59:59,999 So portable programs should be really fine. 147 99:59:59,999 --> 99:59:59,999 Just for fun, some dumb issues, so for instance some programs think that 148 99:59:59,999 --> 99:59:59,999 if it's Linux or BSD, then they can include windows.h... 149 99:59:59,999 --> 99:59:59,999 Why not... 150 99:59:59,999 --> 99:59:59,999 If the system has mach.h, that must be MacOS, 151 99:59:59,999 --> 99:59:59,999 because MacOS is the only system in the world that uses Mach, I don't know why... 152 99:59:59,999 --> 99:59:59,999 Some people try to grep cpuinfo, which doesn't exist on GNU/Hurd yet, 153 99:59:59,999 --> 99:59:59,999 and so they basically just run "make -j" which just explodes the system, 154 99:59:59,999 --> 99:59:59,999 I mean even on a Linux system it's just the same, unless it's a small program, 155 99:59:59,999 --> 99:59:59,999 but with a lot of C++ files it's horrible. 156 99:59:59,999 --> 99:59:59,999 Some people include limits.h from linux/ instead of just the standard one, well... 157 99:59:59,999 --> 99:59:59,999 A problematic thing is people who hardcoded errno values; 158 99:59:59,999 --> 99:59:59,999 the values of errno are not standardized, so you shouldn't hardcode them, like, 159 99:59:59,999 --> 99:59:59,999 in testsuite results or things like this. 160 99:59:59,999 --> 99:59:59,999 And quite often in configure it's hardcoded that 161 99:59:59,999 --> 99:59:59,999 only Linux knows -lpthread or -ldl, etc. 162 99:59:59,999 --> 99:59:59,999 so quite often programs are not generic enough, 163 99:59:59,999 --> 99:59:59,999 and that's just easy to fix, but we have more and more of these. 164 99:59:59,999 --> 99:59:59,999 So we have a porter page developing a bit more about these. 165 99:59:59,999 --> 99:59:59,999 I wanted to talk a bit more about PATH_MAX, it is not defined on GNU/Hurd, 166 99:59:59,999 --> 99:59:59,999 for very good reasons, and it is allowed by POSIX not to define it, 167 99:59:59,999 --> 99:59:59,999 just to say that there is no limitation on the PATH_MAX value, 168 99:59:59,999 --> 99:59:59,999 we don't have a limit on the size of the paths. 169 99:59:59,999 --> 99:59:59,999 [Slide 81] 170 99:59:59,999 --> 99:59:59,999 And indeed it has a fragile semantic, it has never meant 171 99:59:59,999 --> 99:59:59,999 "a reasonable size for a array of characters to store a path". 172 99:59:59,999 --> 99:59:59,999 On Linux it's 4000, that's a whole page, 173 99:59:59,999 --> 99:59:59,999 that's a whole TLB entry for just one file name. 174 99:59:59,999 --> 99:59:59,999 It's extremely costly, most people don't have so long paths, 175 99:59:59,999 --> 99:59:59,999 and so it's really a pity to use so much memory, because it's always a whole page 176 99:59:59,999 --> 99:59:59,999 because it will always be aligned on 4k etc. 177 99:59:59,999 --> 99:59:59,999 So, well, that's a waste for one. 178 99:59:59,999 --> 99:59:59,999 And paths can actually be longer, there is no strict limitation, 179 99:59:59,999 --> 99:59:59,999 you can mkdir something, cd into that mkdir again, cd, etc., 180 99:59:59,999 --> 99:59:59,999 you can do that as much as you want, there is no limitation on this, 181 99:59:59,999 --> 99:59:59,999 it's just that when you call 182 99:59:59,999 --> 99:59:59,999 "get current working directory", you won't get it completely. 183 99:59:59,999 --> 99:59:59,999 And actually, some programs misbehave in that case, 184 99:59:59,999 --> 99:59:59,999 because they won't see these files, they will be quite actually hidden, 185 99:59:59,999 --> 99:59:59,999 or protected, or I don't know, 186 99:59:59,999 --> 99:59:59,999 you can not remove them just giving the path, you have to cd, cd, cd, cd, 187 99:59:59,999 --> 99:59:59,999 and then you can access the file. 188 99:59:59,999 --> 99:59:59,999 And for no reason, actually, because Linux inside doesn't have 189 99:59:59,999 --> 99:59:59,999 such limitation, actually. 190 99:59:59,999 --> 99:59:59,999 And also, it's stupid, but POSIX didn't really said precisely whether 191 99:59:59,999 --> 99:59:59,999 the final \0 actually is included in PATH_MAX or not, 192 99:59:59,999 --> 99:59:59,999 so people would allocate PATH_MAX+1, or maybe not. 193 99:59:59,999 --> 99:59:59,999 So we have a lot of code which doesn't, maybe, actually work, 194 99:59:59,999 --> 99:59:59,999 but nobody tests it, actually, because they would never have so long paths. 195 99:59:59,999 --> 99:59:59,999 So I'm a bit afraid of all these using PATH_MAX. 196 99:59:59,999 --> 99:59:59,999 You should be afraid as well. 197 99:59:59,999 --> 99:59:59,999 [Slide 82] 198 99:59:59,999 --> 99:59:59,999 Just to give an overview of the state. 199 99:59:59,999 --> 99:59:59,999 We have a i386 support, we have a 64bit support which has started, 200 99:59:59,999 --> 99:59:59,999 we have the kernel booting, 201 99:59:59,999 --> 99:59:59,999 and now it's mostly translating between 32 and 64 in our RPCs. 202 99:59:59,999 --> 99:59:59,999 We have drivers for network boards as a userland translator, using the DDE layer. 203 99:59:59,999 --> 99:59:59,999 We have disk, we have a Xen port. 204 99:59:59,999 --> 99:59:59,999 We have a preliminary sound which was announced today, using Rump, 205 99:59:59,999 --> 99:59:59,999 the Rump kernel. 206 99:59:59,999 --> 99:59:59,999 We don't have USB yet. 207 99:59:59,999 --> 99:59:59,999 [Slide 83] 208 99:59:59,999 --> 99:59:59,999 It is quite stable, I haven't reinstalled my boxes for, like, a decade, 209 99:59:59,999 --> 99:59:59,999 I don't remember when I installed them, actually. 210 99:59:59,999 --> 99:59:59,999 And then the buildd machines just keep building packages for weeks 211 99:59:59,999 --> 99:59:59,999 without a problem. 212 99:59:59,999 --> 99:59:59,999 We have 81% of the archive. 213 99:59:59,999 --> 99:59:59,999 We have the native Debian Installer which is really working great. 214 99:59:59,999 --> 99:59:59,999 [Slide 84] 215 99:59:59,999 --> 99:59:59,999 Recent work is, like, interesting thing is, a distributed mtab translator 216 99:59:59,999 --> 99:59:59,999 to provide /proc/mounts in a hurdish way. 217 99:59:59,999 --> 99:59:59,999 We have quite a few optimizations which went in to improve the performance. 218 99:59:59,999 --> 99:59:59,999 [Slide 85] 219 99:59:59,999 --> 99:59:59,999 We had releases quite some time ago, 220 99:59:59,999 --> 99:59:59,999 I really recommend to have a look at this one, it's fun. 221 99:59:59,999 --> 99:59:59,999 We've some Wheezy and Jessie snapshots, 222 99:59:59,999 --> 99:59:59,999 they are not official, but for us it's really an official thing. 223 99:59:59,999 --> 99:59:59,999 [Slide 86] 224 99:59:59,999 --> 99:59:59,999 An important thing I wanted to discuss this week is the removal from ftp-master. 225 99:59:59,999 --> 99:59:59,999 This is due since quite a few years now, honestly, 226 99:59:59,999 --> 99:59:59,999 it's really not useful to mirror the hurd packages over the whole world, 227 99:59:59,999 --> 99:59:59,999 because there are not even as many users as the number of mirrors. 228 99:59:59,999 --> 99:59:59,999 So OK, that's fine for just the removal from the main archive in terms of mirroring. 229 99:59:59,999 --> 99:59:59,999 But then we have a lot of consequences. 230 99:59:59,999 --> 99:59:59,999 For instance, buildd.debian.org is really an important thing, 231 99:59:59,999 --> 99:59:59,999 because that is where the release team schedules transitions, 232 99:59:59,999 --> 99:59:59,999 and loosing this, for us, would be really tedious work, 233 99:59:59,999 --> 99:59:59,999 because I've been there, doing, actually, the transition work, 234 99:59:59,999 --> 99:59:59,999 the same work as the release team, and it's really painful to do this *again*. 235 99:59:59,999 --> 99:59:59,999 So we would really like to have a solution for this. 236 99:59:59,999 --> 99:59:59,999 Maybe get that fed from debian-ports and, 237 99:59:59,999 --> 99:59:59,999 then that's fine, we can be on debian-ports, as long as at least 238 99:59:59,999 --> 99:59:59,999 there is some synchronization between something. 239 99:59:59,999 --> 99:59:59,999 And also, getting exposed on the buildd package status page, 240 99:59:59,999 --> 99:59:59,999 so that people are aware that there is some port which is failing, 241 99:59:59,999 --> 99:59:59,999 and maybe they are keen on spending some time on it, maybe not, 242 99:59:59,999 --> 99:59:59,999 but at least get them know about it. 243 99:59:59,999 --> 99:59:59,999 And also, a corner thing, when we have a version upgrade, like gcc or perl, 244 99:59:59,999 --> 99:59:59,999 the release team asks "OK, we'll have to upgrade the buildds", 245 99:59:59,999 --> 99:59:59,999 and at the moment they don't even have an account on them, 246 99:59:59,999 --> 99:59:59,999 so they can not check whether the version is good or not. 247 99:59:59,999 --> 99:59:59,999 Maybe we should just provide an account, 248 99:59:59,999 --> 99:59:59,999 we'd thus need to know who we need to give an account to. 249 99:59:59,999 --> 99:59:59,999 Basically, my idea would be "OK, that's fine not being on ftp-master". 250 99:59:59,999 --> 99:59:59,999 The thing is we still want to have most of the support of Debian, 251 99:59:59,999 --> 99:59:59,999 to make our life less a burden, as much as possible, 252 99:59:59,999 --> 99:59:59,999 without any extra load on the release team, etc. 253 99:59:59,999 --> 99:59:59,999 We do understand well that we don't want to put work on people's hand. 254 99:59:59,999 --> 99:59:59,999 But we would to still get some benefit and probably there are solutions for this. 255 99:59:59,999 --> 99:59:59,999 And conversely, all of this, I mean, not putting more work on us Hurd porters, 256 99:59:59,999 --> 99:59:59,999 would actually be the same solutions that existing ports on debian-ports 257 99:59:59,999 --> 99:59:59,999 would be really happy to have, to improve their life, to have less work to do, [...] 258 99:59:59,999 --> 99:59:59,999 So maybe we want to think about a real status for Second Class Citizens, 259 99:59:59,999 --> 99:59:59,999 like Hurd, but also the sparc, hppa, etc. 260 99:59:59,999 --> 99:59:59,999 Maybe want to have some BoF at some time, so we can gather and discuss about this. 261 99:59:59,999 --> 99:59:59,999 [Slide 87] 262 99:59:59,999 --> 99:59:59,999 Future work, the most interesting thing is probably using the Rump drivers, 263 99:59:59,999 --> 99:59:59,999 because at the moment we use DDE but it's not really going forward. 264 99:59:59,999 --> 99:59:59,999 We thought it would be a way to get newer drivers, Linux drivers, 265 99:59:59,999 --> 99:59:59,999 without extra efforts, but it doesn't actually happen at the moment, 266 99:59:59,999 --> 99:59:59,999 while Rump does go forward, we see work being done with Xen etc. 267 99:59:59,999 --> 99:59:59,999 So this is probably a long-term solution. 268 99:59:59,999 --> 99:59:59,999 Maybe we'll have another distribution through Guix. 269 99:59:59,999 --> 99:59:59,999 This is progressing, we are quite far from doing this, 270 99:59:59,999 --> 99:59:59,999 so for now Debian is really the only Hurd distribution that we have, so we'll see. 271 99:59:59,999 --> 99:59:59,999 And of course, just come and have fun with your own pet project, just join, thanks! 272 99:59:59,999 --> 99:59:59,999 [Michael Banck] Any quick question before we run to lunch? 273 99:59:59,999 --> 99:59:59,999 [Steve Chamberlain] Hello, I just wondered 274 99:59:59,999 --> 99:59:59,999 if you're using Hurd on that laptop for the presentation? 275 99:59:59,999 --> 99:59:59,999 [Samuel Thibault] Yeah, yeah, this is running Hurd, yes. 276 99:59:59,999 --> 99:59:59,999 [SC] So it's quite, like, usable everyday? 277 99:59:59,999 --> 99:59:59,999 [ST] Well, not everyday because without USB, 278 99:59:59,999 --> 99:59:59,999 you can not mount a USB stick for instance, so that's quite inconvenient, 279 99:59:59,999 --> 99:59:59,999 but yeah, I could probably use it everyday. 280 99:59:59,999 --> 99:59:59,999 I don't, I mean, for work, I can not afford this, but yeah. 281 99:59:59,999 --> 99:59:59,999 Also, we don't have wireless drivers at the moment. 282 99:59:59,999 --> 99:59:59,999 We hope that with the Rump drivers we would get this. 283 99:59:59,999 --> 99:59:59,999 So, yes. 284 99:59:59,999 --> 99:59:59,999 Some people do use it everyday. 285 99:59:59,999 --> 99:59:59,999 Not me. 286 99:59:59,999 --> 99:59:59,999 [SC] But those would be the major thing missing for more people 287 99:59:59,999 --> 99:59:59,999 to be able to use it. 288 99:59:59,999 --> 99:59:59,999 [ST] OK, thanks. 289 99:59:59,999 --> 99:59:59,999 [MB] Any more questions? We're run out of questions, then thanks again.] Thanks.