My progress at porting Ladybird, the SerenityOS Browser

Because:

  1. I am the only person to try it, some help would be welcome, and,
  2. My insistence on using Haiku native APIs as explained above. It would possibly be easier to use the shared “UNIX” code instead, at least as a first step to get something running quickly.
7 Likes

At the very least, it would be nice if the work on a native Browser UI could be shared between projects, for example by making the web engine in WebPositive modular so that a user can select the rendering engine for each tab.

I know that in an open source project, people will always work on what they are personally interested in, but if we could share the browser shell GUI parts like managing tabs, caches bookmarks, cookies, ad blocking and so on, then at least all the effort that goes into improving the browser itself would not be duplicated.

As a side effect, this could potentially be an extremely useful feature for web developers.

I get the idea but it’s not that easy.
There’s no standardized API that all web engines use to communicate with the browser GUI.
WebKit and Serenitys LibWeb are totally different,beginning with the fact that LibWeb handles all the rendering with its own libraries while WebKit heavily relies on native system libraries.
There are differences between WebKit and LibWeb which things are handled by the browser and which by the rendering engine.
Creating one browser that supports both engines will result in duplicated work in a single project.
I think some parts of the WebPositive code can possibly be reused in a native LibWeb-based browser,but definitely not those parts that interact with WebKit.

Lets rephrase my previous answer, how can we help get webkit2 going?

8 Likes

I don’t think anyone has any problems with it other than its a large project being shoehorned into a small project with not enough people working on it… whereas ladybird is a small project for a small project and might even get more attention than webkit since it has a different kind of user/developer base anyway.

Anyway the best browser wins… sometimes code gets superseded with something more appropriate, you shouldn’t feel the need to take it personally. Neither has the point come where ladybird is better than webkit either… it just shows promise.

Also the last few years have proven code that runs is better than an idealized code that doesn’t exist… so maybe table some wants to get things working like you mentioned with getting webkit2 working with less native aspects (those can always be worked on later).

I think my posts in the corresponding topic document rather well the current state of things: My progress on WebKit2 port - #54 by andreas_dr

Maybe we should move that discussion there and leave this topic for actual ladybird progress. Otherwise people will (rightfully) compla?n that I derail any web browser topic to be about webkit :slight_smile:

5 Likes

I personally think WebPositive has come a long way. Until recently I had not downloaded or used Haiku in about 1.5 years. Since before the R4 release. Before it would crash on me constantly and was very, very slow… bad slow…

I was amazed at how much faster is is now. I’ve been using it for days and I think it may have crashed on me once. I can visit more websites then I could before. The progress has been amazing. The only two sites I’ve tried that I can’t use are Youtube, the site works fine just complains that my browser can’t play the vides. That and Facebook, for me WebPositive just doesn’t like Facebook. But, this is leaps and bounds beyond what I experienced before. I wish there was more time for the devs to work on it. But there are only so many devs and only so many hours in a day/week etc… I feel they are consintrating on getting the OS itself finished. Anyway… the more options for web surfing the better.

2 Likes

Thank you for replicating the NetPositive UI. I wish WebPositive would have replicated Net+ UI/UX wise.

Would it be possible to get the same toolbar icons as Net+?

1 Like

You mean, a browser without tabs, bookmark bars, and search field? Or just moving the navigation buttons to the right?

At least the latter would be easily done.

I have experimented with using Stack and Tile for the tabs (in NetSurf) and found it not very convenient when you use more than maybe 4 tabs. It is also not possible to use the page favicon to quickly identify each window.

So, I think it is a good idea to do it in the future, but the Stack and Tile and Haiku windowing system will need these improvements: better handling for a very large number of stacked windows, and icons for each window (shown in deskbar and/or in the window tab).

That being said, if someone disagrees with that enough to submit a patch to WebPositive, I’m fine with it.

Personally I would prefer a treeview of pages on the side of the browser, where I can fold/unfold things, acting like a sort of combined tabs/bookmarks system.

1 Like

I agree, I’ve started working on a patch. I think the top tabs in Haiku work fine for static/ previously known content like appearence preferences, but badly in the browser with dynamic tabs.

The tabs used in WebPositive have some limitations, indeed. However, I find it a convenient way of managing the web pages in a browser and, personally, I would find it difficult to get used to another system.
Furthermore, a side bar would steal a lot of space from the window and even if it can be hidden it would add a few more extra steps that I suspect would render the UI less pleasant.
Genio has a concept of moveable tabs, the original tab system was taken from WebPositive way back in Ideam. I think that with some more adjustments it could handle favicons and maybe be brought to WebPositive.

EDIT: here’s a short video to show you the behaviour.
image

9 Likes

I see, makes sense.

Maybe we could at least agree on a system-wide standard folder for bookmarks as BeFS files then, possibly exposed through find_directory? Just like Android and iOS have a set of contacts that all apps share?

If we are stuck with a multitude of browsers in parallel in the foreseeable future, all of which have slightly different strengths and shortcomings, that might make life at least a bit more convenient and it would also open up opportunities for syncing across devices at some point.

2 Likes

Why? you cam just querry for bookmarks

Yes, without tabs please because any Haiku application already support tabs. I am tired with MS-DOS like applications that are expected to run fullscreen and reinvent all GUI instead of using operating system native functionality.

It is already mostly available with Deskbar in expanded mode.

That is not a tree, just a list. And also it is missing the favicons as I have mentionned.

“mostly available” is not enough here. So, anyone wants to implement an API for windows to set custom icons that can be shown in Deskbar?

Seems an easy task. Implementing window tree and bookmarks (shortcuts/symlinks) in Deskbar would be harder.

I don’t even think a separate API is needed here - we can add the ability to set the icon via Deskbar scripting.

I’ve already thought about using the same bookmarks for my native Ladybird port (but not the Qt one, that shouldn’t contain so much platform-dependent stuff).
I also think that it’s better to have the same bookmarks everywhere.
But let’s see how it progresses before planning too much.
First I need to get my patches upstreamed, then I can start working on a browser on top of it.

3 Likes

FWIW I do have a use for both in-app tabs in WebPositive and S&T. For example, three Web+ windows grouped together:

  • One window with development-related tabs (i.e. GitHub, GitLab, Codeberg, etc.)
  • One window with communication-related tabs (i.e. Discord, Tildes, /kbin, etc.)
  • One window for everything else

This effectively creates a tab grouping system unique to Haiku. Also doing the same with Terminal too, usually with one window for development and another for sysadmin/everything else.

The biggest issue with this workflow is not being able to detach/re-attach and reorder tabs. Being able to do both would make it very adaptable and complete.

2 Likes

Yeah stack and tile is nice but not quite enough for heavy use like in a Browser (I know people with 100+ tabs and many groups of tabs open).

So Tab grouping/stacking (as in each top level tab would actually be a list of tabs clicking it returns to the last open tab in that group + opens a selection drop down that goes away when focus is lost). Something like that.

Tab searching, click on a tab and type to match to the header… type enter to select the current autocompleted tab etc… or arrow keys clicking to narrow down.

Also, what Web+ does when the network doesn’t resolve might need improvement, currently it just kind of does nothing which isn’t ideal UI wise… firefox/chrome for instance after a bit notify the user that thereis a network issue. Anyway that’s just my throughts after using it a bit the other day I haven’t been on haiku daily in awhile.