Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Have some ideas, #19

Open
FrostKnight opened this issue Aug 8, 2023 · 12 comments
Open

Have some ideas, #19

FrostKnight opened this issue Aug 8, 2023 · 12 comments

Comments

@FrostKnight
Copy link

Be able to change browser config in about:config
block ads
block individual scripts on pages
an ultra lightweight addon system that is not too hard to make addons for.

These are just thoughts I thought I would publish mention before I logout.

@mcirsta
Copy link
Contributor

mcirsta commented Oct 22, 2023

I have seen how addons were implemented in some leaked Opera Presto source code. I tried to remove them but the code for them was all over the place in the browser implementation.
In my opinion at least for now addons are not worth having. They will require quite some effort, bloat the browser and probably be a security risk.
Rather we should be looking at some sort of native plugins that can handle the most useful addon functionality. I think maybe nr. 1 would be adblocks which can go directly into the browser.
These are nice to have but for now for me the nr. 1 priority would be the performance and stability of the browser.

@FrostKnight
Copy link
Author

@mcirsta agree on all of that. Noscript like functionality, would be a very nice to have but not needed as of now.
Adblock and performance/stability of browser are paramount.

I don't know if this web browser supports audio/video or if you plan to if it doesn't, but it does look like you have a better idea of how to do things that the current maintainers of netsurf

@mcirsta
Copy link
Contributor

mcirsta commented Oct 23, 2023

@FrostKnight I'm in no way an expert in browsers but I've hacked a bit at some leaked Presto source code to get a feel for it and out of curiosity. This is how I've learned how things can do wrong with a browser and become a total mess. I'm not really sure what to do but I'm quite sure what not to do.

I think we can for now as I've said limit the support for extensions to adblock and probably something like Noscript would be easy. We can integrate these right into the browser though because making just some generic extensions would require a lot of work and affect too many areas of the code. One of the nice things after all is how light this browser is so I don't think we want to make our own OS based on it, haha. Somehow you have to find the right balance between customization and abstraction and light and simple.

Audio and video is the next milestone in my opinion after getting the browser at least mildly useful which as far as I can tell for now it's not. I've done some profiling and the major issues seem to be when using curl for fetching data and also when using cairo for rendering. These need to be addressed first.

My plans are ( in this order ):

  1. Port a new UI from the Otter browser. It's a mature UI and I like Qt.
  2. Address the performance issues mentioned above ( curl and cairo usage )
  3. Add support for Addblock and Noscript
  4. Improve rendering a bit to make more sites usable
  5. Look into the JS engine ( QuickJS , LibJS )
  6. Multumedia support, Youtube playback first
  7. Import bookmarks from other browsers
  8. Windows and Mac support ( this might be moved up )

@FrostKnight
Copy link
Author

FrostKnight commented Oct 23, 2023

Interesting list, but if I do say so myself, can you not make qt-webengine a dependency? Its license for some might be questionable and it would keep some from using this good web browser. Btw, would it be buildable with qt5? I hope so, otherwise it might get in the way also.
Glad to hear you plan to support audio/video too though.
I myself prefer tk but to each their own.

https://www.tcl.tk/software/tcltk/
I would recommend tk, the above instead of gtk or qt, its less bloated and less dependencies and that is usually good.

https://tkdocs.com/
also the above

@mcirsta
Copy link
Contributor

mcirsta commented Oct 24, 2023

An UI is an UI. It should be fully separated from the core and optional. That's how current UIs for neosurf are implemented and that is how I want to implement the QT UI.

I have no wish to put in any web stuff from QT, nor QML or networking. It will be strictly widgets.

QT is indeed not lightweight but there's an exception. If you have a QT based DE like KDE or the lighter LXQt. Then the libraries are already there and in use.

As for TK I get it that it's lightweight but I am not familiar with it nor do I have a wish to learn it. It also gives me a bit of a 90s feeling , I can almost hear the Spice Girls singing on the radio when I see TK UIs 😁. That's not to say it would be a bad option , it's just not for me to implement.

