Breeze web browser - WIP

Hi all!

Yeah, i know… “Yet another web browser thread”. :grin:

Few weeks ago i installed Haiku to my old Acer Aspire One -mini laptop.

Well, it isn’t very fast machine, so first thing i noticed that web browsing was very slow and unstable. I tried all browsers that were available in repos and any of those didn’t were really any better.

I am not really a coder/developer, i know a bit of linux bash scripting and a little bit of python too, so i asked “almost legendary” chatgpt straight forward question; “how hard is to make simple and lightweight web browser to Haiku”, well it responded “Glad you asked, it really isn’t that hard, let’s try following with python…” :rofl:

It suggested to start with PyQt5 and PyQtWebEngine5, so i installed pyqt5_python310 and pyqtwebengine5_python310. I mentioned features that i wanted to it and it suggested gradually more and more python code for me… well, it wasn’t really that straight forward, but it helped me a lot. In reality it contained a lot of head banging and trying different things, but i finally got it working…

After a few days i had pretty good working simple web-browser. It has following basic features…

  • basic navigation buttons
  • floating/movable navigation toolbar
  • tabbed browsing
  • video/sound playback
  • bookmarks, with add and removal option
  • simple file download manager with progress bar and cancel possibility

I am pretty happy with it. :sunglasses:

It contains only 312 lines of python code. It feels snappier in browsing and it seems to play youtube videos better. Not sure if it is placebo feeling, but anyway… :wink:
It doesn’t have adblocking, because i use hblock in Haiku.

Chatgpt also had some ideas how to block youtube ads also, so i am trying to get that work too…

I tested browser with html5test.co (+ many sites) and I tested it with both pyqt5, pyqt6 versions and latest firefox for comparison…

Pyqt6 feels a lot better and faster, I wish we have it someday in Haiku… I noticed that this Discourse-forum doesn’t work with PyQt5…

All I have is this python script at the moment, so no any installable file.
To be honest, I have no idea how to even make it or is it possible

I tested python code in Windows 10, Lubuntu 24.04 and Haiku rev57774 and it works same in every operating system. For some reason in Haiku there is a bit more instability when multiple cpu cores are involved, but with single core it seems better…

Maybe I should put this in Github someday, if anyone is interested… :slightly_smiling_face:

Thanks!

8 Likes

Ai coding really has improved. On the topic of ChatGPT, would be interesting to see if the newer LLMs would be capable of porting software one day. Imagine a chromium port or whatever done by Ai. Would be cool, maybe possible if you have enough API tokens to spend.

Yeah, AI is pretty good today. It really got me suprised. I used gpt4o to this…

3 Likes

care to share your gpt session (download the page as pdf)?

For goodness sake, I wish not. Although GenAI could provide some valuable help in certain circumstances and limited to small piece of code or as a backend for a language server, I would not trust it to perform a full port.

3 Likes

The evolution of AI is going to accelerate soon, be prepared

That conversations sharing may be hard, i deleted some of it…

There were many many chats with it, very long ones and i had to start new chats all over again. For some reason it starts blabbering same things if chat get long enough.

Best way to continue is to start new chat, tell exactly what you want and paste your latest code. Then it can continue properly.

Gpt4o is cool because it understands images, so i used screenshots a lot for debugging errors and problems…

It also seems to understand (at some level) hand drawn images about gui elements, like “i want buttons here and there, text box here” etc, give me a base code for it. Then it is relatively easy to modify code as i like…

This was fun experiment for me and i am going to continue it. There are still few things what i want to add in this simple browser.

1 Like

you will share this port?

I believe i have the same acer as you, maybe.

Yes, looks same. Mine is model 722 with AMD c-60 apu prosessor and 2gb ram.

Yeah, I can share it. I will upload it somewhere today.

2 Likes

I will never trust AI for a large project, and I don’t really trust it even for simpler tasks. More often than not, I get flat-out wrong answers, AI-generated programs calling functions that don’t even exist, or have wrong arguments. All that is presented as something valid - until you tell it it’s not. Then it starts apologizing and providing another answer - which is typically also wrong. After a few iterations, you may or may not get a decent answer. There are exceptions of course, but the norm is as I described.
Now, granted, I dislike python and I don’t use it anyway, so maybe AI “knows” better python (because it’s more popular nowadays) so it is able to give better answers. Or maybe a paid AI model is much better - which I doubt, because whenever I had the chance to use such a paid model I barely got better answers. It surprised me with a very good answer just once, the rest was typically only slightly better than the free model (and even that, not always).

Don’t get me wrong, I think what you did was a very interesting experiment. I just bet this is not without a lot of your intervention, correcting many AI mistakes. I’m sure you knew what you were doing, and this is the result of your work rather than AI-assisted work, other than AI suggesting the base libraries to be used, and maybe a few things here and there.

The whole AI thing looks more of a glorified search engine than anything else to me. It has a great parser, that’s for sure. But the rest is not to be trusted, definitely not for a large project, or porting libraries/applications. AI failed miserably to give answers even remotely close to something usable when I tried porting a small chunk of a C API to another language. I had way better success using a program I wrote myself to get a first raw, automated port of said API (which of course needed a lot of modifications afterwards).

