Ultralight - a more lightweight webkit

For discussions about programming, programming questions/advice, and projects that don't really have anything to do with Puppy.
Post Reply
Message
Author
User avatar
sc0ttman
Posts: 2812
Joined: Wed 16 Sep 2009, 05:44
Location: UK

Ultralight - a more lightweight webkit

#1 Post by sc0ttman »

Homepage: https://ultralig.ht

Repo: https://github.com/ultralight-ux/Ultralight
Ultralight— a lightweight, pure-GPU, HTML UI renderer for native apps

Lighter is better.

We started over with WebKit, stripped it to the bare-minimum, then rebuilt it from scratch with an eye towards embedding. The result is a fast, lightweight, low-memory HTML UI solution that blends the power of Chromium with the small footprint of Native UI.
Docs: https://docs.ultralig.ht/docs

From the repo:
Welcome to the Ultralight Universal SDK!

This package contains everything you need to start building cross-platform HTML apps.

What is Ultralight?

Ultralight is a lightweight, pure-GPU, HTML rendering engine for native apps. Our aim is to provide support for the majority of the HTML5/CSS/JavaScript spec while still being as lightweight (in binary size and memory usage) as possible.

The motivation for this project stemmed from the observation that Chromium and other layout engines have become suboptimal for use in desktop app UI due to a separate set of design goals (running untrusted code, favoring performance at the cost of memory, the need to support every web platform feature under the sun, etc.).
Horrible licensing though (but we are not for profit):
Licensing

Ultralight is free for non-commercial use, and free for commercial use by small indies (<$100K annual revenue). For info regarding pricing/terms for larger commercial projects please email adam@ultralig.ht.

