Switched (after completing the Switching) to Haiku

First I want to say I really, really enjoyed reading this post. I had not seen it until today and read through the whole thing in one go.

Stuff like this is pretty inspiring for those of us who don’t use Haiku that much, though I may be the worse as I am even a developer but don’t really use it. Though I hope to change that and posts like this help. At least if I have problems I have a better chance of fixing them than most.

I have worked a bit on the audio drivers and Media Kit in recent years and I am sad you don’t have any audio. I won’t make any promises myself at this point to fix it, but I think at least audio over HDMI or DP might not be terribly hard. USB audio is probably quite a bit harder. I am sure these will get fixed at some point in the next few years…which maybe is not the kind of time-frame you want but I want to be realistic.

Lastly I think using QEMU or similar is a great way to get around some of the limitations of Haiku, but for best performance we really need to sort out hardware accelerated virtualization, which I have mentioned in other posts on the forum. I think this is also not a huge amount of work, and we just need someone to put some time in on it.

Virtualization is all the rage for even cloud software now and I think Haiku should get on that train and also even improve the integration such that maybe you can run Firefox or Brave or whatever like a native window but actually virtualized. The sad thing is getting that working well might be less work than making our WebKit port and WebPositive as nice as other system’s browsers. Though that should always be the end goal and anything else is sort of a stopgap. But it might even be useful long term to have some sort of Chrome-based browser since many websites only code for Chrome, and again virtualizing might be easier than porting the Blink rendering engine and then Brave or Chromium or whatever.

Virtualizing a browser and sandboxing it in a VM also has use for security.

Anyhow I am maybe off topic a bit at this point.

Keep up your adventure and I look forward to future posts!

4 Likes

I expect the opposite. Audio over HDMI requires some collaboration from the graphic driver which needs to inject the audio data into the HDMI stream. HDMI audio is not just some dedicated pins in the video connector to carry the audio signal, it is embedded in the same signal as the video.

On the other hand, USB audio is a standalone thing, and we already have a driver for it. It just needs some testing and debugging.

Why do everyone keep overexagerating how much work is needed on WebKit? I can’t imagine how doing virtualization (a big task on its own), then getting Linux apps to run and render in a native window (that would require a lot of work in both the Linux side with X11 or Wayland and probably in the app_server side), with good performance (for Linux apps that also probably means accelerated OpenGL rendering, from inside a virtualized Linux?). How can this possibly be easier than improving WebKit?

5 Likes

Good day,

Thanks for the tip, @guido. I’ll definitely try Puppy within QEMU. Just started with KDE Neon as it has the latest bells and whistles from KDE/Qt.

@leavengood, I have no time frames set whatsoever… :rofl: I’m starting to use Godot on Haiku to try to do some Game Development, and what I can’t do on Haiku yet, I can do on other OSes. It’s not such a big deal. Besides, my game projects don’t have such a big HW requirements yet :smiley:
Audio is an issue, but I can manage that on Linux or Windows atm, so not a deal breaker, though I rather do everything on Haiku.

Yep, let’s see where the adventure leads to… :rofl: We will see soon enough? :thinking: And thanks for your support. :+1:

Regards,
RR

1 Like

OK, that is good, I should not talk about things I don’t know the details of. I thought USB audio was in worse shape and had some fundamental problems.

For HDMI I swear I have seen HDA jack output related to that and since it is just digital audio there is not much need for processing. Maybe it is only easier for built-in HDMI ports and those ports on video cards need more driver work. I would need to do more research but I think basic support is not that hard. But I may be wrong.

Well I also mentioned the whole browser, which is another huge project and WebPositive still needs many things like just better UI, tab management, support for extensions, ad blocking, a web inspector and other things I am not thinking of. Of course it is probably much easier to do that than the virtual browser inside of a Linux VM approach, but latter might still be easier than porting a Blink rendering engine browser which sadly many sites now expect. You can get the virtualized browser working once, and then generally don’t have to keep up with the insane level of updates for the web engine and browser as it should continue running in the virtual OS.

I fully intend to work on our WebKit port and WebPositive before trying to do something like this virtual browser project, though I still think it is worthwhile to add hardware accelerated virtualization for other reasons. Also much of the work done for ChromeOS with crosvm for their “sandboxed Linux apps on ChromeOS” might be useful for Haiku too, so maybe less work than you might think.

1 Like

