Sciter. Part I. So what is the Sciter anyway?

Hard to say… Sciter is an Offline Web Application Client (I can feel smell of tautology in Offline Web). In other words it is Excution Environment for Occassionally Connected Web Applications. (Last definition is significantly better, isn’t it?)

And here goes the same as above but in plain English (or in what I assume is English) language:

You may think about the Sciter as a Web client application (some smart people use name User Agent – UA) of special kind. “Special” here means that Sciter as a web client is capable to work in offline (disconnected) mode too. What’s the deal you will ask? Everyone can click on icon of his/her favorite UA and browse pages stored on his/her local drive. But… this is pretty much all of what you can do with standard UA. Not too much, isn’t it?

Physically Sciter is a mono executable (sciter.exe) which contains:
  • HTML and CSS rendering engine based on the H-SMILE core used in our HTMLayout,
  • JavaScript alike Scripting engine – core of our TIScript which by itself is based on my c-smile engine,
  • Persistent Database ( a.k.a. JSON DB ) based on excellent DB products of Konstantin Knizhnik.
  • Graphics module using excellent AGG library of Maxim Shemanarev at www.antigrain.com.
  • Network communication module, it relies on Libcurl, the Great.

Mono executable here means that Sciter (sciter.exe per se) does not require any installation – it is self sufficient. Just copy it on, say, your favorite memory stick and it is ready to go.

Occasionally connected, eh?

Consider this: you have a bug tracking database as a web application. Web application means that data resides on the server and if there is no connection available at the moment you cannot do anything other than creatively play mines.exe. Ideal implementation of a client for such bug tracking system should be capable to store data locally and should allow you to work with them locally. When you will be connected next time client shall synchronize your data with the server. Nothing new in this schema – mobile devices are already using by the name “synchronization”. So was the requirement: Â Sciter as a Web client shall be able to support offline mode of operation.

“Who are YOU?” said the Caterpillar…

Mostly we are readers on the Net but sometimes we do need to update it – to become writers. This update happens in various ways: writing in blogs, filling guests books, posting in forums – you name it. These are relatively simple and episodic tasks and do not require special equipment or software other than your favorite browser. But there is a pretty big crowd of people who are doing content editing of the Web professionally and this category of us do require something more flexible and convenient than just a browser. So is the Sciter. I hope that it can help in this area too. At least this is one of its design goals.

RPC, AJAX, JSON, HTTP, POP3, SMTP and their friends

I beleive everyone who is doing Internet programming these days knows what AJAX means. For others: AJAX is a method of sending asynchronous (and synchronous, by the way, too) requests from the client to the server. But nothing new under the Moon. Client/Server systems and Remote Procedure Calls (RPC) were here from the very beginning. Essentially AJAX is an RPC method for the client (document loaded in the browser) to call functions on the web server.

Need of AJAX these days is critical – web pages (read: web applications) become more and more complicated – heavier. Traditional method of sending from server to the client whole UI of the application (web page is that UI) is just does not work even on broadband connections. Other aspect of web pages complexity – to parse and build DOM of such pages is significant computational task. So it is computationally expensive to reload each time the page when you just need to update one field on the form somewhere inside the page.

So what Sciter can do here? Sciter allows you to deliver web application (system of html pages, CSS definitions, scripts and resources like images) on the client once and invoke them multiple times without need of downloading all stuff again and again. Sciter also has built-in and native AJAX and JSON support allowing you to run real client server applications in it. Sciter allows you to establish direct socket connection and get information using lets say POP3 e-mail protocol (as many other text stream protocols).