
Sciter – Multiplatform HTML/CSS UI Engine for Desktop and Mobile Applications - notRobot
https://sciter.com/
======
stareatgoats
This has been posted a few times to HN [0] and I've looked into it
superficially without actually trying it out. For the benefit of anyone
interested, these are my tentative conclusions. Please correct me if I've
misunderstood anything.

Sciter is a small company (single person ?) project, but the list of
enterprise clients is an assurance.

Their flavor of Javascript (TIscript) diverged from ECMAScipt more than 10
years ago, so there would be syntax switching involved when developing in
Sciter and doing normal web development in parallel. There are similar issues
with the DOM and CSS. But the list of included libraries certainly look like
it could compensate for some of that, with implementations that can mimic
modern features like promises and CSS3 transitions. [1]

Also, as far as I can see it is not truly cross-platform, i.e. it can not
easily be deployed to mobile.

Pricing (even if fair comparatively) and the closed source is also a roadblock
(for me). There was a thread by the author on Reddit some time back that
vented the idea of open-sourcing the library. That could tip the balance (for
me). [2]

[0]
[https://news.ycombinator.com/item?id=13057526](https://news.ycombinator.com/item?id=13057526)

[1] [https://sciter.com/download/](https://sciter.com/download/)

[2]
[https://www.reddit.com/r/programming/comments/a8vkzm/scitern...](https://www.reddit.com/r/programming/comments/a8vkzm/sciternode_as_an_alternative_to_electron/)

~~~
LockAndLol
Out of curiosity, do you use a rich editor or do you insert those links like
that yourself?

~~~
kroltan
Not GP, but I do that manually. Inline links often get in the way of the
content, if you're using them as reference or support material. I still use
inline links if it's central to the point of the comment.

------
cosmotic
HTML/CSS based native interfaces are some of the hardest to use, least
reliable, least accessible, least robust interfaces I encounter; The demo
interfaces on their website all fit into the unusable pot.

I admit most/all of the interfaces I've personal used are using
electron/webkit/ie to render which are all quite bloated. Is this different?
It's not entirely clear and would be an important differentiator.

I still don't understand the draw though. The best native apps look and behave
natively; using a platform like this prevents that or just makes it harder to
accomplish. Using such a platform seems like it's entirely developer-focused
and not-at-all user focused, which is a shame.

~~~
realharo
I had a similar discussion on reddit a long time ago, and posted this
screenshot of various Linux music players compared to Spotify.

[https://i.imgur.com/K44tJ2Y.png](https://i.imgur.com/K44tJ2Y.png)

Lots of native UIs (especially from the past) tend to all have the same "grey
boxes" look. I don't see how that's universally better.

Another example was this part of Slack UI
[https://i.imgur.com/O71fdP5.png](https://i.imgur.com/O71fdP5.png) \- how
would you even do something like that with a typical native library? It would
certainly take a lot more effort if you had to build that from a limited set
of pre-existing components, instead of relying on the more free-form
"rectangles and text" building blocks of the web.

~~~
jcelerier
> Lots of native UIs (especially from the past) tend to all have the same
> "grey boxes" look.

it's not "grey box", it's "uses the native theme of the user's desktop". e.g.
I use strawberry music player, if I am on a computer with a dark theme it's
dark.

Qt definitely allows slack-like look though if the developer opts-in to it -
e.g. Telegram Desktop
([https://cdn2.nextinpact.com/images/bd/news/163843.jpeg](https://cdn2.nextinpact.com/images/bd/news/163843.jpeg))
is made with Qt Widgets.

Ripcord is another Qt app which is a discord / slack client made by a single
guy, which goes more for the native look'n'feel :
[https://cancel.fm/ripcord/](https://cancel.fm/ripcord/)

(contrast this with slack needing dozens of developers and being at their
third rewrite of the app because of performance issue :-))

~~~
The_Colonel
Interesting, I just assumed Telegram Desktop is electron app since it behaves
similarly to one.

In the end I don't care how it's done as long as it works fine (which it
does).

~~~
kienkien
"behaves similarly" How?

~~~
The_Colonel
Besides Telegram, I have also electron based Rocket Chat and Slack (different
teams, different apps :/) and all these apps look and feel very similar.

Telegram uses this non-native visual language which is very common in electron
apps.

------
c-smile
Sciter's author here.

Couple of words about "native UI" and on statements like: "I (a hard-core
software developer) prefer gray boxes".

You (as a software developer), is one of 1% of UI users. But rest of us (99%,
sic!) consume UI in form of Web sites, right?

So "Native UI" these days shall look closer to default Bootstrap theme then to
something that OS provides. My wife (as an example) has Windows notebook,
iPhone and Android based book reader - "native UI" for her is meaningless at
best.

About desktop applications in general...

There are two major types of applications:

a) the ones used time to time / rarely; b) and productive applications used
24/7 - parts of job workflow.

The ones that used time to time (what I name as "one big red button
applications") must have descriptive UI - e.g. hot-keys don't work there - no
one is bothered to remember them. So the UI shall be self descriptive,
pictographic, etc. 1 second looking on window to make decision what to use.

Such applications must follow modern UI trends - who will trust antivirus if
it looks as dinosaur from prehistoric times? That's why AV vendors prefer to
use CSS, just to minimize maintenance costs, see: [https://sciter.com/from-
skeuomorph-to-flat-ui-evolution-of-o...](https://sciter.com/from-skeuomorph-
to-flat-ui-evolution-of-one-application/)

Productive applications: MS Office, Adobe Suite, even IDEs like Visual Studio,
JetBrain, SublimeText, VSCode, etc.

None of these are using "native UI" as you know. One of the reasons: "native
UI" is not expressive enough. Another reason: these are complex UI systems
with complex data model underneath and so complex update graphs. They prefer
GC-able runtime environments for those reasons. Yet there are c), d) up until
z) reasons why they do that, I can speak about that forever, e.g. Adobe Suite
must be cross-platform, right?

So when you use "native UI" please take the above into consideration.

~~~
paulryanrogers
Native to the platform is the common meaning on HN. Native to users is a good
point, though orthogonal to reasons HN users may prefer platform-native: lower
memory and CPU usage, platform style, familiar shortcuts and behavior.

~~~
c-smile
> orthogonal to reasons

That's my impression too. I suspect that those "gray boxes" talks (a.k.a.
buttons a la turrets of Panzerkampfwagen VI Tiger) are orthogonal to GUI in
general.

Yet "memory and CPU usage" is also orthogonal to HTML/CSS per se. One of
strict requirements of AntiVirus applications is to to consume as low memory
and CPU as possible. And most of AVs are using HTML/CSS UI these days. And so
Sciter code works on 600 mln PCs and Macs as a part of these applications.

In fact the main motivator why Sciter started using GPU for UI rendering was
R&D director of Norton Antivirus when high-res monitors started to arrive.
Retina monitors have 9 times more pixels to rasterize than old 96 ppi
monitors. GPU is the only option for the GUI at post-Moore era.

~~~
paulryanrogers
> And most of AVs are using HTML/CSS UI these days.

If AV background and scanner processes use those then that's yet another
reason to drop them like a bad habit. (The other reason being they increase
the attack surface area.)

~~~
c-smile
No, AV scanning has nothing with UI layer other than posting events "something
found - here are details". Even more, usually scans are done in separate
processes/daemons.

------
qwerty456127
> Various GUI frameworks offer different UI declaration and styling languages,
> such as QML and XAML (Microsoft WPF). On the contrary, Sciter allows using
> time proven, robust, and flexible HTML

What a remarkable piece of bullshit. QML and XAML have been designed from
scratch right for UI mark-up, HTML is a legacy document mark-up language we
are doomed to carry on together with gargantuan rendering engines and the
whole pandemonium of frameworks while making UIs.

~~~
c-smile
Each dinosaur was modern for its time.

And so was XAML. Time is passing and now it takes significant excavation
effort to find out a project that uses it. Git-for-desktop used to be a XAML
app, now it is an Electron app. And so on.

QML is a palliative or compromise if you wish: let's take existing widget-
tree-based UI and add some declarativeness to it at least to compete somehow
with the web tech stack flexibility and explosion of ideas. Desperate move I
would say.

As an C++ UI developer and then UI architect I was working on one project that
transitioned from pure desktop VB + native application to pure Web based app.
So "I've been there, seen that" and many times since then, all pro et contra
of all these.

At some point I've asked myself the question: "Ok, what would you add to Web
UI stack so it will be really useful on desktop?"

So I took C++ again and made the Sciter. It is a modern engine that works as
on modern high-res monitors and GPU hardware as on ancient XP machines. It
supports as retained UI as immediate ones a la ImGUI. As C++, Go, Rust, Delphi
as script. As Angular (data bound UI) and React UI (vDOM,JSX) approaches as
classic direct element tree composition from native code.

Yes, all this is using HTML/CSS vocabulary because it is a) convenient and
flexible, b) 90% of UI developers are Web developers these days and c)
HTML/CSS are here now and for generations to come.

