We're sorry but this page doesn't work properly without JavaScript enabled. Please enable it to continue.
Feedback

What's up on Haiku?

00:00

Formal Metadata

Title
What's up on Haiku?
Subtitle
R1/beta2, packaging, porting and contributing.
Title of Series
Number of Parts
490
Author
License
CC Attribution 2.0 Belgium:
You are free to use, adapt and copy, distribute and transmit the work or content in adapted or unchanged form for any legal purpose as long as the work is attributed to the author in the manner specified by the author or licensor.
Identifiers
Publisher
Release Date
Language

Content Metadata

Subject Area
Genre
Abstract
What are the new features in the upcoming R1/beta2? How did the packaging system work out? How to make your software easier to port to it, and how to contribute? Haiku is a Free Software Operating System, inspired by the BeOS, which focuses on personal computing. It's been in the making for more than 18 years now. We'll see what's coming up for the R1/beta2 release. The packaging system has been integrated for some years now, as a different approach to software distribution. Did it live up to its promise? How well does it scale with the growing number of available packages? What are the specifics of Haiku that you should care about when writing portable software? How to contribute to various parts of the system?
Medizinische InformatikGroup actionDistribution (mathematics)SharewareMultiplication signComputer animation
Multiplication signFreewareSoftwarePhysical systemComputer animation
BootingComputer animation
SoftwareOperating systemArithmetic progressionGraphical user interfaceMultiplication signKernel (computing)Computer animation
Row (database)Directory serviceOptical disc drive
Row (database)Optical disc driveSoftware bugComputer animation
Motion blurOperations researchPhysical systemOpen sourceKernel (computing)Graphical user interfaceBinary fileCompact spaceComputing platformPower (physics)ArmReduced instruction set computingRepository (publishing)BootingState of matterInstallation artThread (computing)SynchronizationRead-only memoryResource allocationMathematical optimizationMathematicsAreaRootkitInformation securityImage resolutionComputer fontScale (map)Computer iconVector spaceFile formatVertex (graph theory)Multiplication signLevel (video gaming)RootkitMobile appComputer fontBeta functionScaling (geometry)Information securityLibrary (computing)Physical systemBootingComputer iconComputer fileSoftwareVector spacePixelFloppy diskBuildingMathematicsComputing platformBitLine (geometry)Calculus of variationsMedical imagingFile format40 (number)Observational studyVideo gamePoint (geometry)Basis <Mathematik>CASE <Informatik>Goodness of fit1 (number)Execution unitComputer animation
Computer fileDigital rights managementPhysical systemContent (media)Directory serviceBuildingGraphical user interfaceSoftwareInterface (computing)State of matterBootingRead-only memoryBefehlsprozessorCache (computing)Direction (geometry)Digital rights managementCASE <Informatik>Database transactionDot productNetwork topologyMultiplication signBitLine (geometry)MathematicsDirectory serviceControl flowLevel (video gaming)PermanentTranslation (relic)Identity managementMeasurementPhase transitionBinary codePatch (Unix)Point (geometry)Semiconductor memoryForm (programming)Formal languageLie groupProper mapData structureFile formatSpacetimeInterface (computing)SoftwareState of matterMereologyPhysical systemFigurate numberComputer fileWindowContent (media)Cartesian coordinate systemRepository (publishing)Configuration spaceAttribute grammarFile systemLocal ringBuildingScripting languageBooting1 (number)VirtualizationError messageGraphical user interfaceRead-only memoryMiniDiscComputer animation
BootingBefehlsprozessorRead-only memoryCache (computing)Content (media)Physical systemNumberSystem callConfiguration spaceCodeComputing platformImplementationInheritance (object-oriented programming)Line (geometry)Negative numberBuildingMereologyCompilerPoint cloudClient (computing)Patch (Unix)Computer iconWikiStudent's t-testNegative numberMobile appCodeAreaComputing platformOpen sourceLogicVector spaceError messagePhysical systemPoint cloudFunctional (mathematics)BitSlide ruleComputer iconWeb 2.0Library (computing)Inheritance (object-oriented programming)Cloud computingLink (knot theory)Multiplication signSoftware developerProper mapCartesian coordinate systemRepository (publishing)NumberRevision controlGraphical user interfaceMilitary baseCloningProjective planeWritingNetwork topologyScaling (geometry)Open setRow (database)Moment (mathematics)Line (geometry)Presentation of a groupBuildingFood energyCodeClient (computing)Server (computing)ChainForcing (mathematics)Point (geometry)Key (cryptography)Social classComputer animation
WikiPatch (Unix)Quantum stateMultiplication signClient (computing)BenchmarkElectronic visual displayMenu (computing)Condition numberWindowTraffic reportingReading (process)Cartesian coordinate systemBitWeightSpeech synthesisFamilyGradientCalculationInternet forumFormal languageDependent and independent variablesProcess (computing)Right angleCodeArithmetic meanRevision controlEmailPeripheralVideo cardContext awarenessThread (computing)Computer fileWeb browserDrop (liquid)Software bugKernel (computing)Binary fileLoop (music)Event horizonExtension (kinesiology)Attribute grammarSubject indexingBlock (periodic table)LaptopWeb 2.0Computer hardwareReal numberPoint (geometry)SoftwarePoint cloudTrailMultimediaComputer animation
Point cloudOpen sourceFacebookComputer animation
Transcript: English(auto-generated)
The group here before was much better. Hi! This is Francois L'Ouvel, and he'll be talking to us about what's up in Haikou at the Bosnian 2020 distribution center.
Hello everyone. I'm not sure I would have the time to make a demo. Oh, well, let's try anyway. Oh, that's not the one. French. Yeah, I speak English, but yeah.
I already made a position, but yeah. Installed anyway. So, what's Haikou? Haikou is a free software operating system. Oh, it's done already.
You actually have to put the boot sector and install the boot manager. You can actually use Grub. Yes, yes, it's dangerous. I know. Reboot!
So Haikou is a free software operating system, and it's inspired by the Bos, which used to be a proprietary operating system in the late 90s. And we have our own kernel and our own graphical interface, and here we are. We're inside Haikou.
I just did something for the demo, and we're done. I do have a CD record package here. If I search CDR, if I remove the package from the active package directory.
Yep. I could zoom in, but I never tried. Ah, great. It's a bit weird.
So, I just removed the CD record package, so no CD record anymore.
If I put the package back, yeah, I didn't like it, but it's back again. And that's for the demo, because I don't have much time. Yeah, that's still a bug to resolve it.
So, as I said, it's a free software operating system. We started just after the P-Ink demise, and it took us like 17 years to get a first beta, because we take our time.
There are several recommended platforms, mostly Intel-based. The first one is the recommended one if you want to also run BOS binaries, which are getting quite rare now. But you can use the latest GCC if you don't mind.
There's also a 64-bit image, which works quite well. And some more exotic platforms, which I won't get into detail, because they don't boot anyway yet. We do have nightly builds. It's been going on for quite some time now.
They can be updated live, and they are transactional. I will get into it later. We are getting to beta 2. We're also now, as we say. And we have build infrastructure, which is getting quite good, so it's easier now than for the first beta.
But you still can find DVDs from the latest beta, so you need to ask Adrian, which is over there. We don't have any stickers anymore. We have to make new ones. We started optimizing, because a long time ago we used to boot with 40 megs of RAM.
It's getting there, but you can actually boot Haiku, but you can't install it with that low RAM level. And some various improvements. And we started to clean up, because for all our platforms, the glibc was a mess,
because we had to stick to an old glibc for BOS compatibility. So for newer platforms, we just imported some stuff from the Muzzle C library for mathematics operations, at least. We did some stuff on the security side, but if you're a security expert, we do need some help.
Well, we started from a very low level. We still run apps as roots. I know it's bad, but it works. We have many more drivers this time, and we still support floppy disks.
We did have vector icons for some time now, with a custom format, which is much smaller than SVG, so we can actually store them alongside the inode for some files. But the GUI used to have 8x8 pixel stuff in some places, so now it scales with the system font size.
So you just have to set the font size to 18 points, and it just scales everything up. We do support some theming, so you can actually make Haiku look as ugly as CDE or Windows 3.
For a bit about packaging, we used to not really have a proper packaging format in BOS. Some used zip files that you unzipped where you wanted. It worked at the time.
We did have some PKG files, but they didn't have any dependency management, so it was a mess. With Haiku, we started with some scripts that just downloaded zip files and unzipped them, but it's the same dependency management.
So now, we have had the packaging infrastructure for quite some years now. Well, we have a package folder with all the packages inside. They are compressed files with our own format, and some other state files.
By default, all the packages that are in there are active, but you can actually change this. When you do an upgrade, you can actually go back to the previous states, because they are saved. The update is transactional, so all the old files are moved to this folder.
Either it updates or it doesn't update, but it should work. So basically, as I showed you, installing Haiku is just keeping 400 files, and that's it. Updates are also quite fast.
We also have a package file system, which is a virtual file system, which mounts all the active packages' contents in the file system. There are some shine-through directories, which you can actually use to install manually, like ./configure dash dash prefix equals is our user local directory, if you want.
There's a tool called HaikuPorter, which you can run to build packages from recipes. We have a repository of recipes, which is called HaikuPorts, which you can find on GitHub.
We didn't reinvent the wheel, we just took the packaging naming from Gentoo, and the recipes are basically shelf scripts. We do have several interfaces to this. There's HaikuDeports, to search and install software.
There's a software updater. There's also a tool to get the old BOS package files and create a proper Haiku package for them. And then there's the command line interface, because not everyone knows how to use a GUI. This was a bit challenging, because some people complained when we introduced the package management.
Because they say, oh no, it's not the BOS way. Well, actually it is the BOS way, because it's simpler, it's cleaner, and it's faster. On the bright side, we get almost reproducible builds.
We probably have to patch GCC to make this fully reproducible. But it means that when you create a package, you actually have to have all the dependencies built already, so you get cyclic dependencies and everything. And some parts of Haiku actually need Haiku to build.
There is a HaikuPort cross repository with a few recipes for a cross-build package, but we don't always check it. And also, applications tend to put config files everywhere. And when you use language-based package managers like PIP, it wants to add a line in the file,
telling that there is a directory with packages inside. So yeah, it's doable. So as I said, updates are fast. You can actually find where a file comes from by reading an extended attribute.
And you are quite sure the binary didn't change, because it's read-only anyway. You can also blacklist files like broken Wi-Fi drivers from the base package, either at boot or permanently.
And as I said, you can boot previous states if something breaks, which sometimes happens. Like last week, we broke the bootloader, which is a bit problematic, because the first sector of the disk only knows how to locate the primary one and not the previous ones.
But it's not that hard to fix. The transaction directories, we cannot restart from them, so you have to re-download everything when there's a checksum error or something, but maybe we'll fix this. And it uses a bit more memory, but we are quite conservative, so it's not that bad.
And we found out we caged like two or three times the package content, so it's better now. I don't have many numbers to show you, but for now we have more than 4,000 packages, recipes on high-coupodes, so packages. We have even more recipes in high-coupodes, none of them are buildable yet. And we have three other smaller repositories with 1,500 packages, so it's not that bad.
And we don't pretend to run on servers, so we don't have... Well, we actually have an Apache package, for example. And I have more than 600 packages on my development version machine, and it works quite well.
I was scared a bit when we started it, because I wasn't sure if it would scale correctly, but it's not that bad. So now that I convinced you that you should port your application to haiku, because it's much better. Well, some people say, oh, that's not POSIX, that's not Unix.
Yeah, well, we don't pretend to be Unix. We do have enough support of POSIX not to be bothered with it. But, well, often when I port applications, I find Linux calls directly inside the code without any proper checks. And the same people who say we are not POSIX, they don't even bother to add proper checks for Linux's calls so well.
And well, like POS did iNotify stuff like 20 years ago, but just differently. Besides, iNotify is not really POSIX anyway. So it's usually okay to have fallbacks.
You want to modularize your code, because ifdef is not always the proper way. Sometimes you just write a base class and subclass this, depending on the platform or the feature you want. And sometimes things can just be an option. You don't always have to make them mandatory.
So it's usually okay to have fallbacks. Oh, yeah, I say this already. Just a small example, porting a Qt keychain, which I needed for something. It was quite easy. I just replaced some ifdefs to make them cleaner, and changed like 17 lines, and added a file, and that's it, and got merged.
One big don't, you don't want to return negative error codes, because we already have them negative, and it's bad. Besides POSIX changed their mind at one point, so POS wasn't wrong at the time.
Builders are quite okay, just make sure you check for the features you need. Compilers, well, for system libraries we use GCC2, but otherwise it's quite okay. X11, well, what to say? You may want to isolate the X11 code from the logic of your application, and Wayland users will thank you.
For Qt, it's quite okay. Again, X11 stuff, we actually had to clean up these in some ported apps. The only problem is OpenGL for now.
As an example, I tried to port the next cloud client, but then it said, oh, I need the Qt web engine, which is actually a Chromium fork, and Chromium is a WebKit fork, and they are maintaining their own faults of the dependencies, so we would have to maintain two ports of Chromium and three ports of the dependencies.
On the other hand, the own cloud client just built. I just had to implement the specific iNotify-like functions. You may want to fix your toolkit, because sometimes you think you need something in the toolkit,
but you are afraid of touching it, so you work around it, and that's bad. There is a great article about it on Linux Weekly News. There are many areas where you can contribute to Haiku coding, of course, either porting or fixing the base system.
You can translate apps for the system, and nice vector icons and stuff like that. We already have a nice source of contributors, like GSoC, which we participated several times. We did GCI from the beginning, and it's really nice.
It's quite a lot of work, because you have to check that students do things correctly, but it's nice. And we did R3T once, and we have the student here. And some contributors actually stay with the project, so that's great.
If you want to help, the slides have clickable links in the PDF, so don't hesitate. You can even donate money if you have some. I think that's it. Well, that was fast.
So if you have any questions. Yep? For somebody who has never used BOS, what would be the reason to use that? I don't even use a really GUI, I'm a command line user. Is there any reason for me to try that?
So why use Haiku when you never actually use BOS? Well, unfortunately, we only had the Haiku booth yesterday, but you can come and we'll make you a demo. There are nice features like indexable extended attributes and BFS,
which you can search very quickly. So you don't have to run Update DB every night, and you wonder why your laptop is swapping, and yeah, Update DB. And it's used for emails, like subjects and from, to,
so you don't even need to run your main client to know that you do have new mails. And we have nice features like the file browser. We have what's called X-ray navigation, so you just pop a context menu and you can have the subfolders and submenus,
and you can even use it for drag and drop. So you can just drag and drop over a folder, it opens the context menu. You don't have to wait for ten windows to open and close. So we do things differently, we explore stuff, and yeah, we just show how it could be done.
And sometimes the Linux people invent things BOS had ten years ago, like T-Class. So, yeah. Yeah, some, another question? Don't be shy, yeah? Are there any compatibility layers?
So, compatibility layers for other binary formats. We do have a compatibility layers for BSD drivers. For FreeBSD drivers, we use their network drivers for Ethernet and Wi-Fi. So it's a static lib, we just compile the driver with it and we get a haiku driver without touching the code.
Well, mostly we do send some fixes sometimes. We do have QT port, we don't have GTK. We do have SDL and some other stuff. We have many languages, we do have Rust and Go, I think. Maybe not packaged yet properly.
And Java, of course. It took us some time. We don't have Wine yet, so if you want to... If you're interested, I mean, who uses Windows? Yeah? So one of the big selling points of BOS was the performance of the kernel,
as opposed to things like multimedia. I was wondering how I could compare this with BOS. So BOS used to be great at multimedia because the kernel was fast and so I could compare. Actually, the BOS kernel wasn't that fast.
I did a benchmark like 15 years ago and it was like 10 times slower than Linux. But the way it works, it was really multithreaded at the time and applications were also multithreaded. So each window has its own event loop in a thread.
So when a window blocks something, like calculations or something, it doesn't save the whole application. So even if it's slower, you actually feel it's faster because it's more responsive. So it's not so much a speed issue, but responsiveness. And does Haiku have that responsiveness as well?
So yeah, Haiku does have this responsiveness because we model everything, well, mostly everything like BOS. We do have threads in Windows because it's written into the API, just like as if QT, when you create a window, it actually just spawns the thread for you.
Yeah, well, three more minutes. Yeah? So your Wi-Fi driver has been broken for a while, so how can you fix it?
Well, you can come to us and we'll see. Yeah, you can, of course, submit a bug report. You can create a ticket and come to IRC because everybody still uses IRC, I hope. We can help you there.
How many people do use Haiku on a physical device? At least two are there. And three? Great. Well, I do have a net video card in this machine,
so I have a full HD panel, but only this display is, well, not really handy, so I have a VM, but we don't really have figures. I think we might find some download figures, but real hardware versus resolution, I'm not sure.
How many people use Haiku at all? Well, same answer, I don't really know. At least two, three, and four, of course.
I have really no idea. Yeah, exactly, we don't track our users, so we don't know. Well, we do have bug reports, people telling us crates, sometimes people complaining on the forums, so yeah, at least some people. Yeah, I think we can wrap it up.
Any more questions? Next cloud have rebuilt their client for the latest version of next cloud, so that might make the work a little bit easier. Next cloud? They've basically completely re- Ah, they've rewritten their client. Yeah, I started the port like six months ago,
so, well, a bit more. What web browsers are available on Haiku? So, what web browsers on Haiku? We have a native browser called Web Positive, which actually runs WebKit inside, thanks to Adria. We do have WebKit browsers based using Acute,
so Capzilla or whatever. We don't have Firefox, because Firefox, they keep changing their minds, so we stopped following them. Maybe we'll look at it again. Thank you, everyone.