On Fri, May 3, 2013 at 9:13 AM, Jony Hudson <jony.hud...@imperial.ac.uk>wrote:
> ... I guess I think of my thing as an experiment in just how much can be > done purely in the web client. There are some advantages to pure > client-side (rich interactivity, no need for a server, ubiquity) which make > it interesting, > I completely agree. Added to that list, depending on implementation of course, are direct control of the DOM via R code (allowing statisticians to script entire pages using a language they are more comfortable with), the use of R functions directly as event handlers, including for super high-frequency events such as mousemove (which is infeasible in server based approaches due to the required round-trip), and interactive versions of actual R plots (drawn with standard R plotting code), drawn directly to the page via graphics devices which draw primitives via Javascript, among other things As you can probably tell, I have thought a bit about this :) I feel that client-side approaches have a lot of value and can stand alongside server-based approaches. Each approach type has different advantages and disadvantages, neither dominating the other across all scenarios. I will be watching your project with interest. ~G > > Jony > > > -- > Centre for Cold Matter, The Blackett Laboratory, > Imperial College London, London SW7 2BW > T: +44 (0)207 5947741 > http://www.imperial.ac.uk/people/jony.hudson > http://www.imperial.ac.uk/ccm/research/edm > http://www.monkeycruncher.org > http://j-star.org/ > -- > > On 3 May 2013, at 16:46, Gabriel Becker <gmbec...@ucdavis.edu> wrote: > > > Jony, > > > > I would caution that while R will run with just base, you won't be able > to do much of anything with it. All the statistical analysis and graphing > functions reside in additional packages. So practically speaking you'll > need the workarounds Simon mentioned involving an alternative to dyn.load > so you can attach additional packages. Your project looks pretty cool > though! > > > > Also, as an aside have you seen the ipython notebook ( > http://ipython.org/ipython-doc/dev/interactive/htmlnotebook.html )? It > doesn't meet your requirement of not installing anything, and currently has > a slightly different focus, but the appearance of the documents is very > similar to what you are doing here (other than being server based), and it > already understands multiple languages, including python, R, matlab, > octave, etc and is being actively developed and supported. > > > > ~G > > > > > > On Fri, May 3, 2013 at 8:21 AM, Jony Hudson <jony.hud...@imperial.ac.uk> > wrote: > > Hi All, > > > > thanks for the replies. Very helpful to know that it will run with just > base. Looks like the best bet, at least to get started, is to not use the > usual build-process, but to come up with a simple build-script for just the > core. Ultimately, the build script has to be different anyway, as compiling > the Fortran code to JS requires a few more steps than the native compile. > > > > For a bit of context, the reason I'm toying with this is I've been > experimenting recently with analysis-in-the-browser. The kernel of the idea > is that if you could do real analysis, without installing anything, and > share it on the web then it would be a Good Thing, and could make it easier > to engage people with data. I've got a proof-of-concept version running > here http://www.monkeycruncher.org that let's you write javascript > analysis code in notebook-style documents. It's neat, but it's a bit > hamstrung by the lack of javascript libraries to actually do any useful > analysis! If you could have R running in there though, that would be a much > better proposition ... > > > > I'll let you know if I make any progress! > > > > > > Jony > > > > > > -- > > Centre for Cold Matter, The Blackett Laboratory, > > Imperial College London, London SW7 2BW > > T: +44 (0)207 5947741 > > http://www.imperial.ac.uk/people/jony.hudson > > http://www.imperial.ac.uk/ccm/research/edm > > http://www.monkeycruncher.org > > http://j-star.org/ > > -- > > > > On 3 May 2013, at 01:31, Simon Urbanek <simon.urba...@r-project.org> > wrote: > > > > > On May 2, 2013, at 6:18 PM, Gabriel Becker wrote: > > > > > >> Jony, > > >> > > >> I'm currently writing up the paper for something with a similar > result but > > >> very different implementation. The RBrowserPlugin package/browser > plugin > > >> (joint with my advisor Duncan Temple Lang) embeds R within the web > browser > > >> as an NPAPI plugin. > > >> > > >> This approach allows full bi-directional communication between R and > the > > >> javascript engine (including direct function calling and references to > > >> native objects in both directions) using a user's existing local R > > >> installation (including packages). > > >> > > > > > > Minor detail: it requires you to have R *and* a special plugin which > makes it pretty much non-deployable. It's completely unrelated to what Jony > is proposing - which doesn't require any dependencies and is actually > pretty cool and would be useful if feasible. FWIW: There are many ways to > run R from a browser that already exist - without the need for plugins or > other client-side hacks - that's the beauty of modern browsers :). > > > > > > > > > To get this back on the actual topic: I have been toying with > cross-compiling R when I was porting it on the iPhone and it's possible, > however, you can't use the build process as-is. It does build core R > properly, but the problem is that you need to bootstrap R to build any > packages. I worked around the problem at the time by building packages on > another platform and re-using those files (things like lazy-loaded DBs, > compiled RD files etc.). > > > > > > I can imagine that you'll need some equivalent to dynamic linking, but > conceptually it's nothing else but calling functions, so I think you should > be able to compile each package separately and just replace the dynload > code by code that loads another JavaScript. The nice thing is that packages > will simply be just another JS libraries. That's all in theory, I didn't > actually try that part. I suspect you'll have a lot of work, e.g. you'll > need to map all the I/O operations that load compiled/stored R code, > documentation, data from somewhere etc. Good luck! > > > If all fails, you can always compile R for JS/Linux ;). > > > > > > Cheers, > > > Simon > > > > > > > > > > > >> Devel source at https://github.com/gmbecker/RFirefox, release, > (hopefully) > > >> officially cross-platform version to coincide with the paper going > off for > > >> review. > > >> > > >> I had toyed with the idea of the emscripten approach, but I think > putting R > > >> in the browser once is enough for me at the moment so I will happily > keep > > >> an eye on your project instead of attacking that myself :). > > >> > > >> As for your actual question I can't really say, other than that I > suspect > > >> you will not be able to dispense with base and methods, but that I > would > > >> conjecture that stats is "optional". > > >> > > >> ~G > > >> > > >> > > >> On Thu, May 2, 2013 at 9:12 AM, Jony Hudson < > jony.hud...@imperial.ac.uk>wrote: > > >> > > >>> Hi, > > >>> > > >>> I'm trying to cross-compile R to javascript so that it can run in a > > >>> web-browser. Take as long as you need to stop laughing. So, as I was > saying > > >>> - I want to try and get a build of R running in the browser. [If > you're not > > >>> familiar with it already, you might enjoy looking at emscripten.org. > It's > > >>> a remarkably capable tool for translating LLVM bitcode to > javascript. Check > > >>> out some of the demos!] > > >>> > > >>> I'm trying to start out with the most minimal build of R possible. I > can > > >>> turn off various options in the configure script, but I'm wondering > about > > >>> the bundled R packages (base, stats etc). I'm guessing that the > native code > > >>> portions of these packages are dynamically loaded at runtime, which > will > > >>> probably need patching. To start off, I'd like to not build these > packages > > >>> if possible. > > >>> > > >>> So, is there a way to configure which packages in the library get > built or > > >>> is it just a case of editing the makefile? And is there a minimal > set of > > >>> them that would still allow R to run (not be useful - that can come > later - > > >>> just run)? > > >>> > > >>> Thanks in advance for any help anyone can provide :-) > > >>> > > >>> > > >>> Jony > > >>> > > >>> -- > > >>> Centre for Cold Matter, The Blackett Laboratory, > > >>> Imperial College London, London SW7 2BW > > >>> T: +44 (0)207 5947741 > > >>> http://www.imperial.ac.uk/people/jony.hudson > > >>> http://www.imperial.ac.uk/ccm/research/edm > > >>> http://www.monkeycruncher.org > > >>> http://j-star.org/ > > >>> -- > > >>> > > >>> ______________________________________________ > > >>> R-devel@r-project.org mailing list > > >>> https://stat.ethz.ch/mailman/listinfo/r-devel > > >>> > > >> > > >> > > >> > > >> -- > > >> Gabriel Becker > > >> Graduate Student > > >> Statistics Department > > >> University of California, Davis > > >> > > >> [[alternative HTML version deleted]] > > >> > > >> ______________________________________________ > > >> R-devel@r-project.org mailing list > > >> https://stat.ethz.ch/mailman/listinfo/r-devel > > >> > > >> > > > > > > > > > > > > > -- > > Gabriel Becker > > Graduate Student > > Statistics Department > > University of California, Davis > > -- Gabriel Becker Graduate Student Statistics Department University of California, Davis [[alternative HTML version deleted]] ______________________________________________ R-devel@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-devel