Hello all!

I have been working on a package called *Escher* over the past several
months.

It is now quite feature-rich and ready to use in some sense. I put together
an overview here:

       https://shashi.github.io/Escher.jl/*

My aim is to converge at a UI toolkit that any Julia programmer can use to
create rich interactive GUIs and deploy them over the web, *within minutes*.

Escher simplifies the web platform into a simple and pleasant pure-Julia
library. You don't need to learn or write HTML or CSS or JavaScript. Many
problems associated with traditional web development basically disappear.
There is no need to write separate front-end and back-end code, layouts are
tractable and similar to layouts in the original TeX. Communication is done
under-the-hood as and when required. No boiler plate code. Things just look
great by default.

Briefly, here is how Escher works under the hood:

- A UI is an immutable Julia value that is converted to a Virtual DOM
<http://en.wikipedia.org/wiki/React_%28JavaScript_library%29#Virtual_DOM>
using the Patchwork <https://github.com/shashi/Patchwork.jl> library.
  Compose graphics and Gadfly plots also get rendered to Virtual DOM as
well.
- Subsequent updates to a UI are sent as patches to the current UI over a
websocket connection
- Input widgets send messages to the server over the same websocket
connection
- Complex things like tabs, slideshows, code editor, TeX and dropdown menus
are set up as custom HTML elements using the Web Component
<http://webcomponents.org/> specification, mainly using the Polymer library
<http://polymer-project.org/>. These things are just Virtual DOM nodes in
the end.


This is still a work in progress, I am very happy to receive any critique
on this thread, and bug reports on Github
<https://github.com/shashi/Escher.jl>. I am very excited to see what you
will create with Escher.

Thanks! :)
Shashi

* - Escher uses some bleeding-edge Web features, this page might not work
so well on Safari, should work well on a decently new Chrome, and on
Firefox if you wait for long enough for all the assets to load. I will be
fixing this in due time, and also working on a cross-browser testing
framework.

PS: I have been dealing with RSI issues of late and my hands will
appreciate any help with expanding the documentation! See
https://github.com/shashi/Escher.jl/issues/26 if you wish to help.

Reply via email to