A RetroSearch Logo

Home - News ( United States | United Kingdom | Italy | Germany ) - Football scores

Search Query:

Showing content from https://github.com/stencila/stencila below:

stencila/stencila: Documents with Scientific Intelligence

Documents with Scientific Intelligence


Stencila is a platform for creating and publishing, dynamic, data-driven content. Our aim is to lower the barriers for creating truly programmable documents, and to make it easier to publish them as beautiful, interactive, and semantically rich, articles and applications. Our roots are in scientific communication, but our tools are useful beyond.

This is v2 of Stencila, a rewrite in Rust focussed on the synergies between three recent and impactful innovations and trends:

We are embarking on a rewrite because CRDTs will now be the foundational synchronization and storage layer for Stencila documents. This requires fundamental changes to most other parts of the platform. Furthermore, a rewrite allow us to bake in, rather than bolt on, new modes of interaction between authors and LLM assistants and add mechanisms to mitigate the risks associated with using LLMs (e.g. by recording the actor, human or LLM, that made the change to a document). Much of the code in the v1 branch will be reused (after some tidy-ups and refactoring), so v2 is not a complete rewrite.

Our general strategy is to iterate horizontally across the feature set, rather than fully developing features sequentially. This will better enable early user testing of workflows and reduce the risk of finding ourselves painted into an architectural corner. So expect initial iterations to have limited functionality and be buggy.

We'll be making alpha and beta releases of v2 early and often across all products (e.g. CLI, desktop, SDKs). We're aiming for a 2.0.0 release by the end of Q3 2024.

๐ŸŸข Stable โ€ข ๐Ÿ”ถ Beta โ€ข โš ๏ธ Alpha โ€ข ๐Ÿšง Under development โ€ข ๐Ÿงช Experimental โ€ข ๐Ÿงญ Planned โ€ข โ” Maybe

The Stencila Schema is the data model for Stencila documents (definition here, generated reference documentation here). Most of the schema is well defined but some document node types are still marked as under development. A summary by category:

Category Description Status Works Types of creative works (e.g. Article, Figure, Review) ๐ŸŸข Stable (mostly based on schema.org) Prose Types used in prose (e.g. Paragraph, List, Heading) ๐ŸŸข Stable (mostly based on HTML, JATS, Pandoc etc) Code Types for executable (e.g. CodeChunk) and non-executable code (e.g. CodeBlock) ๐Ÿ”ถ Beta (may change) Math Types for math symbols and equations (e.g. MathBlock) ๐Ÿ”ถ Beta (may change) Data Fundamental data types (e.g. Number) and validators (e.g. NumberValidator) ๐Ÿ”ถ Beta (may change) Flow Types for control flow within a document (e.g. If, For, Call) ๐Ÿ”ถ Beta (may change) Style Types for styling parts of a documents (Span and Division) ๐Ÿ”ถ Beta (may change) Edits Types related to editing a documents (e.g. InstructionBlock) ๐Ÿ”ถ Beta (may change) Storage and synchronization

In v2, documents can be stored as binary Automerge CRDT files, branched and merged, and with the ability to import and export the document in various formats. Collaboration, including real-time, is made possible by exchanging fine-grained changes to the CRDT over the network. In addition, we want to enable interoperability with a Git-based workflow.

Functionality Description Status Documents read/write-able Able to write a Stencila document to an Automerge binary file and read it back in โš ๏ธ Alpha Documents import/export-able Able to import or export document as alternative formats, using tree diffing to generate CRDT changes โš ๏ธ Alpha Documents fork/merge-able Able to create a fork of a document in another file and then later merge with the original ๐Ÿงญ Planned Documents diff-able Able to view a diff, in any of the supported formats, between versions of a document and between a document and another file ๐Ÿงญ Planned Git merge driver CLI can act as a custom Git merge driver ๐Ÿงญ Planned Relay server Documents can be synchronized by exchanging changes via a relay server ๐Ÿงญ Planned Rendezvous server Documents can be synchronized by exchanging changes peer-to-peer using TCP or UDP hole punching โ” Maybe

Interoperability with existing formats has always been a key feature of Stencila. We are bringing over codecs (a.k.a. converters) from the v1 branch and porting other functionality from encoda to Rust.

Kernels are what executes the code in Stencila CodeChunks and CodeExpressions, as well as in control flow document nodes such as ForBlock and IfBlock. In addition, there are kernels for rendering math (e.g. MathBlock) and styling (e.g. StyledInline) nodes.

Kernel Purpose Status Bash Execute Bash code ๐Ÿ”ถ Beta Zsh Execute Zsh code โ” Maybe; v1 Python Execute Python code ๐Ÿ”ถ Beta R Execute R code โš ๏ธ Alpha QuickJs Execute JavaScript in embedded sandbox ๐Ÿ”ถ Beta Node.js Execute JavaScript in a Node.js env ๐Ÿ”ถ Beta Deno Execute TypeScript code โ” Maybe; v1 SQLite Execute SQL code ๐Ÿงญ Planned; v1 Jupyter kernels Execute code in Jupyter kernels ๐Ÿšง In progress; PR Rhai Execute a sand boxed, embedded language ๐Ÿ”ถ Beta AsciiMath Render AsciiMath symbols and equations ๐Ÿ”ถ Beta TeX Render TeX math symbols and equations ๐Ÿ”ถ Beta Graphviz Render Graphviz DOT to SVG images โš ๏ธ Beta Jinja Interpolate document variables into styling and other code โš ๏ธ Beta Style Transpile Tailwind and CSS for styling ๐Ÿ”ถ Beta HTTP Interact with RESTful APIs โ” Maybe; v1