The “output jack” of the sound card just sends the data somewhere to the video hardware. Then the video driver also needs some configuration to take it from there and inject it in the HDMI data. Possibly it needs to take this into account when configuring the HDMI link to pick a clock speed with the extra needed bandwidth.

For USB audio, for a long time the problem was missing isochronous transfers in the USB stack. But, that has been solved, maybe 10 years ago already. Somehow everyone still thinks it is not done. Now the driver itself needs some debugging, but it is already partially working.

1 Like

Extensions and ad blocking are webkit territory, the ad blocking api is probably rather easy to activate.
(Although I am really split on the idea of extensions, my personal preference would be to simply not allow them. Most extensions i’ve used were to fix serious deficiencies in the browser and i think we can be better that that. I would go the route of making WebKit readily available as a view to use in our application code so third party devs can simply make a different web browser UI if they want. )
The web inspector is also already there, again in webkit.

For the rest the only thing i am really annoyed with WebPositive is that the uri bar content sometimes don’t match the visited site, but that is probably easier to fix with webkit2 than trying to get all edge cases right now.

The “output jack” of the sound card just sends the data somewhere to the video hardware. Then the video driver also needs some configuration to take it from there and inject it in the HDMI data.

Is it not possible to tell the grafic driver: Use the Output jack for sound only?

Regarding extensions, is it possible for WebKit to use WebExtensions? If WebPositive can be made to use the WebExtensions API, then that would open up most add-ons to be used with it including popular ones like uBlock Origin and Dark Reader. Those two in particular go beyond what most web browsers can do, or at least beyond what most web browsers are willing to implement themselves.

OHCI has supported isochronous transfers for a long time, but it is only found on pretty ancient machines at this point. EHCI supports inbound isochronous transfers only. XHCI “supports” them, though the support is not really well tested, since last year.

Yes, but it needs switching to the WebKit2 API. We are currently using WebKitLegacy which has many limitations.

2 Likes

That’s not really true, Webkit itself has an adblocking api that is much much faster than uBlock origin, and there is no reason we can’t make a better UI for it in Web+ aswell ;) (unrelated: why does discuss keep trying to replace emotions with emoij… it’s really starting to annoy me)

As for dark reader, in my experience (as someone with hypersensitive eyes…) It’s not really good enough for the use case of forcing sites into a dark mode, to top this off webkit already has the dark mode media querries, we could probably detect if a website has none defined, or ignore colors entirely based on user preference. IMO again not something an addon is really good for.
Links2 is an excelent browser if you want to be sure that websites are generally in dark mode. (except for images, i guess, maybe one could heurisitcally remove white borders around images too)

Dark Reader doesn’t just adjust CSS, but also images. It can detect whether to invert colours or just change their tint to be darker. There’s also the easiness of tweaking the results in its UI, although this is prolly quite readily solvable.

But anyways, the main purpose of extensions is to add features without the need to have them within the web browser itself. They let users have what they want, while the web browser developers can focus on improving the main software. Win-win for both sides!

Well, my argument was basically that most of the “must have” addons are fixes for serious deficiencies in browsers, not so much optional cool stuff. Personally i would rather try to make the browser itself better, including activating dark mode and ad blocking api. But in the end that is just where i want to spend my time on, nothing is stopping someone else activating the webextension api.

Yeah, i know what dark reader does, inverting colors is also css heh, but in any case it didn’t work well enough for me in firefox or chromium that i’d personally be satisfied with just importing it. The chromium native heuristic dark mode worked better for me funnily enough. (But they removed that now, oh well…) (the “smart invert” feature of iOS also helps a lot with black on white pages that just didn’t ship a dark mode, though obviously that doesn’t look as nice. The reader mode makes websites much easier on the eyes too, when it works anyhow, maybe we can try to activate it too, epiphany has it so it’s probably in webkit)

I think a heuristic to detect images with white borders around colorfull objects and make the outer white be transparent instead could work quite well. I think that would look better than inverting images.

Good day,

And besides theming the windows, Vision, and icons… also the Terminal has to be tweaked. Just as when you enter an apartment you start to add your stuff… with hardware/software… same thing :rofl:
Just a small tweak on default Haiku Terminal theme:
redminal

The ‘profile’ file is available here:

Only with the profile, no shell script, no powerline, no oh-my-bash… nada :grinning:
So step by step making Haiku “mine”.

Regards,
RR

5 Likes