diff --git a/ActDocRepresentation.tex b/ActDocRepresentation.tex index 0da1c272441911e28266a6a5ecc1e4ea437bcc3d..4ebe0b3890e961d41d0e320139e531f541a02560 100644 --- a/ActDocRepresentation.tex +++ b/ActDocRepresentation.tex @@ -4,7 +4,7 @@ \usepackage{tikz} \usetikzlibrary{mindmap} \usepackage{metalogo} -\usepackage{dtklogos} +%\usepackage{dtklogos} \usetikzlibrary{shapes, snakes} \begin{document} \begin{tikzpicture}[xscale=.9] diff --git a/ActiveDocumentsOverview.tex b/ActiveDocumentsOverview.tex index d88494849a8689ef4031553e55bc31b5174221ab..18120438259e3dbc6800e5dd3502e6e3eb764389 100644 --- a/ActiveDocumentsOverview.tex +++ b/ActiveDocumentsOverview.tex @@ -2,7 +2,7 @@ \def\mathhub{MathHub.info\xspace} \def\mmt{MMT\xspace} \def\ommt{OMDoc/MMT\xspace} -\def\imgdir{} +\def\imgdir#1{#1} \subsection{Introduction} We define the Active Documents as semantically annotated documents associated with a @@ -136,8 +136,6 @@ fragments are not yet supported by Planetary. DocDash Widget on the Right)} \end{figure} - - \subsection{Architecture}\label{sec:mathhub:arch} \mathhub has four main components (see Figure~\ref{fig:arch}): \begin{compactenum}[\em i\rm)] diff --git a/Comparison.tex b/Comparison.tex index 3099cc1fbbb26be0837abeb75ac3b89a5b44235d..2393ae02228fe847cd8673dd47fd5ef5a9985086 100644 --- a/Comparison.tex +++ b/Comparison.tex @@ -4,113 +4,38 @@ We will now highlight the features of the ADP and Jupyther notebooks with a view towards a possible unification of the systems. -\subsection{Active Documents} - -Active Documents need a Player system (e.g. the Planetary system) that makes them +\emph{Active Documents} need a Player process (e.g. the Planetary system) that makes them executable, gives access to provenance and copyright/licensing information, and supports various forms of validation. Figure~\ref{fig:graph2} shows the situation in analogy to -Figure~\ref{fig:activedocs}: On the left we see an active document as it is seen by the -user: it contains text interspersed with regions that are interactive because they have -been bound to semantic services, which are executed by the player system -- in the middle --- that interprets the represented content structures -- here depicted by a theory graph -on the right. +Figure~\ref{fig:activedocs}: On the left we see an active document -- a web page in a +browser -- as it is seen by the user: it contains text interspersed with regions that are +interactive because they have been bound to semantic services, which are executed by the +player system -- in the middle -- that interprets the represented content structures -- +the mathematical knowledge; here depicted by a theory graph on the right. \begin{figure}[ht] \input{ActDocRepresentation} \caption{Active Documents}\label{fig:graph2} \end{figure} - - -\subsection{Jupyther} - -Project Jupyther is build by three main components: a web application, a representation of -it, called a notebook and the kernels, which are the key of communication between the -first two. - -The web application consists of a browser-based tool for interactive authoring of -documents which combine explanatory text, mathematics, computations and their rich media -output. This application leads to features such as in-browser editing for code, The -ability to execute code from the browser, display of the result of computation using rich -media representations etc. - -The notebook documents are a representation of all content visible in the web application, -including inputs and outputs of the computations, explanatory text, mathematics, images, -and rich media representations of objects. Notebooks can be exported to different static -formats including HTML, reStructeredText, LaTeX, PDF, and slide shows. Furthermore, any -notebook document, available from a public URL or GitHub, can be shared via -"nbviewer". This service loads the notebook document from the URL and renders it as a -static web page. - -For each notebook document that a user opens, the web application starts a kernel that -runs the code for that notebook. Each of these kernels communicate with the notebook web -application and web browser using a JSON over ZeroMQ/WebSockets message protocol. +In \emph{Juypther the situation is similar}, the user interacts with a dynamic web page -- +the Jupyther notebook -- in a browser that is a mathematical text interspersed with areas +of interactivity: the computation cells. These can generate mathematical content and righ +media output into the notebook upon user request. We see the notebook on the left of +Figure~\ref{fig:graph3}. Again, we have a ``player process'': the Jupyther kernel that +runs the code for that notebook. This is depicted as the ``machine'' on the right, which +relies on the mathematical knowledge enoded as mathematical program code. \begin{figure}[ht] \input{JupyterRepresentation} \caption{Jupyter Communication}\label{fig:graph3} \end{figure} -\subsection{Similarities} - -The common features of the two system come in terms of user capacity: both act with -respect to the input of the user, either with prerequisites utilities, or with live code -as the demand. - -A strong connection between the two is without doubt is the net of contents in which the -search is possible. Disregarding the fact that for the Active Documents is built by the -document player, whereas Jupyter has it contained into the machine, the whole idea of -interactivity is based on it. The approach to a collection of documents is seen as the -formation of the net, which is capable of providing the output. - -Due to their similar characteristic, we believe that a combination between the Active -Documents and the Jupyter Project is feasible and can be complementary. In this sense, the -features of each application can be extended by the other, as presented in Figure -11. Adding the powerful Jupyter machine to the flexibility presented by the Active -Documents can extend the notion of a virtual notebook, making it both user-friendly and -efficient. - -\subsection{Differences} - -\subsubsection{User Interface} - -While both the Active Documents and Project Jupyter provide a highly interactivity between -the user and the content itself, the means in which they make the communication possible -is different. - -Since the Active Documents are focused on extending everything from a document, the user -is able to randomly check, modify or inspect any part of the it, with features such as -\textit{Definition Lookup, Semantic Folding, Prerequisites Navigation, Executable - Formulae} or \textit{Unit Conversion}. This form of processing grants the user to have -full access to the contents included in a paper, making the most out of interactivity. - -In contrast to this user-friendliness, the web application of Project Jupyter provides a -much more rigid approach to the interactivity. The user is able to process the information -throughout insertion of written code. In this manner, the procedures of linking the -papers, lookup and other features from the Active Documents are not presented here, -keeping them obscure to the person using the application. - -\subsubsection{Communication} - -The linkage between sources and documents is the key to the communication inside the two -projects. While the Active Documents need a Document Player, such as the Planetary System, -in order to make the most out of its features, Jupyter is independent, with no need to -depend on another program. +This already hints at a synthesis of the two systems; we make this explicit in +Figure~\ref{fig:graph4}: We -In order to benefit from its great features, the Active Documents depend on a so called -document player. An example of this sort of communication is the Planetary System -discussed above. Capable of containing, organizing and exploring a vast collection of -documents, Planetary is the key of communication within the Active Documents. -On the other hand, Project Jupyter uses the kernels in order to include, link and produce -papers. Inside the program's machine, the interactivity of the documents is already -created, thus the attribute of the kernel is to exchange information and to provide the -output. Perhaps the most important difference between the two systems lies into their form -of providing the data to the user. While the Active Documents form the connection when -requested by the user, the Jupyter system stores all the connection and just addresses -them, in order to compute the command. -\subsection{Next Steps: Active Computational Documents}\label{sec:steps} \begin{figure}[ht] \input{Syntesis} diff --git a/JupyterRepresentation.tex b/JupyterRepresentation.tex index fa1ff44e5c511769087d5e250534630e1c3c41b3..43ee88b8a5aab24afb2cc9f5352bab57a76b144c 100644 --- a/JupyterRepresentation.tex +++ b/JupyterRepresentation.tex @@ -2,9 +2,8 @@ \usepackage[landscape]{geometry} \usepackage{tikz} -\usetikzlibrary{mindmap} -\usepackage{metalogo} -\usepackage{dtklogos} +% \usetikzlibrary{mindmap} +% \usepackage{metalogo} \usetikzlibrary{shapes, snakes} \begin{document} \begin{tikzpicture}[xscale=.9] @@ -25,47 +24,44 @@ \draw[style=thick, fill=cyan] (-12.5, -1.25) rectangle (-7.5, -3); \node[align=left, text width=4cm] at (-9.75,-2) {Mathematics formulae inserted.}; -%% Jupyther Program +% First machine \path[draw, fill=blue!10] -(-5, -3) -- -(-5, 1.5) -- -(-5, 3) -- -(-4.75, 3) -- -(-6, 4) -- -(2, 4) -- -(0.75, 3) -- -(1, 3) -- -(1, 1) -- -(2.5, 0) -- -(1, 0) -- -(1, -3) -- +(-6, -3.5) -- +(-6, 1.5) -- +(-6.5, 1.5) -- +(-6, 1.75) -- +(-6, 3.5) -- +(-5.75, 3.5) -- +(-6.25, 4) -- +(-2.75, 4) -- +(-3.25, 3.5) -- +(-2.5, 3.5) -- +(-2.5, -3.5) -- cycle; +\node at (-4.5, 3) {\Huge J}; +\node at (-4.5, 2) {\Huge U}; +\node at (-4.5, 1) {\Huge P}; +\node at (-4.5, 0) {\Huge Y}; +\node at (-4.5, -1) {\Huge T}; +\node at (-4.5, -2) {\Huge E}; +\node at (-4.5, -3) {\Huge R}; + \tikzstyle{every node} = [circle] -\node[fill=cyan] (a) at (-3.5, -2) { }; -\node[fill=cyan] (b) at (-0.5, -2) { }; -\node[fill=cyan] (c) at (-0.5, 1) { }; -\node[fill=cyan] (d) at (-3.5, 1) { }; -\node[fill=cyan] (e) at (-2, -0.5) { }; +\node[fill=cyan] (a) at (-1.5, -2) { }; +\node[fill=cyan] (b) at (1.5, -2) { }; +\node[fill=cyan] (c) at (1.5, 1) { }; +\node[fill=cyan] (d) at (-1.5, 1) { }; +\node[fill=cyan] (e) at (0, -0.5) { }; \foreach \from/\to in {a/b, b/c, c/d, a/d, a/e, e/b, c/e, d/e} \draw [-] (\from) -- (\to); -\node[align=center, text width=4cm] at (-2,2) {\huge Program}; +\node[align=center, text width=4cm] at (0,2) {\huge Notebook}; \end{tikzpicture} \end{document} - - - - - - - - - - - - - - +%%% Local Variables: +%%% mode: latex +%%% TeX-master: t +%%% End: diff --git a/Syntesis.tex b/Syntesis.tex index 6e5ac2d3091e0464daa3b1f5b4608b59373e470c..17b040d23a7b10919d34d872e4692be4c2612ea3 100644 --- a/Syntesis.tex +++ b/Syntesis.tex @@ -4,7 +4,7 @@ \usepackage{tikz} \usetikzlibrary{mindmap} \usepackage{metalogo} -\usepackage{dtklogos} +%\usepackage{dtklogos} \usetikzlibrary{shapes, snakes} \begin{document} \begin{tikzpicture} @@ -36,49 +36,50 @@ \draw[fill=cyan] (-11.55, -3.25) rectangle (-9.5, -2.75); \node[align=left, text width=2cm] at (-10.5,-3) {interactive.}; -%% Jupyther Program +% First machine \path[draw, fill=blue!10] -(-5, -3) -- -(-5, 1.5) -- -(-5, 3) -- -(-4.75, 3) -- -(-6, 4) -- -(2, 4) -- -(0.75, 3) -- -(1, 3) -- -(1, 1) -- -(2.5, 0) -- -(1, 0) -- -(1, -3) -- +(-6.5, -3.5) -- +(-6.5, 1.5) -- +(-7, 1.5) -- +(-6.5, 1.75) -- +(-6.5, 3.5) -- +(-6.25, 3.5) -- +(-6.75, 4) -- +(-3.25, 4) -- +(-3.75, 3.5) -- +(-3, 3.5) -- +(-3, -3.5) -- cycle; -\tikzstyle{every node} = [circle] -\node[fill=cyan] (a) at (-3.5, -2) { }; -\node[fill=cyan] (b) at (-0.5, -2) { }; -\node[fill=cyan] (c) at (-0.5, 1) { }; -\node[fill=cyan] (d) at (-3.5, 1) { }; -\node[fill=cyan] (e) at (-2, -0.5) { }; + +%% Jupyther Program + +\node[circle,fill=cyan] (a) at (-2, 1) { }; +\node[circle,fill=cyan] (b) at (0, 1) { }; +\node[circle,fill=cyan] (c) at (0, 3) { }; +\node[circle,fill=cyan] (d) at (-2, 3) { }; +\node[circle,fill=cyan] (e) at (-1, 2) { }; \foreach \from/\to in {a/b, b/c, c/d, a/d, a/e, e/b, c/e, d/e} \draw [-] (\from) -- (\to); -\node[align=center, text width=4cm] at (-2,2) {\huge Program}; +\node[align=center, text width=4cm] at (-1,3.5) {\huge Notebook}; + +%\draw [<->] (-8.5,0) -- (-7,0) node[pos=.5,sloped,above] {}; -\draw [<->] (-8.5,0) -- (-5.5,0) node[pos=.5,sloped,above] {}; +\node[align=center, text width=4cm] at (-1,-.3) {\huge Knowledge}; +\node[draw, fill=cyan!30, thick] (a) at (-2, -3) {Thy}; +\node[draw, fill=cyan!30, thick] (b) at (0, -3) {Thy}; +\node[draw, fill=cyan!30, thick] (c) at (0, -1) {Thy}; +\node[draw, fill=cyan!30, thick] (d) at (-2, -1) {Thy}; +\node[draw, fill=cyan!30, thick] (e) at (-1, -2) {Thy}; +\foreach \from/\to in {a/b, b/c, c/d, a/d, a/e, e/b, c/e, d/e} +\draw [-] (\from) -- (\to); \end{tikzpicture} \end{document} - - - - - - - - - - - - - +%%% Local Variables: +%%% mode: latex +%%% TeX-master: t +%%% End: diff --git a/mathhub-arch.tex b/mathhub-arch.tex index 8b8edbd1780faf4b5fec9791373422e8b6442396..e869528225e229550b4ac47951dc71c0b94748d6 100644 --- a/mathhub-arch.tex +++ b/mathhub-arch.tex @@ -5,11 +5,11 @@ \begin{document} \providecommand\myxscale{1} \providecommand\myyscale{1} -\providecommand\imgdir{../img} +\providecommand\imgdir[1]{#1} \providecommand\myfontsize{\normalsize} \begin{tikzpicture}[xscale=\myxscale,yscale=\myyscale]\myfontsize\sf - \pgfdeclareimage[width=1cm]{user}{\imgdir/user} - \pgfdeclareimage[width=1cm]{author}{\imgdir/author} + \pgfdeclareimage[width=1cm]{user}{user} + \pgfdeclareimage[width=1cm]{author}{author} \tikzstyle{system} = [rectangle, draw, fill=blue!20, text width=1.1cm, text centered, rounded corners, minimum height=.8cm,shade, top color=white, bottom color=blue!20] diff --git a/report.toc b/report.toc index d3cbdca3a10825e55b55d05dca33c0db2efb5cfe..9fc71fdfd50d5e6a41eab44ef454600430bebcc8 100644 --- a/report.toc +++ b/report.toc @@ -52,22 +52,8 @@ \defcounter {refsection}{0}\relax \contentsline {section}{\tocsection {}{4}{A Joint Perspective and Generalization of Jupyther and Active Documents}}{16}{section.4} \defcounter {refsection}{0}\relax -\contentsline {subsection}{\tocsubsection {}{4.1}{Active Documents}}{16}{subsection.4.1} +\contentsline {section}{\tocsection {}{5}{Conclusion}}{17}{section.5} \defcounter {refsection}{0}\relax -\contentsline {subsection}{\tocsubsection {}{4.2}{Jupyther}}{16}{subsection.4.2} +\contentsline {subsection}{\tocsubsection {}{}{Acknowledgements}}{18}{section*.2} \defcounter {refsection}{0}\relax -\contentsline {subsection}{\tocsubsection {}{4.3}{Similarities}}{17}{subsection.4.3} -\defcounter {refsection}{0}\relax -\contentsline {subsection}{\tocsubsection {}{4.4}{Differences}}{17}{subsection.4.4} -\defcounter {refsection}{0}\relax -\contentsline {subsubsection}{\tocsubsubsection {}{4.4.1}{User Interface}}{17}{subsubsection.4.4.1} -\defcounter {refsection}{0}\relax -\contentsline {subsubsection}{\tocsubsubsection {}{4.4.2}{Communication}}{17}{subsubsection.4.4.2} -\defcounter {refsection}{0}\relax -\contentsline {subsection}{\tocsubsection {}{4.5}{Next Steps: Active Computational Documents}}{18}{figure.12} -\defcounter {refsection}{0}\relax -\contentsline {section}{\tocsection {}{5}{Conclusion}}{19}{section.5} -\defcounter {refsection}{0}\relax -\contentsline {subsection}{\tocsubsection {}{}{Acknowledgements}}{19}{section*.2} -\defcounter {refsection}{0}\relax -\contentsline {section}{\tocsection {}{}{References}}{20}{section*.3} +\contentsline {section}{\tocsection {}{}{References}}{19}{section*.3}