I'm really interested in learning more about how the RStudio IDE works and am not sure where I should start.
I cloned the repo and poked around a little bit but I'm way out of my depth. If I want to hack a bit to see if there's an add in or some other thing I can contribute--where should I start?
Thanks!
edit:
- I didn't realize add-ins were just R functions--to clarify, I'm trying to learn more about how RStudio is put together and how it works. Like, if the IDE were LEGOs, how is it built and why does it work?
-
@jcblum suggested to check out Ace, which RStudio depends on, thanks
@jonathan shared this:
- RStudio is basically a client/server app.
- The client is a Web app written using GWT. You'll see lots of Java in the repo; it's all transpiled to JavaScript.
- The server is all C++, and makes heavy use of asynchronous and functional utilities supplied by Boost.
- All of the communication between the client and server occurs via JSON-RPC. If you go to Help | Diagnostics | Request Log you'll see a neat visualization of the chatter between the client and server. Reading this will help you understand how the two pieces work together.
- The piece that's the most interesting for you (probably) and offers the most opportunities for experimentation and extension is the R Session module, which binds to R itself by loading it as a shared library and wiring up callbacks. This module is called
rsession
and can be found in src/cpp/session.