@FrostKnight
Copy link
Author

An UI is an UI. It should be fully separated from the core and optional. That's how current UIs for neosurf are implemented and that is how I want to implement the QT UI.

I have no wish to put in any web stuff from QT, nor QML or networking. It will be strictly widgets.

QT is indeed not lightweight but there's an exception. If you have a QT based DE like KDE or the lighter LXQt. Then the libraries are already there and in use.

As for TK I get it that it's lightweight but I am not familiar with it nor do I have a wish to learn it. It also gives me a bit of a 90s feeling , I can almost hear the Spice Girls singing on the radio when I see TK UIs 😁. That's not to say it would be a bad option , it's just not for me to implement.

Fair enough, I just thought I would suggest it because its lightweight but if its too old looking, for you, no worries.

I would disagree, but then again, I think older UIs look better usually.

Such as windows 95 looks better than windows 98+

:D

Though I strictly use linux since windows 8.1.

:)

We all have our preferences eh? Thanks for clarifying though about what you intended from qt.

@mcirsta
Copy link
Contributor

mcirsta commented Oct 24, 2023

Well this is a matter of taste. Some people like retro cars and some like the new SUVs. The issue is also that I've no experience with it while I'm quite familiar with Qt.

@FrostKnight
Copy link
Author

FrostKnight commented Jan 10, 2024

Well this is a matter of taste. Some people like retro cars and some like the new SUVs. The issue is also that I've no experience with it while I'm quite familiar with Qt.

By the way, how far have you gotten to adding those features? Just curious.

Aka, the noscript and/or ublock origin like features I requested? Not that you have to, but I recall you saying it wouldn't take a lot of effort and that you didnt think it would be a problem to add. ;)

@mcirsta
Copy link
Contributor

mcirsta commented Jan 11, 2024

Well this is a matter of taste. Some people like retro cars and some like the new SUVs. The issue is also that I've no experience with it while I'm quite familiar with Qt.

By the way, how far have you gotten to adding those features? Just curious.

Aka, the noscript and/or ublock origin like features I requested? Not that you have to, but I recall you saying it wouldn't take a lot of effort and that you didnt think it would be a problem to add. ;)

I think there was a misunderstanding. I didn't mean they're easy to do. I just meant that this is easier than full extension support. It's easy maybe if you have a good knowledge of the code base which sadly I don't.

Also see the order , this is item 3 on my priority list and I've started with 1 but sadly didn't get too far. Good news though is that while I thought that the original Neosurf is not in active development anymore it seems it still is being worked on.

The developers are adding a Qt6 UI interface which means that 1 will be done upstream. I'm currently testing and integrating these changes from upstream.

That still leaves 2 which is unless it was somehow fixed upstream is a huge problem as it makes the browser very slow and not something I'd regularly use.

@FrostKnight
Copy link
Author

Would it be possible to keep qt5 compatibility and yes I did misunderstand, my bad.

@mcirsta
Copy link
Contributor

mcirsta commented Jan 11, 2024

Would it be possible to keep qt5 compatibility and yes I did misunderstand, my bad.

I also wish it were simple. Let's see. Very simple as I've said only if I knew the code base quite well.

As for Qt5 compatibility ... I don't think anyone is aiming for that. The original authors started with Qt6 for the UI and now with KDE moving to Qt6 it's only a matter of time before Qt5 becomes deprecated.
I will try to see how much the effort to backport to Qt5 is but if many things are different then it would only complicate the code to support both versions.

@FrostKnight
Copy link
Author

FrostKnight commented Jan 11, 2024

Would it be possible to keep qt5 compatibility and yes I did misunderstand, my bad.

I also wish it were simple. Let's see. Very simple as I've said only if I knew the code base quite well.

As for Qt5 compatibility ... I don't think anyone is aiming for that. The original authors started with Qt6 for the

Well you can tell me if it pans out or not as being possible.

If not, I suppose appimage could be doable if needed.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants