Git Product home page Git Product logo

stencila's Introduction

Stencila

๐Ÿ‘‹ Introduction

Stencila is a platform for collaborating on, and publishing, dynamic, data-driven content. Our aim is to lower the barriers for creating data-driven documents and make it easier to create beautiful, interactive, and semantically rich, articles, web pages and applications from them.

๐Ÿ“ˆ Status

This is v2 of Stencila, a rewrite in Rust aimed at leveraging two relatively recent and impactful innovations:

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 (e.g. how changes are applied to dynamic documents). Furthermore, a rewrite allow us to bake in, rather than bolt on, mechanisms to mitigate the risks associated with using LLM assistants for authoring documents (e.g. recording the actor, human or LLM, that made the change to a document).

We're in the early stages of this rewrite, and this document will be updated with a roadmap and other details soon.

We are currently tagging releases using a 2.0.0-alpha.X pattern (where we increment X on each release). The v1 branch can be browsed here.

๐Ÿ“ฅ Install

Although v2 is in early stages of development, and functionality may be limited or buggy, we are taking a continuous delivery approach and releasing binary builds of alpha versions of the Stencila CLI tool and language packages. Doing so allows us to get early feedback and monitor what impact the addition of features has on build times and distribution sizes.

CLI tool

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 -L https://raw.githubusercontent.com/stencila/stencila/main/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.xz from the one of the releases and then,

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

Linux

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

curl -L https://raw.githubusercontent.com/stencila/stencila/main/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.xz from the one of the releases and then,

tar xvf stencila-*.tar.xz
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 ghcr.io/stencila/stencila

and use locally like this for example,

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

๐Ÿ› ๏ธ Develop

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

  • schema: YAML files which define the Stencila Schema, an implementation of, and extensions to, https://schema.org, for documents.

  • json-ld ๐Ÿ—๏ธ In progress: A JSON LD @context for Stencila Schema generated from the files in schema.

  • json-schema ๐Ÿ—๏ธ In progress: A JSON Schema for Stencila Schema generated from the files in schema.

  • rust: Several Rust crates implementing core functionality and a CLI for working with documents that adhere to that Stencila Schema.

  • docs ๐Ÿ—๏ธ In progress: Documentation, including reference documentation generated from schema and the rust CLI interface.

  • examples ๐Ÿ—๏ธ In progress: Example of documents conforming to Stencila Schema.

  • node ๐Ÿงญ Planned: A Node.js package built on top of the Rust crates which provides interfaces to use Stencila from within Node.js.

  • python ๐Ÿงญ Planned: A Python package built on top of the Rust crates which provides interfaces to use Stencila from within Python.

  • r ๐Ÿงญ Planned: An R package built on top of the Rust crates which provides interfaces to use Stencila from within R.

๐Ÿ’– Supporters

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

๐Ÿ™ Acknowledgements

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.

Link Summary
Automerge A Rust library of data structures for building collaborative applications.
Clap A Command Line Argument Parser for Rust.
Rust A multi-paradigm, high-level, general-purpose programming language which emphasizes performance, type safety, and concurrency.
Serde A framework for serializing and deserializing Rust data structures efficiently and generically.
Similar A Rust library of diffing algorithms including Patience and Huntโ€“McIlroy / Huntโ€“Szymanski LCS.
Tokio An asynchronous runtime for Rust which provides the building blocks needed for writing network applications without compromising speed.

stencila's People

Contributors

100ideas avatar alex-ketch avatar alexsisiucendava avatar allcontributors[bot] avatar apawlik avatar beneboy avatar colettedoughty avatar daniel-mietchen avatar daniellecrobinson avatar davidcmoulton avatar dependabot[bot] avatar discodavey avatar fkmendes avatar greenkeeper[bot] avatar huang12zheng avatar integral avatar jwijay avatar larsgw avatar nlisgo avatar nokome avatar obuchtala avatar oliver7654 avatar renovate-bot avatar renovate[bot] avatar rgieseke avatar sethvincent avatar solsson avatar stencila-ci avatar timclicks avatar wooorm avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.