This project also uses LGPL code (the AppCore and WebCore modules)-- source is provided in adjacent repositories. You can use these modules in your code without being forced to release your code under LGPL as long as you A) link dynamically and B) release the source to any modifications you make.
[b][url=https://bit.ly/2KjtxoD]Pkg[/url], [url=https://bit.ly/2U6dzxV]mdsh[/url], [url=https://bit.ly/2G49OE8]Woofy[/url], [url=http://goo.gl/bzBU1]Akita[/url], [url=http://goo.gl/SO5ug]VLC-GTK[/url], [url=https://tiny.cc/c2hnfz]Search[/url][/b]

mistfire
Posts: 1411
Joined: Wed 05 Nov 2008, 00:35
Location: PH

#2 Post by mistfire »

Does it play html5 videos and audios?
Does it work nicely on google, github, youtube, and facebook website?

User avatar
sc0ttman
Posts: 2812
Joined: Wed 16 Sep 2009, 05:44
Location: UK

#3 Post by sc0ttman »

mistfire wrote:Does it play html5 videos and audios?
Does it work nicely on google, github, youtube, and facebook website?
Apparently - it is webkit after all.. therefore it should support HTML5, CSS 3, Javascript ES6.. Like any modern browser.
[b][url=https://bit.ly/2KjtxoD]Pkg[/url], [url=https://bit.ly/2U6dzxV]mdsh[/url], [url=https://bit.ly/2G49OE8]Woofy[/url], [url=http://goo.gl/bzBU1]Akita[/url], [url=http://goo.gl/SO5ug]VLC-GTK[/url], [url=https://tiny.cc/c2hnfz]Search[/url][/b]

oui

#4 Post by oui »

Hi Sc0ttmann

Thank you for the info!

But what can I do myself to use it: The frontend software for the enduser require commonly a concrete level of "kit or box software" to work(the same thing as for a C compiler for ex.: the French programmer having created qemu did also create a lightweight or tiny C compiler, but no success because the environments of other applications software generally are not willng to start their development at that low level!).

I would like to use a more modern version of xombrero or midori (they are both only tiny frontend, else midori, compared with other modern browser). but can I use such lightweight webkit as base of those?

User avatar
sc0ttman
Posts: 2812
Joined: Wed 16 Sep 2009, 05:44
Location: UK

#5 Post by sc0ttman »

I don't know how possible it would be to embed this in an existing project like Midori.

But my intention for this would be to build a very simple program - a "borderless" viewport... like a browser with no buttons, no menus, just a window.

It would take one argument, the URL you want to load.

Code: Select all

webview <url>
[b][url=https://bit.ly/2KjtxoD]Pkg[/url], [url=https://bit.ly/2U6dzxV]mdsh[/url], [url=https://bit.ly/2G49OE8]Woofy[/url], [url=http://goo.gl/bzBU1]Akita[/url], [url=http://goo.gl/SO5ug]VLC-GTK[/url], [url=https://tiny.cc/c2hnfz]Search[/url][/b]

lmemsm
Posts: 51
Joined: Wed 27 Jun 2012, 15:01

#6 Post by lmemsm »

Wonder what they did to make the webcore code lighter than what's already in webkit. It actually looked like more code and dependencies than some of the older webkit versions need. If you want a less restrictive license, I'd recommend starting with webkit as used by Fifth browser ( https://github.com/clbr/fifth ) or Netrider ( https://sourceforge.net/projects/netrider/ ). The Netrider project even supplies some simple example web browser interfaces using SDL and FLTK or you can use it from the command line. I've done some work with wkccc from Netrider. Instead of DirectX or OpenGL, the earlier version of the wkccc library from Netrider uses Google's skia library which is fairly lightweight. It also doesn't require Ruby to build. Later versions of webkit added that dependency. If someone wanted to really clean up the code and simplify it, they could remove the Python, Perl and Ruby dependencies and substitute C code that does the same thing. In the case of the Ruby code, it's just used to generate a C file anyway.

The only problem with older versions of webkit is that they may not support web sockets and I think there will be more web sites using this in the future.

User avatar
sc0ttman
Posts: 2812
Joined: Wed 16 Sep 2009, 05:44
Location: UK

#7 Post by sc0ttman »

Have you had any luck compiling any of those?

I have failed to compile basically every single "minimal webkit window" thing that I tried (on Dpup Stretch RC2) ..

I got one to work, a Python based one, but it is a bit too buggy for use...

All I really want is a "chromeless" (borderless, no menus) HTML5, CSS3, JS ES5 (or ideally ES6) based webkit viewport thing that I can pass a URL to.

Then we can create loads of web based GUIs, running of localhost .. including nice documentation thing, a "software center" (a web based frontend for Pkg), and more...
[b][url=https://bit.ly/2KjtxoD]Pkg[/url], [url=https://bit.ly/2U6dzxV]mdsh[/url], [url=https://bit.ly/2G49OE8]Woofy[/url], [url=http://goo.gl/bzBU1]Akita[/url], [url=http://goo.gl/SO5ug]VLC-GTK[/url], [url=https://tiny.cc/c2hnfz]Search[/url][/b]

lmemsm
Posts: 51
Joined: Wed 27 Jun 2012, 15:01

#8 Post by lmemsm »

I definitely got wkccc to build. Still have the build scripts. However, if I remember correctly, when I updated my compiler, I was having issues with it crashing. Worked fine with earlier GNU compilers though. Seems the webkit developers did some non-standard C++ coding in some of the earlier versions. Current version of netrider uses a later version of webkit that doesn't have that problem. Haven't tried building it yet because it uses a different set of dependencies.

lmemsm
Posts: 51
Joined: Wed 27 Jun 2012, 15:01

#9 Post by lmemsm »

Since you mentioned web based GUIs, thought I'd share the links on some similar work I did a while ago:
http://www.distasis.com/cpp/lmbld.htm#lmbldui

Was looking into using a web browser as a front-end for quick development as well. That was the main reason I was investigating using wkccc. Was also hoping it would support HTML to PDF generation like wkhtmltopdf can do. However, skia doesn't seem to allow for that functionality.

I think I've given up on the web front-end idea for now and am going back to a much earlier idea I had for building quick GUIs. I'm working on getting it implemented with SDL and/or OpenGL/PicoGL. It's not going to be a fast project to complete, but I think it'll have better support for launching and integrating applications than a web browser based GUI.

lmemsm
Posts: 51
Joined: Wed 27 Jun 2012, 15:01

#10 Post by lmemsm »

I also ran across a couple of projects that were created to make fast cross-platform apps using browser technologies:
https://electronjs.org/
https://nwjs.io/

User avatar
sc0ttman
Posts: 2812
Joined: Wed 16 Sep 2009, 05:44
Location: UK

#11 Post by sc0ttman »

Yeah both of those require nodejs - Min is a browser built with Election, I use it .. It's ok, but electron stuff is a little crap in terms of performance..

I haven't built anything with nwjs, but keep meaning to, to test it out.

Note there is also this: LCUI (http://murga-linux.com/puppy/viewtopic.php?t=117429 )

And this (looks most promising to me) https://github.com/zserge/webview
[b][url=https://bit.ly/2KjtxoD]Pkg[/url], [url=https://bit.ly/2U6dzxV]mdsh[/url], [url=https://bit.ly/2G49OE8]Woofy[/url], [url=http://goo.gl/bzBU1]Akita[/url], [url=http://goo.gl/SO5ug]VLC-GTK[/url], [url=https://tiny.cc/c2hnfz]Search[/url][/b]

Post Reply