# [rkward-cvs] SF.net SVN: rkward:[3339] branches/jss_dec_10/FINAL_JSS_TEX

kapatp at users.sourceforge.net kapatp at users.sourceforge.net
Mon Dec 27 19:44:56 UTC 2010

Revision: 3339
http://rkward.svn.sourceforge.net/rkward/?rev=3339&view=rev
Author:   kapatp
Date:     2010-12-27 19:44:56 +0000 (Mon, 27 Dec 2010)

Log Message:
-----------
Proof reading Section 5. Thomas, there is a note for you in 5.1, please check.

Modified Paths:
--------------
branches/jss_dec_10/FINAL_JSS_TEX/RKWard_paper.tex
branches/jss_dec_10/FINAL_JSS_TEX/technical.tex

Modified: branches/jss_dec_10/FINAL_JSS_TEX/RKWard_paper.tex
===================================================================
--- branches/jss_dec_10/FINAL_JSS_TEX/RKWard_paper.tex	2010-12-27 19:07:15 UTC (rev 3338)
+++ branches/jss_dec_10/FINAL_JSS_TEX/RKWard_paper.tex	2010-12-27 19:44:56 UTC (rev 3339)
@@ -28,7 +28,7 @@
Interface (GUI), but it includes tools for building such. Over the past
years, proprietary and non-proprietary GUI solutions have emerged,
based on internal or external tool kits, with different scopes and technological concepts.
-For example, Rgui.exe and Rgui.app have
+For example, \proglang{Rgui.exe} and \proglang{Rgui.app} have
become the de facto GUI on the MS Windows and MacOS X platforms, respectively, for most users.
In this paper we discuss RKWard which aims to be both a
comprehensive cross-platform GUI and an Integrated Development Environment

