11 ms·
C++ Lightweight, cross-platform, HTML rendering engine for desktop apps
- zelly 6y agoSeems kind of misleading to post a github link that contains no code and it's actually nonfree software
- saagarjha 6y agoThis seems like it’s based on WebKit, parts of which are LGPL. Did they not modify it at all? (If so, why should I use this?) If they did, where is the code? Edit: I think it’s at https://github.com/ultralight-ux/WebCore https://github.com/ultralight-ux/WebCore.
- adamjs 6y agoUL uses a fork of WebCore/JavaScriptCore (the layout engine and JavaScript engine from WebKit). It is indeed modified (been working on it 7 years) and released open-source on GitHub.
- genocidicbunny 6y agoI noticed that the old Awesomium domains now redirect to the UL page. Is UL an evolution of Awesomium, or did you sort of start anew?
- adamjs 6y agoYep, We hit a wall when developing Awesomium-- long story short, the vision for Chromium long-term didn't match with our design goals so we announced to the community that we're starting over with something new (which turned out to be a minimal WebKit-port, eg. Ultralight). From a business standpoint, we were offering paid commercial support for not just Awesomium but all the Chromium-related parts and that surface area had grown to be way too large to be maintainable. For the product to succeed we had to refocus efforts on building a solution we could fully own and met the requirements of our core market-- and that took about 6 years of R&D.
- viach 6y agoThe code is there, but not all of it, as I understood - except the "Proprietary GPU Renderer". And yes - "Ultralight is free for non-commercial use and free for commercial use by companies with less than $100K gross annual revenue"
- saagarjha 6y agoGitHub says the project is 100% CMake, and I didn’t see anything to make it ignore the large amount of C++ that I would expect to underlie this project. Do you know where I could find the parts you’re talking about? Edit: I found it, it’s in another repository at https://github.com/ultralight-ux/WebCore https://github.com/ultralight-ux/WebCore.
- austincheney 6y agoYou didn't look very hard. The commit message on the cMake.txt says: > Pruned repo history to get rid of 200MB of stale binaries. Repo has now been restructured to pull binaries in from S3 buckets during CMake build.
- saagarjha 6y agoThose would be binaries, which I am not interested in. However, I did find the source I was looking for.
- monadic2 6y ago> GPU Renderer That seems rather important.
- Rochus 6y agoNot all code is there. The website https://ultralig.ht/ https://ultralig.ht/ says "No source code for proprietary modules" for the free version. If you want to use the technology in your free application then you tnerefore have to depend on a proprietary closed-source library. And as it seems only to save a bit of RAM. Better use Qt.
- michannne 6y agoEspecially ridiculous considering they have a site, a very professional one, at that
- kristopolous 6y agoIt's a shameless and transparent marketing play. People will click on a GitHub link. This is manufactured hn clickbait. I've never flagged before but this one deserves it I wish them well and the technology may be great, but trying to play hn like that is not welcome.
- productionx 6y agoNoticed first comment, reviewed scope of project to place this being nearly identical to other project of which have availability to commercial use by default. Confirmed clickbait.
- adamjs 6y agoLead dev of UL here, we didn't post the link, and our GitHub repo is def not clickbait (the top-level repo is just the packager and samples), 90% of our code is open-source under LGPL and available on GitHub [1], [2]. The product as a whole is under a proprietary, non-free license with provisions for usage in free software [3]. * [1] https://github.com/ultralight-ux/WebCore https://github.com/ultralight-ux/WebCore * [2] https://github.com/ultralight-ux/AppCore https://github.com/ultralight-ux/AppCore * [3] https://ultralig.ht https://ultralig.ht
- michannne 6y agoThanks for the clarification!
- adamjs 6y agoSomebody just posted our top-level packager GitHub repo to HN instead of our website. (And hey thanks! I wrote that by hand a few months ago :))
- bioipbiop 6y agoThe code is available under other repos on their account.
- ecmascript 6y agoAltough, their pricing is very fair imo. Free for non-commercial use. Free* for use by companies with less than $100K annual gross revenue.
- Rochus 6y agoThe website https://ultralig.ht/ https://ultralig.ht/ says "No source code for proprietary modules." for the free version. So it's technically not an open source project and therefore not a suitable candidate for my projects. Anyway the sole core benefit proposition compared to chrome seems to be less memory use.
- adamjs 6y agoHi there, lead dev of UL here (we didn't post the link, HN just found our beta :)). That top-level repo is just our packager/samples, 90% of our code is open-source and available on GitHub (released under LGPL), see our WebCore [1] and AppCore [2] modules. The product as a whole contains two proprietary modules which are indeed non-free but allow free use in non-commercial and commercial projects up to $100K in gross revenue. * [1] https://github.com/ultralight-ux/WebCore https://github.com/ultralight-ux/WebCore * [2] https://github.com/ultralight-ux/AppCore https://github.com/ultralight-ux/AppCore
- rcarmo 6y agoThere should be a list of Electron alternatives somewhere. This looks like a promising start, at least.
- ilkkao 6y agoThis lead me to think that there are huge amount of legacy HTML functionality that Electron could potentially drop if it was possible. Electron doesn't really need to care about breaking the web. So there's definitely room for alternatives.
- michaelchisari 6y agoA strict subset, chosen for the greatest intersection of flexibility for developers, simplicity and performance with good documentation on how to write directly for it might go over well. The hardest part for maintainers would be saying no when everyone inevitably asks to expand the feature-set.
- diegoperini 6y agoIf we choose a year as a checkpoint to start deprecating old web technology without sacrificing functionality, which one would be the reasonable pick?
- sime2009 6y agoThere probably is a lot of legacy stuff in there but I suspect that most of it is deeply integrated into the needed functionality. That said, I suspect that many of the more modern JS APIs which are organised as separate modules are much easier to exclude when building something like Electron. I'm talking about these kinds of APIs: https://developer.mozilla.org/en-US/docs/Web/API https://developer.mozilla.org/en-US/docs/Web/API Many APIs there to exposed things from deep inside the rendering engine, but there are still plenty left which are likely separate, like Bluetooth, Gamepad, Ambient Light, Beacon, IndexedDB, Image Capture, Geolocation, Payment request, Web Audio, etc. Builds of Electron with exotic APIs removed could be good although I'm sceptical of whether that would bring the run-time memory use down much, i.e. what (API) you don't use, didn't hurt you anyway.
- codegladiator 6y agoWow this is great. > https://forum.ultralig.ht/t/community-language-bindings/20 https://forum.ultralig.ht/t/community-language-bindings/20 ``` Several awesome members of our community have created bindings for other languages! Check them out below: C# – https://github.com/ImpromptuNinjas/UltralightSharp 104 Rust (High Level) – https://github.com/psychonautwiki/rust-ul 21 Rust (Low Level) – https://github.com/psychonautwiki/rust-ul-sys 7 Java – https://github.com/Janrupf/ultralight-java 10 Go (High Level, Framework) – https://github.com/ImVexed/muon 22 Go (Low Level)-- https://github.com/raff/ultralight-go 19 Let me know if I’m missing any and I’ll add it to this sticky!```
- fwsgonzo 6y agoThis looks very promising. Will there be PS4/PS5 support, or is that not under consideration?
- shubham_sinha 6y agohttps://github.com/vlang/ui https://github.com/vlang/ui also seems promising and more targeted to devs who're more comfortable with go lang
- newsbinator 6y agoTheir pricing model could be adjusted. It doesn't make sense to charge $2000/yr for an app that makes $1 of revenue.
- jashmatthews 6y ago$1 revenue startups pay $0. $100k+ revenue startups have to pay $2k for the commercial license. Seems fair to me.
- newsbinator 6y agoAh under Single Title license it says: > $0K - $500K : $2000 But under Free License it says: > Free for non-commercial use. > Free* for use by companies with less than $100K annual gross revenue Got confused.
- ecmascript 6y agoI think that is if you want the additional stuff like support. You can still have $5 in revenue and purchase a license, that will make you fall into the first category and have to pay $2000. You don't have to purchase a license, but you can if you want.
- adamjs 6y agoYep, this is correct! I'll update website pricing to make this more clear.
- unnouinceput 6y agoIsn't that called a browser and already exists? How is this one different?
- cromulent 6y agoMy understanding: It's common to use Electron to build cross-platform desktop apps, but that basically ships a browser and a web server inside every app, so it takes a lot of resources. This is a lightweight alternative.
- unnouinceput 6y agoIf I am to locally run some HTML + CSS + Javascript app, isn't it better to just give my clients exactly some HTML + CSS + Javascript files and let them use their preferred browser to use it? As for Electron, each time I see those types of applications, they are uninstalled faster then light. One reason why I stopped used Skype in 2014, they made it Electron app. Never looked back.
- nodefourtytwo 6y agoHow does it compare to Revery[1]? Onivim2[2] is built with it and it seems great. [1] https://www.outrunlabs.com/revery/ https://www.outrunlabs.com/revery/ [2] https://v2.onivim.io/ https://v2.onivim.io/
- sunflowerdeath 6y agoRevery is fully native and doesn't use parts of web platform. It uses ReasonML, that is dialect of OCaml and has its own implementation of platform and renderer.
- jamesu 6y agoIn the realm of lightweight html renderers I've taken a liking to litehtml ( https://github.com/litehtml/litehtml https://github.com/litehtml/litehtml ) - though it isn't quite as fully featured as this.
- minus7 6y agoProprietary renderer (not even source-available; Linux binaries linked against god knows what version of libc, libstdc++, etc) ontop of WebKit? No thanks. Edit: I mean, sure, you could use it in your proprietary Electron app to make it more lightweight. At least on Windows, macOS and some Linuxes, the rest of users is left out then, but those free software enthusiasts are unlikely to use your software anyway.
- swiley 6y agoA lot of people really don’t seem to get that users rejecting Linux binaries isn’t just them being idealist, it’s also a big usability thing.
- rsp1984 6y agoUltralight is free for non-commercial use and free for commercial use by companies with less than $100K gross annual revenue. Something that I have always asked myself is: If the code is open source, how would it ever be possible to enforce such a licensing model?
- gridlockd 6y agoIt isn't open-source in the "FOSS" sense. You can't have such terms in a FOSS license. However, you can have parts of a codebase be FOSS licensed, if the license is compatible with non-FOSS code. BSD, MIT and Apache licenses allow this, copyleft licenses like the GPL don't.
- johannes1234321 6y agoGPL (and others) allow such a model as well. There is nothing in the GPL preventing me from selling for as much as I like. The buyer however has to receive the source code (upon request) and can share it for free (as in beer) if they like.
- gridlockd 6y agoI'm taking about using a license that has provisions such as "can only be used for free by entities with less than $100,000 in revenue" (this case) or "must not be used for evil" (jslint). Such a license would not be considered a free software license, because it restricts the use: https://opensource.org/osd.html https://opensource.org/osd.html As a result, the license would be incompatible with copyleft licenses. Of course, you could kindly ask your "customers" to please pay for a license in case they're using the software for some purpose. Good Luck with that.
- Tarq0n 6y agoThat definition is really ambiguous for government use, I wish people would address that specifically in these clauses.
- Rochus 6y ago
- sunflowerdeath 6y agoIt looks strange to me that it tries to use HTML, because then it should be compatible with Web APIs and should render the same. Then it would be basically a browser, not very different from what is used today in Electron. But if it will differ from Web platform, why not to just make lightweight alternative DOM-like API.
- formerly_proven 6y agoBeen there, done that. Qt has had a renderer for a reasonable subset of HTML4 and CSS2 since the Qt 3(?) days. If you see a Qt app and there's colored text or bold/italics inside a label or editor, that's all done using that flavor of HTML. It gets rendered through the standard QPainter engine.
- dusted 6y ago9 MiB is lightweight?
- gridlockd 6y agoThat's RAM usage. Not sure what this measures, but a single Full-HD backbuffer at 32bpp is already 8MiB.
- miki123211 6y agoHow does the accessibility story look like? If there's no accesibility, the usual disclaimers apply, get legal advice before building anything professional with it. Be aware of not just current laws, but future ones, especially those we definitely know are coming.
- nlitened 6y agoHonest question — do I really get into jail or get sued for high penalties if a small tools I make for my clients are not "accessible" by any measure?
- diegoperini 6y agoProbably yes if you "insist" on staying not accessible.
- eps 6y agoNo, nobody would bother.
- gostsamo 6y agoCompanies are obliged to provide necessary tools to their employees to perform the tasks that they are hired to perform. This includes accessible tools for people with disabilities as enforced in most legal systems. If your tool is not accessible, companies cannot meet this obligation and will choose a competitor who does.
- badsectoracula 6y agoNo developer is going to be sued for their application having no accessibility features. The one who might be sued is an employer forcing some employee to use the software to perform their task without any other alternative, essentially making it impossible for that task to be performed by that employee. Unless you are in a position to cause this, you are not going to be affected (and even then, you getting sued is very unlikely unless you are said employer). In practice the worst that can happen to you is people with accessibility needs not using your software.
- 6y ago
- twoslide 6y agoIf you're writing desktop apps using an HTML/CSS interface, I wonder if "lightweight" is really a concern? I don't work on any such projects, but I'd probably prefer something established with a community (electron) if the only advantage is size (they mention memory usage too, but no specifics).
- adamjs 6y agoIt's definitely still a concern! And our community is growing (come check out our Discord [1]). Our advantages are much more than memory usage-- it's also distributable size, low-level integration, single-process mode (no external renderer processes), GPU rasterization (and integration into custom GPU drivers), and custom modification of the library itself (most of the library is open-source and on GitHub-- it's much more amenable to "hacking" on than Chromium so it's a better fit if you need a custom HTML rendering solution than Electron). We're still building out our desktop app runtime (AppCore) to match the API of Electron, but the low-level renderer is already finding a solid foothold inside of games (PC, macOS, and consoles) and headless server renderers. * [1] https://chat.ultralig.ht https://chat.ultralig.ht
- pornel 6y agoI hoped Servo would fill that niche. It's nearly impossible to write a new browser engine that is compatible with all the legacy mess on the wild web, but for packaged webapps a modern minimal engine is exactly what they need.
- Tarq0n 6y agoServo isn't necessarily dead, though it is ambitious for a community-run project. There's still activity on the repo.
- antonyh 6y agoA few things strike me immediately here: 1. Whole sections of the license are missing, such as section 5 - it's just not possible to agree to something in this state. 2. It's governed by the laws of Texas, so internationally that's not going to work - I'd have to hire a lawyer just to figure out what this means 3. Most importantly, I've no idea why I'd want to use this over embedding Chrome or Servo. 4. There's no ARM support. So no use on RPi, and potentially no use on Mac OS on Apple Silicon, depending on the secret sauce used. That's before I even start to dig deeper - is it thread safe? Can it fall back to software renderer if needed? Will it be contentious for the GPU with other code that wants to use it? Only the C & C++ bindings are official, the others are 'community maintained'. Whatever that means. What I don't get, is why couldn't a dev team just embed WebKit directly - what does this really give? Can it put a browser in game in 3D, or is it a 2D overlay? Will it work with VR / AR? The website makes a big deal over memory usage, which might be important in some cases, but what about CPU cycles? GPU cycles? Latency? Impact on framerate? Compatibility with Unreal, Unity, Godot, other engines? I think it's a good project, but there's a lot of considerations before I'd even download for experiments.
- KenanSulayman 6y ago1. Valid point. 2. ? 3. Chrome (or more specifically CEF -- Chromium Embedded Framework, the one used by Spotify et al.) is significantly more heavy than UL. Memory use is massive. Google doesn't care about API stability and ABI breakage is so common you'll have to keep up with all API changes (the ones published and documented anyway...) to get anything done. Good luck embedding Servo! 4. ARM support is coming. --- > the others are 'community maintained'. Whatever that means. I maintain the Rust binding to Ultralight [0] via the CAPI to provide an ergonomic way for people to work with it. Adam is busy improving Ultralight itself, so I find it worthwhile to maintain it. That's what it means. [0] https://github.com/psychonautwiki/rust-ul https://github.com/psychonautwiki/rust-ul
- OskarS 6y ago> Good luck embedding Servo! You know, it doesn't really seem that hard to embed Servo in a Rust application [0]. It's a pretty interesting read. Anyone know how stable Servo is for this kind of thing? It's not uninteresting as a cross-platform GUI solution or as more lightweight alternative to CEF (assuming it is more lightweight, I haven't done the science on it or anything). Given that you have total control over everything it renders, it's not massively important if it's not 100% HTML compliant or whatever. Interesting space to watch for the future. Hopefully the Mozilla layoffs don't doom Servo. [0]: https://github.com/paulrouget/servo-embedding-example https://github.com/paulrouget/servo-embedding-example
- sradman 6y agoAccording to the Architecture section of the GitHub page [1]: > Ultralight is a new port of WebKit combined with a new [proprietary] lightweight renderer intended specifically for embedding in apps and games. And the Licensing section: > Ultralight is free for non-commercial use and free for commercial use by companies with less than $100K gross annual revenue. For more info see LICENSE.txt Pricing [2] is available from the main web site. [1] https://github.com/ultralight-ux/Ultralight#architecture https://github.com/ultralight-ux/Ultralight#architecture [2] https://ultralig.ht/#pricing https://ultralig.ht/#pricing
- qppo 6y agoWhat ever happened to Awesomium? Wasn't that more or less the same project by the same author?
- genocidicbunny 6y agoI'm pretty sure this is what Awesomium became. When I last looked into Awesomium (like 8 years ago now) its development seemed to have stagnated and the developer was trying to find a way to monetize it.
- qppo 6y agoIIRC he shutdown the website and abandoned twitter leaving paying customers high and dry. There was some talk of it last time this project made the forum rounds.
- genocidicbunny 6y agoI'd like to find out more about this, because I haven't heard of that at all. That I haven't heard is not surprising though as I last looked at Awesomium a very long time ago.
- adamjs 6y agoGave more clarification on this in a reply to parent comment.
- adamjs 6y agoHi there, author of UL and Awesomium here. We didn't abandon anything, we announced to the community that we were stopping development of Awesomium (our previous Chromium fork), are going to build something new (which turned out to be UL, I wrote the rationale elsewhere in this thread), and continued to support our paid customers for years after (all licenses came with a 1 year annual support contract with option to renew, we would be in contract violation if we didn't). We did stop maintaining the free online support community which I think is where this sentiment came form. Users were upset that there were no new versions of Awesomium and there was a 4 year gap before the first alpha of Ultralight was released which left a number of users rightfully annoyed. I personally couldn't promise that were _would_ be a successor project since Ultralight was so experimental (the GPU renderer alone took about 4 years to get working on all platforms). That lack of communication and subsequent gap in updates is what led users to believe the project was abandonware (luckily, I'm here to say it isn't and we're still alive!). FWIW, Ultralight was actually built in tandem using internal feedback from our existing customers. Many of our current users are ex-Awesomium users.
- rawoke083600 6y agoFor once I want to see "heavyweight" in the sales line... Just to see how it compares to all these "lightweight" offerings. Once you add in all the corner cases and bug fixes it seldom stays "lightweight". Good job on releasing it though.
- jakearmitage 6y agoIf you are considering something like this for games, try: https://github.com/mikke89/RmlUi/ https://github.com/mikke89/RmlUi/ or for apps: https://sciter.com/ https://sciter.com/
- c-smile 6y agoSciter works just fine in games. Sciter.Lite (windowless engine) was designed exactly for that. Here it runs in Unreal Engine: https://sciter.com/see-sciter-lite-unreal-engine-in-theaters-near-you/ https://sciter.com/see-sciter-lite-unreal-engine-in-theaters... - HTML/CSS primitives are rendered directly into DirectX surface controlled by Unreal.
- gigel82 6y agoWhy is this thing on GitHub if it's not an open source project? Seems very misleading.
- niutech 6y agoPrevious thread: https://news.ycombinator.com/item?id=17733515 https://news.ycombinator.com/item?id=17733515