This is the main repository of Stencila, a platform for authoring, collaborating on, and publishing executable documents.
Stencila is comprised of several open source packages, written in a variety of programming languages. This repo acts as an entry point to these other packages as well as hosting code for our desktop and CLI tools.
We 💕 contributions! All types of contributions: ideas 🤔, examples 💡, bug reports 🐛, documentation 📖, code 💻, questions 💬. If you are unsure of where to make a contribution feel free to open a new issue or discussion in this repository (we can always move them elsewhere if need be).
For documentation, including demos and reference guides, please go to our Help site https://help.stenci.la/. That site is developed in the help
folder of this repository and contributions are always welcome.
If you don't want to install anything, or just want to try out Stencila, https://hub.stenci.la is the best place to start. It's a web application that makes all our software available via intuitive browser-based interfaces. You can contribute to Stencila Hub at stencila/hub
.
If you'd prefer to use Stencila on your own computer, the Stencila Desktop is a great place to start. It is still in the early stages of (re)development but please see the desktop
folder for its current status and how you can help out!
Prefer to work on the command line? The stencila
command line tool (CLI) is for you! Please see the cli
folder for installation and usage instructions.
The stencila
Hub, Desktop and CLI all rely on plugins to provide much of their functionality. You can install plugins using the stencila
Desktop or CLI tool using it's name or an alias,
stencila plugins install <name or alias>
The following table lists the main plugins. These plugins are in various stages of development and not all of them are compatible with the Desktop and CLI. Generally, it won't be worth installing them prior to v1
and coverage of at least 90%.
🚨 We are the process of deprecating the "executor" plugins
rasta
,pyla
andjesta
and instead focussing on a tighter integration with Jupyter kernels by way of porting the functionality injupita
into the core Rust library.
Plugin | Aliases | Version | Coverage | Primary functionality |
---|---|---|---|---|
encoda | converter |
Convert documents between file formats | ||
jesta | javascript |
Compile, build and execute documents that use JavaScript | ||
rasta | r |
Compile, build and execute documents that use R | ||
pyla | python |
Compile, build and execute documents that use Python | ||
jupita | jupyter |
Execute documents that use Jupyter kernels | ||
dockta | docker |
Build Docker images for executable documents | ||
nixta | nix |
Build Nix environments for executable documents |
You can use Stencila as a Docker image. We provide several images of varying sizes and capabilities. All include the stencila
CLI as the image ENTRYPOINT
but add varying numbers of plugins and packages.
At present the number of images listed below is limited. We plan to move the generic images e.g. stencila/executa-midi
(which are currently built in the dockta
repository), to this repository as we reach plugin compatibility for the relevant language packages.
Image | Size | Description |
---|---|---|
stencila/stencila | Base image containing stencila CLI |
|
stencila/node | Adds Node.js and jesta |
If you prefer, you can use Stencila from within your favorite programming language. Some of these language bindings are in an early, proof-of-concept state and are likely to be developed further only based on demand. If your favorite language is missing, or you would like to help us develop the bindings, let us know!
Language | Bindings | Status |
---|---|---|
Node | node | In-development (used for Desktop) |
Python | python | Experimental |
R | r | Experimental |