 Our next talk is Haikyuu. Our speaker has been working on Haikyuu since 2001, so that's the last 10 years. He currently works for the University of Queensland. So can we welcome Phil Greenway? Good morning and welcome. My name is Phil Greenway. I'm here to talk about the Haikyuu operating system. If you're here to learn about Japanese poetry, you're in the wrong place and you'll be sadly disappointed. I got started on the project back in 2001 when it was first announced. I began as a programmer, then first stepped into a more of a mentor role, being a team leader, looking after submitting patches and those sorts of things from people who didn't have committed access and helping people along with their coding. So what is Haikyuu? You're probably all wondering because this is a Linux conference and Haikyuu certainly isn't Linux, but it's a free open source operating system that was based on the B operating system. It's BOS and it's also compatible. It's based on BOS and it's also compatible with BOS. As I said, it was first started in 2001. At that time it was originally called OpenBOS because it was no other name that anyone could come up with. This was later changed due to a trademark infringement with Palm because Palm actually bought BOS when it went under and then there was a community vote to change it to Haikyuu. The reason why the name Haikyuu was actually chosen was because the original browser that came with BOS was called NetPositive and when you would have error messages rather than just saying something like, you know, 404 error, it would actually give you a Haikyuu as the error message. So why is Haikyuu based on BOS? Well, because it's also an operating system. It was created about 20 years ago, 1991 when a bunch of former Apple employees left to start their own piece of hardware which they called the B-Box. At the time they also needed something to run on this so they created their own operating system which the BOS was then born. In many respects both the B-Box and the BOS were ahead of their time, taking advantage of multiple processes which wasn't a common thing back then, using preemptive multitasking and a 64-bit database-like file system. Okay, so Haikyuu has since implemented many of these features and I'll just sort of go through a few of those today. So preemptive multitasking. What is it? Well, they're in multitasking and they're basically two models. There's cooperative and preemptive. With the cooperative model each application is responsible for looking after each other and in the preemptive model the CPU sharing is managed by a system part of the OS called the scheduler. The scheduler assigns slices of assigned CPU based on a set of heuristics. This means that the developer and both the end user need not worry about anything to do with multitasking and that's why it makes it a responsive system. Prevasive multithreading is where all applications are divided up into small chunks that can be then run in parallel. These small threads work together in teams and can communicate between each other. This basically means that when a system is under heavy stress you can fire off a few movies, MP3s, a few file transfers and when you still go to access one of the menus it will respond straight away and the system won't feel bogged down. That click of the menu item will get immediate attention. This is basically due to the multithreading part and whilst most other operating systems obviously have multithreading none of them do it pervasively and since there are none there are no other operating systems that seem as responsive as Haiku. This is one thing that led me to BOS originally back in 2000. When I first saw it I thought well here's an operating system that actually takes advantage of all the hardware and puts it to good use. The B file system or BFS was designed from scratch to be a high bandwidth media processing. What this means is there are other file systems like FAT32 that have file limitations of 4 gigabytes in size. The BFS certainly doesn't have anything near this. The example I actually like to give is that you can actually store files up to 18,000 petabytes. Because the file system is also journaled your data integrity is maximised. This means that if you lose power on a Haiku system you are not going to have any file system corruption and then when you resume power and the system comes back up again in 15 seconds or less you don't have to go through any lengthy scan disk or FS check or desktop rebuilds. Haiku includes a data interchange and scriptability format called B-Messages. This is a language neutral protocol basically essentially packets of information that can be sent from one application to another or even from one window to another within an application. This means that you can use any language like Python, Perl, Bash, C++ to actually script a GUI application. All that a GUI application has to do is add in hooks using a namespace and then other scripts can take advantage of it. This is akin very much to something like AppleScript or Rex and I'll be getting into that more in the demo. Being my next users I'm sure you're all familiar with what POSIX is. This being a great set of tools and having it available for Haiku means that people who are familiar with these tools can easily migrate to Haiku with very little trouble at all. As I said it is backward compatible with BOS R5 which was the last release of BOS. I think it's important that Haiku, that's where its heritage came from. That was originally the goal of the first release of Haiku is to be compatible with this last release meaning that Haiku at the moment is currently on the last release of BOS was on GCC 2.95. That means Haiku is currently on that build. However it is release 2 is looking forward to moving forward with obviously GCC 4 and at the moment there are in fact you can also build hybrid systems that run both GCC 2 and GCC 4 meaning you can take advantage of both those applications. What advantages does Haiku have that makes it stand out from the crowd? It has a very fast boot up time. You can usually on real hardware you can boot up in about 7 seconds. I know other operating systems such as Windows 7 will say they've got a fast boot up time but there are many cycles before you can actually start using it. The new MacBook Gears are quoting fast boot up times but that's generally due to their hardware, their solid state drives that they have. Personally I'd love to see a Haiku system run on a solid state drive. I think it would probably boot up in maybe 3 or 4 seconds. It has low hardware requirements meaning that you can run a system with 512 meg of RAM and a Haiku system would run happily. Compare that with say other operating systems such as Windows 7 which needs at least 4 gig to run well and an OS X maybe 2. It has a very small footprint. Basically full install even with applications will be around about 1 to 2 gigabytes with the operating system being around about 500 megabytes. Once again comparing that with other operating systems like Windows 7 which needs about 10 gig and OS X which is around 6 to 8 gig. Granted you could say these other operating systems are doing more but in a lot of respects do they really need to be? I think there's a lot of feature creep in both of those. It is open source license. It's using the MIT license which basically means in layman terms if you've got a commercial product you can reuse the code as long as the original license is kept with it. It's very similar to the BSD license except for I believe they have a caveat to do with promotion. That's not part of the MIT one. Some of the underlying technologies that Haiku has recently got praised for is vector icon format which was invented by one of the Haiku core developers. This format enables for very small files and fast rendering. They're also using the free type fonts to import which is a high quality and portable font engine. This is something that a bearer didn't have. They're also using a network compatibility layer thanks to the free BSD project. It is alpha software so I will stress that you use your own risk. Obviously we're not suggesting that you use it in any production environment. Certainly not yet. Some of the road box that we see that currently need to be sorted out while a slant support currently only runs on a few hardware platforms and there's only web which has been enabled which I wouldn't even use that. In saying that there is a, there was a code bounty that was done by Haikuware.com. They're one of the leading Haiku websites. That bounty is recently been taken up to our WPA and WPA2 support. There was a blog post from this developers from December where he said he's got half of it working. It shouldn't be too long before he has a chance to nut all that out. Also being worked on is the localization support. This is one area where Haiku is different from I think a lot of open source projects in that Haiku is used mainly in countries where English is not the primary language. An example of this would be the Haiku users in Japan thanks to a bunch of them. They're bad at very good Hiragana and Kanji support. Haiku has also added a new web browser. Obviously the old one, NetPositive, wasn't going to cut it. It was basically a HTML2 browser. This is a new browser that is based on WebKit. It was really taken off in say the last six to eight months. It doesn't have full HTML5 support so we wouldn't be able to watch the streams on it. But this has been worked on slowly. There is no flash support because flash is a close proprietary software. However, there is the NASH project and I believe the latest version can now actually play YouTube videos. I've been a true believer that I really wish that Adobe would have open sourced flash. I think that if they really wanted it to truly be part of the internet, then that would be a way to go. Haiku doesn't support flash but need to do millions of iPhones and iPads. That in a way has helped push newer technologies like HTML5 to the forefront. Just some stats on Haiku. There are currently six and a half million lines of code. That has been contributed from over 37 developers from around the globe. The Haiku team is still relatively small. We currently have two full time employees. They are being paid with donations from the website. At present, those two developers, one of them is one of the guys I mentioned who is working on the wireless stuff and the other guy is working on critical app server bugs, the media player and the media kid. Recently, probably in the last couple of months, Haiku was hoarded to Haiku 4.7. Along with that, it has brought a number of apps along to Haiku. It's just a screenshot of it in action. Apps such as transmission, before that, you used to have to run the web-based version. Vacuum the instant messenger client. Scribus, which I believe there was a tutorial on that earlier in the week. I've even seen shots of a K-Office being ported on it. I haven't actually got that working myself but I believe it is possible. I just got these shots of K-Presenter and Carbon 14. So you might be wondering, how can you get it and try it out? The easiest way to try it out is VMware. Download one of the VMware images we have, which you can use in VMware Player or in Oracle's VirtualBox. We also have hosted any boot or live CD, so you can try that live CD experience. Trust me, it really doesn't show off Haiku's responsiveness or its speed. It's actually not that great at all. It's better to run this on real hardware if you really want to check out Haiku's speed. As I said, the VMware images are easy to get. The other way to do it is to build it from the source repository under a Linux operating system. I'll go through a few slides of doing that under Ubuntu. First of all, in order to do it under Ubuntu, you'll need a few packages. You just need those ones which are all pretty standard stuff. Subversion is what we actually use as our repository. You'll then do a simple checkout of the build tools. These are the ones responsible for doing the cross-platform stuff. Then once you've downloaded that, you'll go in and make Jam. Jam is very much like Make. Jam is the build system that we actually use at Haiku. You'll then check out the full source, which I currently believe is over two gigs. If you're doing this, just please be aware of the bandwidth that you're going to be pulling down. You then got two options. You can actually build a hybrid system as well, but I've just put up the two config commands for setting it up for a GCC-4 build or a GCC-2. If anybody wants the hybrid commands, just come and see me later and talk about that. When you're ready to build, it's just a matter of running the Jam command, and that'll create the anyboot image for you. If you want to create the VMware image, it's just a matter of adding that parameter to it. If you want to write to a partition, you just have to run it to first build the system and then a sudo. Then it's got permission to actually write what it's created to the partition. Some of the first things you need to do, though, is once you've checked out that source in the trunk build Jam directory, you have to create a userboot config. There is a userbootconfig.remi and a sample file in there, and you just go in and simply edit it via whatever your favorite editor is and just change those parameters, saying which partition you want to point it to. If there's any configurations that you want to do, if there's any particular software that you want to actually download first and install or even setting your time zone, those types of things as well. Then run Jam, and then you just need to edit grub2. Usually with that, you create a profile and then add it in, and then you can hold down shift key when you boot and then get it in that way. I've been talking about it for a while, so thought I'd just go through a couple of demos. I'm just running it here on a VMware system, so hopefully there's not too many issues with it. You won't see the speed in it loading here because I'm actually booting up, I'm using the CD-ROM of the actual machine here as well to do one of the demos and also loading a second hard drive. You've also got the option when that's booting. You can hold down the spacebar, and that'll give you any of your safe boot options. If something's not working with your video card, then you can go boot into the SafeMood option and use one of the Visa options or there's multiple things that you can get there to try. Here's the operating system. I'll just mount this, just got a CD here and I'm just going to mount a B file system where I'm just keeping the files that I'm going to work on. With a CD, when I open it up, it's not listed as CDA files or anything like that. They're WAV files, so I can actually just drag it off there and it'll actually start copying to the desktop when the CD spins up. I can actually start playing that file. I can't really hear it, but that music's playing even whilst it's being copied across. If I, say, go to do a second file copy, that immediately snaps to the window. Like other operating systems where you end up with all these different windows all over the place. Then you can actually, if you want to, you can say, no, that's taking too long. I'll pause that and you can stop that and then go back to it later on. Just some of the other Deskbar tricks. Sorry, Deskbar is what you're seeing here. Tracker is what you're seeing up here in the corner. If you don't like it up there, if you want to, you can drag it down here and have it be more like an other operating system or drag it up the top here. Personally I prefer it over there on the side. I'm not sure what that's doing. One of the threads is just held up. Some of the other things you can do, say, if I need to jump into a terminal, you've got the ability to do that. Very simple. You've also got the option of say, if I wanted to copy this file, you can just right click on it. You've got the move to copy to, but it also adds these extra lengths of current folder, recent folders. This would have a list of all the folders that I've accessed, obviously, recently. If you're working on something all the time, then you can quickly move files very easily between the operating system. The other thing is that the way that the files work on the file system, they're basically pointers. This wave file, which I believe has locked up, I'll go to something else. I just restart that. I think that'll be easier. Basically what I was going to demo there, this will come up fairly simply, quickly anyway, is basically, as I said, the files are a pointer on the operating system, so I can just move the file from one directory to another. I can still have that file open. The program that had it open isn't really going to care because it's just looking at where that pointer is, so I could have moved it anywhere. I could have deleted it. I could have renamed it, done any of that sort of thing, so if I just play that track again, so if I want to move it, I can move it when it's still playing, and that's not going to affect the operating system at all. I think that's enough of that demo. A couple of other tricks that you can do with the desk bar. You've got these tabs at the top, and they can overlay and stuff like that. If you hold down the shift key, you can actually move these tabs. It's called sliding tabs. If you had a couple of windows that were over the top of each other, then you could easily flick between the two. That's there, just another feature that, or if you want them on the other side or something. One of the other things is also you can auto resize a folder that has files in it. As an example here, it's taking up too much room. I just want to see that size. You can just hit the Y command, and it'll automatically go there. Open up an image. From inside the image, I can set this as a background. I can have it to scale for one, or if it's larger than what it is, which this picture is, I can go manual, and then move it around myself in this window and go, yeah, that looks about right. I'll apply, and so there it is, set underneath. One of the features that came from BOS that obviously we've still got is the ability to have workspaces, which I'm sure you're all familiar with. I believe you can have up to 12. The system obviously comes set up with four so that I can move around. Let me just set the background with this one as well. Right size. Just to show that we're different workspaces. Now, one of the other cool features that's in Haiku, workspaces is actually a replicant. What replicants are, I'm sure if you can, it's probably a little hard to see this little hand thing down the bottom, but I can then just drag that off the window and drop it on the desktop. Then that now will stay on the desktop until you actually, you can right click on that little hand and remove that replicant. There are a bunch of applications that actually support this, so if we just go the activity monitor, it's a memory usage. There's also the desktop calculator. The operating system will be complete without a calculator. Also, like I said, if you want to remove it, it's just a matter of right click and remove. Just bring up the audio. If I want to do it, I could put the volume control down there or whatever. Here we go for time. I just thought I'd also have a go. One of the applications that's being written for Haiku is called Paladin. It's an IDE for developing applications. I just thought I'd run through creating a very simple test. Let me open my cheat sheet. Let me just try that again. I just wanted to create a GUI with a main window, obviously. There we go. Now it's populated with those files. The first thing I just wanted to do here is go in here and add a... This is all C++ code. The guy who's actually developing this, he did some development work which he put up recently where he was saying that he's actually adding other languages to it. He's looking at Ruby and Python. I'm not sure on the others. I might just skip this demo just for brevity. One of the things that I touched on earlier was the B messages and how you can send those around the system. One of the command line tools that was written a while ago is called Hay. You can use this program to basically do interrogate GUI apps and find out information about them. As an example, just to get that, basically the way you call it is you call Hay, print server, and then usually some sort of command. The get sweets command actually lists all the properties that are available. You can see this is all to do with printers. From this list, I was able to work out stuff such as go Hay, print server, count printers, and tell me that there's actually two. Bring up the printers and at the moment on there is a preview and a savers PDF. You can actually, there is more commands that you can actually give that will actually create printers, set active printers, delete the trash, any of those sorts of things. You can do those with any sort of scripting. Hopefully some of you might be thinking about getting involved or at least trying out Haiku. Haiku for the last four years has been a part of the Google Summer of Code, which I'm sure you would have heard Carol Smith talking about that. It's certainly a great way to get developers paid for their content as well as it has also boosted Haiku's development cycle. There are mailing lists, which I encourage you to get involved with. There's these two IRC channels, Haiku, which is the main one, and Haiku-au, which is one, there's very few people except for me usually in there. Documentation, there's heaps of documentation on the official website. This is one thing that Haiku's actually been praised for that a lot of open projects don't normally have, but there's actually a ton of stuff for Haiku. In closing, hopefully at some point you'll try it out. I said the VMware is the easiest way to do it. For the developers out there, as I said, it is a small project and it's very easy to make your mark, so to speak, and possibly get paid in the process. It also doesn't look too bad if it's on your CV. There's a couple of official, or helpful websites, the Haiku-OS.org is the main site. Haiku-Files.org is where you'll get all the download, all those daily builds from, and DailyHaiku.net is basically a resource where all the Haiku news is reported. Thanks for your time. Questions? Overall, it appears that the project is kicking off fairly well. I do have a couple of grave fears just for general user ability on it. I hope down the track just a couple of things that they will implement, the opportunity of putting non-free on there to allow Flash to come on if people so desire it, if they don't want them, they don't have to have it. The other option is to have ISO packages which make life a lot easy to install stuff rather than having to compile it all. Yes, one of the projects that's actually being worked on is a package management system. There's a very basic one that's built in at the moment. You basically type install optional package, and then you can type one of the names like OpenCN or WebPositive or any of those packages that you can install. But an actual real package management is being looked at at the moment. There's a blog post about it where the guys looked at all the different ones that are out there and he's trying to choose the best parts of it. And I'd like to see Flash on there too. It appears to be more important things to fix like windows opening larger than my screen size. I was just wondering if anyone was working on any other architecture support, non-XE6. Sorry, what's that? Any other architecture, non-XE6 architecture support? There is a guy in France. I know he's been compiling it for his Nokia tablet, and he's also been working on, I think that's an arm. And there is a PowerPC build, but it's very... No, it's actually someone's taken the time to build it from this. Because there was actually no...because BOS was closed source, there was no operating source code from it. There were a couple of the smaller laps that were open source, but basically it was all recreated from the original documentation. Do you expect at some point, which I assume would be with enough popularity, that there'll be distributions of haiku like there is with Linux? Possibly, and there is one that website I mentioned, haikuware.com. There's a guy, he's actually...he calls his Senru, which is the name of his operate, distribution of it. There's nothing actually to stop people from doing it because of that license. With this Senru distribution that he makes, it's just bigger and it's got all these packages already pre-installed and configured and stuff like that. I know there are certain people in the haiku community who would rather not see that, who would rather just see the vanilla install, but I personally don't have anything against it and the license doesn't really have anything against it. The only thing is the copyright use of the images. Any more questions? It's not so much a question as a comment, I guess. The wireless is a real issue, I think. For the two or three years that I've been keeping an eye on haiku, I pulled the CD down three or four months ago, I guess, and there's no way I can run a web even around the house. No, definitely not. I totally agree, which is why we're all sort of waiting with beta breath for Axel in Germany to come up with a good solution. He's one of the main developers who was working on the tracker and he's the main kernel developer, so we all think he'll be able to do it. He's basing it off the FreeBSD code. This is more of a general comment than a question, but haiku is very unix-like, which means it runs a lot of cool stuff. You can actually already download Python and I've compiled lots of SDL games like OpenTTD and Weznoth and lots of cool things actually already run on haiku that aren't designed to run on it, so it's actually not as far in as you might think. We're actually looking for someone to maintain the SDL, so if anyone's interested, I can hear you, but it's probably the feed. I'm just interested to hear your hardware support. You're running in a VM, that's fine, but how about bare metal hardware and new hardware, brand new laptops, brand new desktops? What can you say about that? Well, that's what I basically, I'm probably at this talk actually, two of my PCs actually died, so I couldn't actually run it on real hardware. I am actually running on a Sony UMPC at home. I've also run it on where I work at the Uni. We've got Dell Optiplex systems. I know some of the older ones, it doesn't work with those. It's usually the video support, but I had tried the latest, the 980, and it worked with those, so yeah, purely it's a matter of getting those drivers. It was one of the biggest problems that BOS had back in the day, but thanks to the network seems to be pretty much sorted out, I think, because of that network compatibility layer with FreeBSD, so borrowing those parts from everywhere else. Any more questions? If not, let's put our hands together. Now on behalf of LCA, I'd like to give our speaker this present, which is a bowl made from Queensland Macadamia nuts. Thank you.