Tip

Run stencila kernels (or cargo run -p cli kernels in development) for an up to date list of kernels, including those available through plugins.

Tools are what we call the self-contained Stencila products you can download and use locally on your machine to interact with Stencila documents.

Environments Purpose Status CLI Manage documents from the command line and read and edit them using a web browser โš ๏ธ Alpha Desktop Manage, read and edit documents from a desktop app โš ๏ธ Alpha repo VSCode extension Manage, read and edit documents from within VSCode โš ๏ธ Alpha

Stencila's software development kits (SDKs) enable developers to create plugins to extend Stencila's core functionality or to build other tools on top of. At this stage we are planning to support Python, Node.js and R but more languages may be added if there is demand.

Making sure Stencila v2 is well tested, fast, secure, and accessible, is important. Here's what where doing towards that:

What Description Status Property-based testing Establish property-based (a.k.a generative) testing for Stencila documents ๐ŸŸข Done Round-trip testing Establish property-based tests of round-trip conversion to/from supported formats and reading/writing from/to Automerge CRDTs ๐ŸŸข Done here and here Coverage reporting Report coverage by feature (e.g. by codec) to give developers better insight into the status of each ๐ŸŸข Done Codecov Dependency audits Add dependency audits to continuous integration workflow. ๐ŸŸข Done Accessibility testing Add accessibility testing to continuous integration workflow. ๐ŸŸข Done here Performance monitoring Establish continuous benchmarking ๐ŸŸข Done here Security audit External security audit sponsored by NLNet. ๐Ÿงญ Planned Q2 2023 (after most v2 functionality added and before public beta) Accessibility audit External accessibility audit sponsored by NLNet. ๐Ÿงญ Planned Q3 2023 (before v2.0.0 release)

At this stage, documentation for v2 is mainly reference material, much of it generated:

More reference docs as well as guides and tutorial will be added over the coming months. We will be bootstrapping the publishing of all docs (i.e. to use Stencila itself to publish HTML pages) and expect to have an initial published set in.

Although v2 is in early stages of development, and functionality may be limited or buggy, we are releasing alpha versions of the Stencila CLI and SDKs. Doing so allows us to get early feedback and monitor what impact the addition of features has on build times and distribution sizes.

Windows

To install the latest release download stencila-<version>-x86_64-pc-windows-msvc.zip from the latest release and place it somewhere on your PATH.

MacOS

To install the latest release in /usr/local/bin,

curl -LsSf https://stencila.io/install.sh | bash

To install a specific version, append -s vX.X.X. Or, if you'd prefer to do it manually, download stencila-<version>-x86_64-apple-darwin.tar.gz from the one of the releases and then,

tar xvf stencila-*.tar.gz
cd stencila-*/
sudo mv -f stencila /usr/local/bin # or wherever you prefer
Linux

To install the latest release in ~/.local/bin/,

curl -LsSf https://stencila.io/install.sh | bash

To install a specific version, append -s vX.X.X. Or, if you'd prefer to do it manually, download stencila-<version>-x86_64-unknown-linux-gnu.tar.gz from the one of the releases and then,

tar xvf stencila-*.tar.gz
mv -f stencila ~/.local/bin/ # or wherever you prefer
Docker

The CLI is also available in a Docker image you can pull from the Github Container Registry,

docker pull stencila/stencila

and use locally like this for example,

docker run -it --rm -v "$PWD":/work -w /work --network host stencila/stencila --help

The same image is also published to the Github Container Registry if you'd prefer to use that,

docker pull ghcr.io/stencila/stencila
Python

Use your favorite package manager to install Stencila's SDK for Python:

python -m pip install stencila

[!NOTE] If you encounter problems with the above command, you may need to upgrade Pip using pip install --upgrade pip.

Node

Use your favorite package manager to install @stencila/node:

npm install @stencila/node
TypeScript

Use your favorite package manager to install @stencila/types:

npm install @stencila/types

This repository is organized into the following modules. Please see their respective READMEs, where available, for guides to contributing to each.

Continuous integration and deployment

Several Github Action workflows are used for testing and releases. All products (i.e CLI, Docker image, SKDs) are released at the same time with the same version number. To create and release a new version:

bash scripts/bump-version.sh <VERSION>
git push && git push --tags

Stencila is built on the shoulders of many open source projects. Our sincere thanks to all the maintainers and contributors of those projects for their vision, enthusiasm and dedication. But most of all for all their hard work! The following open source projects in particular have an important role in the current version of Stencila. We sponsor these projects where, and to an extent, possible through GitHub Sponsors and Open Collective.

We wouldnโ€™t be doing this without the support of these forward looking organizations.

Thank you to all our contributors (not just the ones that submitted code!). If you made a contribution but are not listed here please create an issue, or PR, like this.


RetroSearch is an open source project built by @garambo | Open a GitHub Issue

Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo

HTML: 3.2 | Encoding: UTF-8 | Version: 0.7.4