Modified: branches/jss_dec_10/FINAL_JSS_TEX/technical.tex
===================================================================
--- branches/jss_dec_10/FINAL_JSS_TEX/technical.tex	2010-12-27 19:07:15 UTC (rev 3338)
+++ branches/jss_dec_10/FINAL_JSS_TEX/technical.tex	2010-12-27 19:44:56 UTC (rev 3339)
@@ -1,6 +1,7 @@
+%!TEX root=RKWard_paper.tex
\section{Technical design}
\label{sec:technical}
-In this section we will give a compact overview over key aspects of RKWards
+In this section we will give a compact overview of the key aspects of RKWard's
technical design. We will give slightly more attention to the details of the
plugin framework (Section~\ref{sec:technical_plugins}) used in RKWard, since this is central to the extensibility of
RKWard.
@@ -20,7 +21,7 @@
internal code. For instance, RKWard makes sure that no user command can
potentially interfere while RKWard is loading the data of a \code{data.frame} for
editing.
-}. The asynchronous design implies that RKWard avoids to rely on the
+}. The asynchronous design implies that RKWard avoids relying on the
\proglang{R} engine during interactive use. This is one of several reasons for
the use of \proglang{ECMAScript} in plugins, instead of scripting using
\proglang{R} itself (see Sections~\ref{sec:technical_toolkit} and \ref{sec:technical_plugins}).
@@ -28,8 +29,8 @@
existence and properties of objects in \proglang{R} interactively. Rather,
RKWard keeps a representation of \proglang{R} objects and their basic properties
(e.\,g., class and dimensions), which is used for the workspace browser (Section~\ref{sec:workspace_browser_object_viewer}),
-object name completion, function argument hinting and
-other occasions. The object representation includes objects in all environments
+object name completion, function argument hinting, and
+other places. The object representation includes objects in all environments
in the search path, and any objects contained within these environments in a
hierarchical tree\footnote{
Currently, environments of functions or formulas are not taken into account.
@@ -37,11 +38,13 @@
Specifically, objects which would usually be lazy loaded'' only when needed \citep[see][]{Ripley2004} are
accessed in order to fetch information on their properties. This means the data
-has to be loaded from disk; however, the memory is freed directly after fetching
-information on the object.
+has to be loaded from disk; however, the memory is freed immediately after fetching
+information on the object. Additionally, as an override switch, RKWard provides an option
+to list packages which will not be scanned pro-actively for object structures when loaded.
+%% PK: Thomas can you verify/modify/delete the above sentence?

A further side-effect of the asynchronous threaded design is that there is
-inherently a rather clear separation between GUI code and code making direct use
+inherently a rather clear separation between the GUI code and the code making direct use
of the \proglang{R} API (see also Figure~\ref{fig:design_sketch}). In the current development version, the evaluation
of \proglang{R} commands has even been moved into a separate process. Therefore in future releases it could
be made possible to run GUI and \proglang{R} engine on different computers.
@@ -65,7 +68,7 @@
detect such changes in order to always display accurate information in the
workspace browser, object selection lists, and object views. Beyond that,
detecting any changes is particularly important with respect to objects which
-are currently opened for editing in the data editor (which provides an illusion
+are currently being edited in the data editor (which provides an illusion
of in-place editing, see Section~\ref{sec:spreadsheet}). Here, it is necessary to synchronize
the data between \proglang{R} and the GUI in both directions.

@@ -82,12 +85,12 @@

The use of active bindings has significant performance implications when
objects are accessed very frequently. This is particularly notable where an
-object inside the global environment (i.\,e. an object wrapped into an active
+object inside the global environment (i.\,e., an object wrapped into an active
binding) is used as the index variable in a loop, as illustrated by the
following example:

\begin{Code}
-# 'i', created below, will become subject to object modification detection
+# 'i', created below, will be subject to object modification detection
# as soon as the user command returns
i <- 1

@@ -120,11 +123,11 @@
still known to have portability issues especially on Mac OS X, and to some degree
also on the MS Windows platform.

-The major reason for choosing the \proglang{KDE} and \proglang{Qt} libraries was their providing
-of many high level features which have allowed RKWard development to make quick
+The major reason for choosing the \proglang{KDE} and \proglang{Qt} libraries was their
+many high level features which have allowed RKWard development to make quick
progress despite limited resources. Most importantly, the \proglang{KDE} libraries provide a
full featured text editor \citep{CullmannND} as a component which can be
-seamlessly integrated into a hosting application using the KParts technology
+seamlessly integrated into a host application using the KParts technology
\citep{Faure2000}. Additionally, another KPart provides \proglang{HTML} browsing capabilities in a
similarly integrated way. The availability of KWord \citep{KWord} as an
embeddable KPart might prove useful in future versions of RKWard, when better
@@ -187,7 +190,7 @@
The actual plotting calls are tracked using appropriate \code{sys.call()} commands in
the hooks. These call strings are displayed as a drop-down menu on the toolbar
for non-sequential browsing (see Figure~\ref{fig:plot_history}) providing a very intuitive browsing
-interface unlike the implementation for MS Windows or Quartz devices.
+interface unlike the native implementations in \code{windows()} and \code{quartz()} devices.

\subsection{Plugin infrastructure}
\label{sec:technical_plugins}
@@ -201,10 +204,10 @@
}. Thus, the plugin framework is basically a tool set used to define
GUIs for the automatic generation of \proglang{R} code.

-Much of the functionality in RKWard is currently implemented as plugins. For example, import of different file
+Much of the functionality in RKWard is currently implemented as plugins. For example, importing different file
formats relying on the \pkg{foreign} package is achieved by this approach. Similarly,
RKWard provides a modest GUI driven tool set for statistical analysis,
-especially for item response theory (IRT), distributions and descriptive
+especially for item response theory (IRT), distributions, and descriptive
statistical analysis.

\subsubsection{Defining a plugin}
@@ -236,9 +239,9 @@
the definition of the GUI-layout and GUI-behavior. High level GUI-elements can
be defined with simple \proglang{XML}-tags. Layout is based on rows'' and ''columns'',
instead of pixel counts. In most cases this allows for a very sensible resizing
-    behavior. RKWard supports single-page dialogs, and multi-page wizards, however,
+    behavior. RKWard supports single-page dialogs and multi-page wizards, however,
most plugins define only a single-page UI. GUI behavior can be programmed by
-    connecting properties'' of the GUI elements to each other. For example the state
+    connecting properties'' of the GUI elements to each other. For example, the state
of a checkbox could be connected to the enabled'' property of a dependent
control. More complex logic is also supported, as is procedural scripting of GUI
behavior using \proglang{ECMAScript}.
@@ -258,7 +261,8 @@

\item
A third \proglang{XML} file defines a help page. This help page usually links to the \proglang{R} help
-    pages of the central functions/concepts used by the plugin. Compared to \proglang{R} help
+    pages of the main functions/concepts used by the plugin, as well as to other
+    related RKWard help pages. Compared to \proglang{R} help
pages, the plugin help pages try to give more hands-on advice on using the
plugin. Plugins can be invoked from their help page by clicking on a link near
the top, which can be useful after following a link from a related help page.
@@ -306,7 +310,7 @@
them for each plugin.

Regarding the style of the generated \proglang{R} code, enforcing consistency is harder,
-but plugins which are to become part of the official RKWard distribution are
+but plugins which are to become part of the official RKWard application are
reviewed for adherence to some guidelines. Perhaps the most important guidelines
are

@@ -321,8 +325,8 @@

\item
Plugins can be restricted to accept only certain types of data (such as only one-dimensional numeric data).
-  Use such restrictions where appropriate to the user avoid errors, but be very careful not to add
-  too much restrictions.
+  Use such restrictions where appropriate to avoid errors, but be very careful not to add
+  too many of them.
\end{itemize}

\subsubsection{Handling of R package dependencies}
@@ -359,7 +363,7 @@
map.

-plugins, which are not officially included or supported by the
+plugins, which are neither officially included nor supported by the
RKWard developers, from the internet.

\subsubsection{Automated testing}

This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.