------
cosmotic
Using 'modern' to describe the platform doesn't communicate anything to me as
a developer. Tell me what makes it modern. Tell me why its better. Is it
lighter weight? is it easier to develop with? is it better for my users? is it
less buggy than other frameworks?

------
jarym
This looks quite good and pricing seems reasonable. I wonder why I’ve not come
across it before. Anyone have experience of this vs Electron?

~~~
couchcombinator
It's not aiming for 100% compatibility to web standards. More like a familiar
way to create GUIs. Electron is a very up to date browser instance, and that
is both its strength and weakness.

------
mratsim
Assuming you want a very lightweight HTML/CSS UI engine, I think you can get
80% of the way by using webview[1].

It's very tiny (1200 lines single-header file).

I actually wouldn't be surprised if it used webview internally.

[1]: [https://github.com/zserge/webview](https://github.com/zserge/webview)

~~~
c-smile
Sciter does not use webview or any other existing browser engine
implementation. I did HTML/CSS and script engines by myself.

The only place where I intersected with WebKit and Gecko teams is at WHATWG
and then HTML WG at W3C in design of HTML5 specification and portions of CSS3.

------
vnorilo
I got the impression that it runs "Script" instead of js. So porting web apps
is not a goal (?)

Looks like something you'd use for UI in a native app.

------
tluyben2
I have never used this but something better for GUI would be great even if
commercial; what I miss (as a native GUI dev) with all(? if you know any
besides framework7 which is basically only mobile) of these html/css
frameworks is that there is no equivalent of a control library that can be
rapidly used without using (bucketloads) of css. When you browse the examples
you see that most have some desktop controls like menus etc; I don't want to
'make' those; I just want to start with a theme (Material) and (as backend
dev) _never_ touch css while still being able to make something that looks ok
and works like an actual GUI app instead of a web page. Like I can (and do) do
in native tech all the time.

Is there anything with Electron-ish apps (Sciter is preferable it seems as it
has less bloat)? I searched for instance for a desktop theme for Electron and
only found a mac os x theme which indeed works like described above but I
don't want everything to look like mac os x or windows or linux or ios or
android; either it should look native-ish (nothing beats native though) on the
platform it runs on , or it should look like something completely 'new'.

~~~
realharo
Another discussion from today (React Native Windows / Mac)
[https://news.ycombinator.com/item?id=23160075](https://news.ycombinator.com/item?id=23160075)

Not web/HTML though, uses native widgets directly (mostly).

~~~
still_grokking
>I have never used this but something better for GUI would be great even if
commercial; what I miss (as a native GUI dev) with all(? if you know any
besides framework7 which is basically only mobile) of these html/css
frameworks is that there is no equivalent of a control library that can be
rapidly used without using (bucketloads) of css. When you browse the examples
you see that most have some desktop controls like menus etc; I don't want to
'make' those; I just want to start with a theme (Material) and (as backend
dev) never touch css while still being able to make something that looks ok
and works like an actual GUI app instead of a web page. Like I can (and do) do
in native tech all the time.

In this regard even Visual Basic was far ahead of most of today's client tech.
HTML/CSS/JS are not even close to be called a serious GUI stack for
applications despite they are used for that as the Web ate the world.

------
tenaciousDaniel
I wonder why we see so many of these attempts at bringing html/css to native,
while we (or at least I) see so few examples of the inverse.

I loved creating iOS apps with autolayout. Some parts of it were a bit
frustrating, sure, but you could do things that were pretty hard with css. Why
don't we see any lib for "make an app just as if you were making it for
native, but now it runs on the web!"

~~~
stbn
Google Web Toolkit [1] does this.

[1] [http://www.gwtproject.org/](http://www.gwtproject.org/)

~~~
alexhutcheson
GWT hasn't had a new release since 2017: [http://www.gwtproject.org/release-
notes.html](http://www.gwtproject.org/release-notes.html)

------
LockAndLol
So did they write their own layout and JS engine? Or does this use Blink /
another dependency under the hood?

I found this [https://sciter.com/developers/engine-
architecture/](https://sciter.com/developers/engine-architecture/) but it
doesn't say if it's all written from scratch or using other libs.

~~~
tomku
It's completely written from scratch, and does not aim for compliance with web
standards.

------
edandersen
Using screenshots of Norton Internet Security is not good marketing.

~~~
fredsanford
The first time I saw that goofy symantec UI 10 or more years ago I named it
the clownterface...

And quickly uninstalled it. A supposed "enterprise" application that makes
your whole machine unstable.

------
naasking
Speaking of UI, please set a max-width on your text. My eyes shouldn't have to
scan across my whole screen to read your intro blurb. I'm now using the Just
Read addon to read your site.

------
adev_
Does anyone know if there is any plan to port that on Mobile ( iOs / Android )
? That would be a killer feature.

Even if I am not sure it would be even legal to port that to iOS with Apple's
restrictions on the Web Engines they accept in the Store.

~~~
c-smile
It works on Android: [https://sciter.com/sciter-lite-is-
published/](https://sciter.com/sciter-lite-is-published/) and I have internal
builds for iOS.

For the moment it is available only as a static lib to be linked into an
application.

I am trying to come up with a runtime model that will allow to build
applications as simple as

> sciter-build /ui/res/folder -platform="xxx"

------
zerof1l
My main concern with this would be the security and W3 standard support.
Browser engines and whatnot do make your life easy, but they add a lot of
attack vectors. Also the support for W3 standard is usually limited and
incomplete. Also it seems that the engine itself is distributed as binary
only? I can't find source anywhere. That's a -1 for security.

~~~
kevingadd
From browsing the docs, it looks like scripts can open sockets so it makes it
much easier to jump from exploiting an app's Sciter frontend to attacking
other targets

~~~
c-smile
These functions are off by default, check: [https://sciter.com/security-in-
sciter-based-applications/](https://sciter.com/security-in-sciter-based-
applications/)

Even more, you can compile Sciter without them completely.

