This is absolutely fantastic!!! A common impediment I've heard regarding why Julia is not adopted for more general/web programming is it's lack of GUI and other general toolkits/libraries.
This will help immensely I think. Have you considered adding facilities to wrap arbitrary JS libraries ala R's HTML Widgets <http://www.htmlwidgets.org/>? Or does this not go along with the server side philosophy? On Monday, June 8, 2015 at 12:23:21 PM UTC-4, Shashi Gowda wrote: > > 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. >