I happen to have the same old netbook, I used to run Void and AntiX GNU/Linux on it, nowadays it runs Haiku. The performance is decent with all operating systems mentioned (using a lightweight window manager in case of GNU/Linux), and the system is perfectly usable for many tasks. However, browsing the web is not exactly one of them. For simple tasks (such as reading articles) sure, it’s sufficient. But the system is not for much more than that, due to its limited memory and weak hardware (even for 2008 standards, when the netbook was first released). Most of the time I use Emacs’ built-in browser for simple browsing (since I have Emacs running most of the time, anyway). But there are other options too, such as WebPositive or even dillo.
Watching streamlined videos is definitely out of this machine’s reach. While I managed to have some kind of passable results with lightweight video streams (YT is the heaviest), if you want to watch video, you need a more powerful machine.

Edit: My Aspire One is not exactly the same as yours, as it has 1 Gb of RAM, while yours has 2 Gb. But I doubt this changes much of the above, since the rest of the hardware is pretty much the same.

1 Like

I have been playing with chatgpt from start, but never in this scale. It really got me suprised.

I used gpt4o version in this all time. it is a lot better than gpt3.5 or even gpt4. Like i said before, it too starts that blabbering at some point, but new chat window fixes that problem. Sometimes it is not necessary, seems like long code prints do that.

It took maybe 4 nights to do this to this point, 4-5 hours per night. I would say this project is almost all gpt4o’s code. My python “skills” are not worth of mention, i have not code any python gui ever before, only cli versions and those where quite simple programs. I have never used PyQt before.

It (gpt) of course cannot provide the whole working program right a way. So i splitted my ideas to smaller pieces; Gui, navigation, tabs, bookmarks, bookmark removal, video/sound, download manager etc. I tested one feature at time that it works and then moved to next step.

Usually it gave whole code back with new features included. It also always explained new code/changes like what, where and why.

Over the years I have tried many times to learn programming, but seems like my brain doesn’t really work like that and i have always got frustrated. So this AI thing gave me possibility to learn it a bit different way and best thing are that, AI gets never tired and mad. I can ask thousand times same thing and is just answers. :grin:

I agree. I tested having it generate a really short basic piece of C++ code and the main part it gave me was something that put an array on the stack and returned a pointer to it.

It repeats mistakes, security problems etc. that are commonly found in training data and adds some of its own.

By all means use it to find solutions quicker, but always independently verify everything it gives you and never use any part of its output that you don’t fully understand.

If you use it to get something to work (like a port) and contribute code somewhere but don’t understand every bit of it, please always mention that an LLM was used so people can double check everything before merging (of course they should anyway, but reality is reality).

1 Like

John Backus, the inventor of the first high-level programming language and compiler (which is still evolving and still used for heavy numerical computations) said, in multiple occasions, “I did nothing myself, most of the time I was just at the window staring at the girls passing by”. Members of his team denied this, he was hard working and just lying because he was too modest. :laughing:

Now, jokes aside, it’s easy for a glorified search engine to recommend PyQt, because it is widely used nowadays, and there are plenty of resources about it online. Maybe gpt4o is better and can do something more than that - but still, just a “smarter” search engine that can find and collect information about a given topic. Such models also have access to code in repositories like github (without the original authors’ consent, of course).

I still think that, without your critical thinking (which is something AI can’t do), all what AI can be is a untrustworthy assistant at best, and you have to double check any answer it gives, even when it seems to work. Using AI-generated code blindly, without examining how it does what is supposed to do can be catastrophic. Paraphrasing an old maxim widely known because it was used by R. Reagan “do not trust and always verify”.

Yes, it always “explains” why the code is as it is, even when the code is blatantly wrong and it’s not working. :wink:

1 Like

Looks like a fun exercise.

Now here’s the fun part: the things novice programmers seems to struggle the most are vocabulary and common patterns, and language patterns are the thing language models are good at. LLM suck at reasoning, but goals are driven by a human.

Decomposition is the key, no matter whether you use an LLM or not.

Try to understand the code you copy as good as you can, this will help you in the long run. And keep in mind that convincing explanations are not always correct - language models are very good at bullshitting.

1 Like

To resume, you managed to create a working UI for a known engine but, you don’t know if it does anything else you didn’t ask for because you admitted to not have the skills.
I’m pretty confident that someone less honest would make it commercial and add the catch phrase “Does everything you imagine and more” :grin:

2 Likes

You could compare with qutebrowser, which also uses PyQt

will wait for it

How can this be uploaded in repos, so we can give it a try?

That won’t probably happen, at least with this AI code.
I put it in github when I have time.

Couple days back I quickly tried another program with chatgpt.

Because I hate ads in YouTube videos and Haiku haven’t any way to block those. I, again, asked gpt4o for any solution. It mentioned that python with pyqt5 would do it. So it gave a code for me for testing…

First version was just a simple gui with text field which grabs valid YouTube video link from clipboard and plays video in vlc.

In couple of hours i had a bit better program, which had gui with search field, result view, video thumbnails, lengths and titles. When clicked video it opens video in vlc and video plays with no ads. …and this has zero my code.

It is still very basic. It probably could be improved in many ways, but it was fun test too.

1 Like