Skip to content

Commit

Permalink
add overview figure
Browse files Browse the repository at this point in the history
  • Loading branch information
manzt committed Jun 6, 2024
1 parent e993e55 commit 3d21ce8
Show file tree
Hide file tree
Showing 2 changed files with 22 additions and 11 deletions.
Binary file added paper/overview.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
33 changes: 22 additions & 11 deletions paper/paper.md
Original file line number Diff line number Diff line change
Expand Up @@ -39,16 +39,17 @@ The **anywidget** project provides a specification and toolset for portable and
reusable web-based widgets in interactive computing environments. First, it
defines a standard for widget front-end code based on the web browser's native
module system. Second, it provides tools to author, distribute, and execute
these modules across web-based computing platforms. Since its release a year
and a half ago, anywidget has steadily gained adoption. Nearly 70 new widgets
have been created with or ported to anywidget and published to the Python
Package Index (PyPI), along with numerous standalone scripts and notebooks.
These tools cover general-purpose visualization libraries [@jscatter;
@Heer2024-rr] as well as notebook integrations for applications in biology
[@gos; @vitessce; @viv; @cev], mapping [@lonboard], astronomy [@ipyaladin], and
education [@drawdata]. It has also been integrated into popular visualization
libraries like Altair [@altair], enhancing interactivity in notebooks and
deepening user engagement with visualizations and code.
these modules across web-based computing platforms (\autoref{fig:overview}).
Since its release a year and a half ago, anywidget has steadily gained
adoption. Nearly 70 new widgets have been created with or ported to anywidget
and published to the Python Package Index (PyPI), along with numerous
standalone scripts and notebooks. These tools cover general-purpose
visualization libraries [@jscatter; @Heer2024-rr] as well as notebook
integrations for applications in biology [@gos; @vitessce; @viv; @cev], mapping
[@lonboard], astronomy [@ipyaladin], and education [@drawdata]. It has also
been integrated into popular visualization libraries like Altair [@altair],
enhancing interactivity in notebooks and deepening user engagement with
visualizations and code.

# Statement of need

Expand Down Expand Up @@ -77,6 +78,16 @@ interactive visualizations across computational notebooks.

# Overview

![Overview of the anywidget project. (a) Anywidget Front-End Module (AFM) is a
specification for widget front-end code based on ECMAScript (ES) modules
(middle). Platform hosts load the module and call lifecycle methods with
required interfaces (top). The `anywidget` Python package adpats JCPs into
AFM-compatible hosts, allowing Jupyter Widgets to be authored and distributed
with AFM. Other AFM authoring tools help developers write their widget
front-end code with popular frameworks (bottom). (b) A project template CLI
allows bootstrapping new anywidget projects that are ready to publish to PyPI.
\label{fig:overview}](overview.png)

## A standard for widget front-end modules

The **Anywidget Front-End Module (AFM)** is a specification for widget
Expand Down Expand Up @@ -115,7 +126,7 @@ module, either inline or in a separate file, without a build process
UIs, developers can introduce a build step targeting AFM to utilize advanced
tools (\autoref{fig:afm-and-anywidget}a, bottom).

![AFM and anywidget Python package overview. (a) AFM can be authored in
![Authoring a custom Jupyter Widget with anywidget. (a) AFM can be authored in
web-standard ECMAScript (top) or with a front-end framework using a bridge
(bottom). (b) The anywidget Python package allows authoring custom Jupyter
Widgets with AFM (top), usable across various JCPs (bottom).
Expand Down

0 comments on commit 3d21ce8

Please sign in to comment.