{"id":13478391,"url":"https://github.com/stencila/stencila","last_synced_at":"2025-05-14T05:10:33.804Z","repository":{"id":3449786,"uuid":"4503128","full_name":"stencila/stencila","owner":"stencila","description":"Documents with Scientific Intelligence","archived":false,"fork":false,"pushed_at":"2025-05-09T22:35:22.000Z","size":260122,"stargazers_count":823,"open_issues_count":116,"forks_count":51,"subscribers_count":26,"default_branch":"main","last_synced_at":"2025-05-09T23:24:30.860Z","etag":null,"topics":["document","executable","programmable"],"latest_commit_sha":null,"homepage":"https://stencila.io","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/stencila.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2012-05-31T02:43:31.000Z","updated_at":"2025-05-09T22:15:55.000Z","dependencies_parsed_at":"2023-11-12T01:31:57.763Z","dependency_job_id":"e855c78d-1816-4a5b-9840-a75df117dbbd","html_url":"https://github.com/stencila/stencila","commit_stats":{"total_commits":13728,"total_committers":47,"mean_commits":292.0851063829787,"dds":"0.32918123543123545","last_synced_commit":"b793e86b2a41b10754e52a6ed9bf613cc3ab9b86"},"previous_names":[],"tags_count":325,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/stencila%2Fstencila","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/stencila%2Fstencila/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/stencila%2Fstencila/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/stencila%2Fstencila/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/stencila","download_url":"https://codeload.github.com/stencila/stencila/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":254076849,"owners_count":22010611,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["document","executable","programmable"],"created_at":"2024-07-31T16:01:56.363Z","updated_at":"2025-05-14T05:10:33.767Z","avatar_url":"https://github.com/stencila.png","language":"Rust","funding_links":["https://opencollective.com/stencila"],"categories":["HTML","Rust","Data Science Notebook Frameworks","others","知识管理_wiki知识库","Notebook Sharing \u0026 Conversion","Data Science Notebook","Jupyter-Notebook分享与格式转换","Runtimes/Frontends"],"sub_categories":["资源传输下载"],"readme":"\u003cdiv align=\"center\"\u003e\n  \u003cimg src=\"docs/images/stencila.png\" alt=\"Stencila\" width=300\u003e\n\u003c/div\u003e\n\n\u003cbr\u003e\n\n\u003cdiv align=\"center\"\u003e\n\t\u003cstrong\u003eDocuments with Scientific Intelligence\u003c/strong\u003e\n\u003c/div\u003e\n\n\u003cdiv align=\"center\"\u003e\n  \u003ca href=\"#-introduction\"\u003e\n    👋 Intro\n  \u003c/a\u003e •\n  \u003ca href=\"#-roadmap\"\u003e\n    🚴 Roadmap\n  \u003c/a\u003e •\n  \u003ca href=\"#-documentation\"\u003e\n    📜 Docs\n  \u003c/a\u003e •\n  \u003ca href=\"#-install\"\u003e\n    📥 Install\n  \u003c/a\u003e •\n  \u003ca href=\"#%EF%B8%8F-develop\"\u003e\n    🛠️ Develop\n  \u003c/a\u003e\n\u003c/div\u003e\n\n\u003cdiv align=\"center\"\u003e\n  \u003ca href=\"#-acknowledgements\"\u003e\n    🙏 Acknowledgements\n  \u003c/a\u003e •\n  \u003ca href=\"#-supporters\"\u003e\n    💖 Supporters\n  \u003c/a\u003e •\n  \u003ca href=\"#-contributors\"\u003e\n    🙌 Contributors\n  \u003c/a\u003e\n\u003c/div\u003e\n\n\u003cbr\u003e\n\n\u003cdiv align=\"center\"\u003e\n  \u003ca href=\"#-contributors\"\u003e\n    \u003cimg src=\"https://img.shields.io/github/all-contributors/stencila/stencila?logo=github\u0026label=contributors\u0026style=for-the-badge\u0026color=1d3bd1\u0026logoColor=66ff66\u0026labelColor=3219a8\"\u003e\n  \u003c/a\u003e\n  \u003ca href=\"https://discord.gg/GADr6Jv\"\u003e\n    \u003cimg src=\"https://img.shields.io/discord/709952324356800523.svg?logo=discord\u0026style=for-the-badge\u0026color=1d3bd1\u0026logoColor=66ff66\u0026labelColor=3219a8\"\u003e\n  \u003c/a\u003e\n  \u003ca href=\"https://github.com/stencila/stencila/releases\"\u003e\n    \u003cimg src=\"https://img.shields.io/github/v/release/stencila/stencila.svg?logo=gnu-bash\u0026label=cli\u0026style=for-the-badge\u0026color=1d3bd1\u0026logoColor=66ff66\u0026labelColor=3219a8\"\u003e\n  \u003c/a\u003e\n  \u003ca href=\"https://hub.docker.com/r/stencila/stencila\"\u003e\n    \u003cimg src=\"https://img.shields.io/docker/v/stencila/stencila.svg?logo=docker\u0026label=stencila/stencila\u0026style=for-the-badge\u0026color=1d3bd1\u0026logoColor=66ff66\u0026labelColor=3219a8\"\u003e\n  \u003c/a\u003e\n  \u003ca href=\"https://pypi.org/project/stencila/\"\u003e\n    \u003cimg src=\"https://img.shields.io/pypi/v/stencila.svg?logo=python\u0026label=stencila\u0026style=for-the-badge\u0026color=1d3bd1\u0026logoColor=66ff66\u0026labelColor=3219a8\"\u003e\n  \u003c/a\u003e\n  \u003ca href=\"https://www.npmjs.com/package/@stencila/node\"\u003e\n    \u003cimg src=\"https://img.shields.io/npm/v/%40stencila%2Fnode.svg?logo=npm\u0026label=%40stencila%2Fnode\u0026\u0026style=for-the-badge\u0026color=1d3bd1\u0026logoColor=66ff66\u0026labelColor=3219a8\"\u003e\n  \u003c/a\u003e\n  \u003ca href=\"https://www.npmjs.com/package/@stencila/types\"\u003e\n    \u003cimg src=\"https://img.shields.io/npm/v/%40stencila%2Ftypes.svg?logo=npm\u0026label=%40stencila%2Ftypes\u0026style=for-the-badge\u0026color=1d3bd1\u0026logoColor=66ff66\u0026labelColor=3219a8\"\u003e\n  \u003c/a\u003e\n\u003c/div\u003e\n\n\u003cbr\u003e\n\n## 👋 Introduction\n\nStencila 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.\n\nThis is `v2` of Stencila, a rewrite in Rust focussed on the synergies between three recent and impactful innovations and trends:\n\n- [Conflict-free replicated data types (CRDTs)](https://crdt.tech/) for de-centralized collaboration and version control.\n\n- [Large language models (LLMs)](https://en.wikipedia.org/wiki/Large_language_model) for assisting in writing and editing, prose and code.\n\n- The blurring of the lines between documents and applications as seen in tools such as [Notion](https://notion.com) and [Coda](https://coda.io/).\n\nWe 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](https://github.com/stencila/stencila/tree/v1) will be reused (after some tidy-ups and refactoring), so `v2` is not a _complete_ rewrite.\n\n## 🚴 Roadmap\n\nOur 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.\n\nWe'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.\n\n🟢 Stable • 🔶 Beta • ⚠️ Alpha • 🚧 Under development • 🧪 Experimental • 🧭 Planned • ❔ Maybe\n\n### Schema\n\nThe Stencila Schema is the data model for Stencila documents (definition [here](https://github.com/stencila/stencila/tree/main/schema), generated reference documentation [here](https://github.com/stencila/stencila/tree/main/docs/reference/schema)). Most of the schema is well defined but some document node types are still marked as under development. A summary by category:\n\n| Category | Description                                                                                                                                                                                                                                                                                                                           | Status                                             |\n| -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------- |\n| Works    | Types of creative works (e.g. [`Article`](https://github.com/stencila/stencila/blob/main/docs/reference/schema/works/article.md), [`Figure`](https://github.com/stencila/stencila/blob/main/docs/reference/schema/works/figure.md), [`Review`](https://github.com/stencila/stencila/blob/main/docs/reference/schema/works/review.md)) | 🟢 Stable (mostly based on schema.org)             |\n| Prose    | Types used in prose (e.g. [`Paragraph`](https://github.com/stencila/stencila/blob/main/docs/reference/schema/prose/paragraph.md), [`List`](https://github.com/stencila/stencila/blob/main/docs/reference/schema/prose/list.md), [`Heading`](https://github.com/stencila/stencila/blob/main/docs/reference/schema/prose/heading.md))   | 🟢 Stable (mostly based on HTML, JATS, Pandoc etc) |\n| Code     | Types for executable (e.g. [`CodeChunk`](https://github.com/stencila/stencila/blob/main/docs/reference/schema/code/code-chunk.md)) and non-executable code (e.g. [`CodeBlock`](https://github.com/stencila/stencila/blob/main/docs/reference/schema/code/code-block.md))                                                              | 🔶 Beta (may change)                               |\n| Math     | Types for math symbols and equations (e.g. [`MathBlock`](https://github.com/stencila/stencila/blob/main/docs/reference/schema/math/math-block.md))                                                                                                                                                                                    | 🔶 Beta (may change)                               |\n| Data     | Fundamental data types (e.g. [`Number`](https://github.com/stencila/stencila/blob/main/docs/reference/schema/data/number.md)) and validators (e.g. [`NumberValidator`](https://github.com/stencila/stencila/blob/main/docs/reference/schema/data/number-validator.md))                                                                | 🔶 Beta (may change)                               |\n| Flow     | Types for control flow within a document (e.g. [`If`](https://github.com/stencila/stencila/blob/main/docs/reference/schema/flow/if.md), [`For`](https://github.com/stencila/stencila/blob/main/docs/reference/schema/flow/for.md), [`Call`](https://github.com/stencila/stencila/blob/main/docs/reference/schema/flow/call.md))       | 🔶 Beta (may change)                               |\n| Style    | Types for styling parts of a documents ([`Span`](https://github.com/stencila/stencila/blob/main/docs/reference/schema/style/span.md) and [`Division`](https://github.com/stencila/stencila/blob/main/docs/reference/schema/style/division.md))                                                                                        | 🔶 Beta (may change)                               |\n| Edits    | Types related to editing a documents (e.g. [`InstructionBlock`](https://github.com/stencila/stencila/blob/main/docs/reference/schema/edits/instruction-block.md))                                                                                                                                                                     | 🔶 Beta (may change)                               |\n\n### Storage and synchronization\n\nIn `v2`, documents can be stored as [binary Automerge CRDT](https://automerge.org/automerge-binary-format-spec/) 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.\n\n| Functionality                | Description                                                                                                                                                   | Status     |\n| ---------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------- |\n| Documents read/write-able    | Able to write a Stencila document to an Automerge binary file and read it back in                                                                             | ⚠️ Alpha   |\n| Documents import/export-able | Able to import or export document as alternative formats, using tree diffing to generate CRDT changes                                                         | ⚠️ Alpha   |\n| Documents fork/merge-able    | Able to create a fork of a document in another file and then later merge with the original                                                                    | 🧭 Planned |\n| 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 |\n| Git merge driver             | CLI can act as a [custom Git merge driver](https://www.julianburr.de/til/custom-git-merge-drivers/)                                                           | 🧭 Planned |\n| Relay server                 | Documents can be synchronized by exchanging changes via a relay server                                                                                        | 🧭 Planned |\n| Rendezvous server            | Documents can be synchronized by exchanging changes peer-to-peer using TCP or UDP [hole punching](\u003chttps://en.wikipedia.org/wiki/Hole_punching_(networking)\u003e) | ❔ Maybe   |\n\n### Formats\n\nInteroperability 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`](https://github.com/stencila/encoda) to Rust.\n\n| Format                                                                                              | Encoding | Decoding |                                                                                     Coverage                                                                                     | Notes                                                                                                                                                       |\n| --------------------------------------------------------------------------------------------------- | :------: | :------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | ----------------------------------------------------------------------------------------------------------------------------------------------------------- |\n| [JSON](https://github.com/stencila/stencila/blob/main/docs/reference/formats/json.md)               |    🟢    |    🟢    |   [![](https://img.shields.io/endpoint?cacheSeconds=900\u0026url=https://shields.stencila.dev/codecov?comp=codec_json)](https://app.codecov.io/gh/stencila/stencila/tree/main/rust)   |                                                                                                                                                             |\n| [JSON5](https://github.com/stencila/stencila/blob/main/docs/reference/formats/json5.md)             |    🟢    |    🟢    |  [![](https://img.shields.io/endpoint?cacheSeconds=900\u0026url=https://shields.stencila.dev/codecov?comp=codec_json5)](https://app.codecov.io/gh/stencila/stencila/tree/main/rust)   |                                                                                                                                                             |\n| [JSON-LD](https://github.com/stencila/stencila/blob/main/docs/reference/formats/jsonld.md)          |    🟢    |    🟢    |  [![](https://img.shields.io/endpoint?cacheSeconds=900\u0026url=https://shields.stencila.dev/codecov?comp=codec_jsonld)](https://app.codecov.io/gh/stencila/stencila/tree/main/rust)  |                                                                                                                                                             |\n| [CBOR](https://github.com/stencila/stencila/blob/main/docs/reference/formats/cbor.md)               |    🟢    |    🟢    |   [![](https://img.shields.io/endpoint?cacheSeconds=900\u0026url=https://shields.stencila.dev/codecov?comp=codec_cbor)](https://app.codecov.io/gh/stencila/stencila/tree/main/rust)   |                                                                                                                                                             |\n| [CBOR+Zstandard](https://github.com/stencila/stencila/blob/main/docs/reference/formats/cborzstd.md) |    🟢    |    🟢    |   [![](https://img.shields.io/endpoint?cacheSeconds=900\u0026url=https://shields.stencila.dev/codecov?comp=codec_cbor)](https://app.codecov.io/gh/stencila/stencila/tree/main/rust)   |                                                                                                                                                             |\n| [YAML](https://github.com/stencila/stencila/blob/main/docs/reference/formats/yaml.md)               |    🟢    |    🟢    |   [![](https://img.shields.io/endpoint?cacheSeconds=900\u0026url=https://shields.stencila.dev/codecov?comp=codec_yaml)](https://app.codecov.io/gh/stencila/stencila/tree/main/rust)   |                                                                                                                                                             |\n| Plain text                                                                                          |    🔶    |    -     |   [![](https://img.shields.io/endpoint?cacheSeconds=900\u0026url=https://shields.stencila.dev/codecov?comp=codec_text)](https://app.codecov.io/gh/stencila/stencila/tree/main/rust)   |                                                                                                                                                             |\n| [HTML](https://github.com/stencila/stencila/blob/main/docs/reference/formats/html.md)               |    🚧    |    🧭    |   [![](https://img.shields.io/endpoint?cacheSeconds=900\u0026url=https://shields.stencila.dev/codecov?comp=codec_html)](https://app.codecov.io/gh/stencila/stencila/tree/main/rust)   |                                                                                                                                                             |\n| [JATS](https://github.com/stencila/stencila/blob/main/docs/reference/formats/jats.md)               |    🚧    |    🚧    |   [![](https://img.shields.io/endpoint?cacheSeconds=900\u0026url=https://shields.stencila.dev/codecov?comp=codec_jats)](https://app.codecov.io/gh/stencila/stencila/tree/main/rust)   | Planned for completion. Port decoding and tests from [`encoda`](https://github.com/stencila/encoda/).                                                       |\n| [Markdown](https://github.com/stencila/stencila/blob/main/docs/reference/formats/markdown.md)       |    ⚠️    |    ⚠️    | [![](https://img.shields.io/endpoint?cacheSeconds=900\u0026url=https://shields.stencila.dev/codecov?comp=codec_markdown)](https://app.codecov.io/gh/stencila/stencila/tree/main/rust) |                                                                                                                                                             |\n| R Markdown                                                                                          |    🧭    |    🧭    |                                                                                                                                                                                  | Relies on Markdown; [`v1`](https://github.com/stencila/stencila/tree/v1/rust/codec-rmd)                                                                     |\n| Myst Markdown                                                                                       |    🚧    |    🚧    |                                                                                                                                                                                  | In progress; [PR](https://github.com/stencila/stencila/pull/2219)                                                                                           |\n| Jupyter Notebook                                                                                    |    🧭    |    🧭    |                                                                                                                                                                                  | Relies on Markdown; [`v1`](https://github.com/stencila/stencila/tree/v1/rust/codec-ipynb)                                                                   |\n| Scripts                                                                                             |    🧭    |    🧭    |                                                                                                                                                                                  | Relies on Markdown; [`v1`](https://github.com/stencila/stencila/tree/v1/rust/codec-script)                                                                  |\n| Pandoc                                                                                              |    🧭    |    🧭    |                                                                                                                                                                                  | Planned. [`v1`](https://github.com/stencila/stencila/tree/v1/rust/codec-pandoc)                                                                             |\n| LaTeX                                                                                               |    🧭    |    🧭    |                                                                                                                                                                                  | Relies on Pandoc; [`v1`](https://github.com/stencila/stencila/tree/v1/rust/codec-latex); [discussion](https://github.com/stencila/stencila/discussions/858) |\n| Org                                                                                                 |    🧭    |    🧭    |                                                                                                                                                                                  | Relies on Pandoc; [PR](https://github.com/stencila/stencila/pull/1485)                                                                                      |\n| Microsoft Word                                                                                      |    🧭    |    🧭    |                                                                                                                                                                                  | Relies on Pandoc; [`v1`](https://github.com/stencila/stencila/tree/v1/rust/codec-docx)                                                                      |\n| ODT                                                                                                 |    🧭    |    🧭    |                                                                                                                                                                                  | Relies on Pandoc                                                                                                                                            |\n| Google Docs                                                                                         |    🧭    |    🧭    |                                                                                                                                                                                  | Planned [`v1`](https://github.com/stencila/stencila/tree/v1/rust/codec-gdoc)                                                                                |\n| PDF                                                                                                 |    🧭    |    🧭    |                                                                                                                                                                                  | Planned, relies on HTML; [`v1`](https://github.com/stencila/stencila/tree/v1/rust/codec-pdf)                                                                |\n| Codec Plugin API                                                                                    |    🧭    |    🧭    |                                                                                                                                                                                  | An API allowing codecs to be developed as plugins in Python, Node.js, and other languages                                                                   |\n\n### Kernels\n\nKernels are what executes the code in Stencila `CodeChunk`s and `CodeExpression`s, 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.\n\n| Kernel                                                                     | Purpose                                                    | Status                                                                           |\n| -------------------------------------------------------------------------- | ---------------------------------------------------------- | -------------------------------------------------------------------------------- |\n| [Bash](https://gnu.org/software/bash/)                                     | Execute Bash code                                          | 🔶 Beta                                                                          |\n| [Zsh](https://zsh.org/)                                                    | Execute Zsh code                                           | ❔ Maybe; [`v1`](https://github.com/stencila/stencila/tree/v1/rust/kernel-zsh)   |\n| [Python](https://python.org/)                                              | Execute Python code                                        | 🔶 Beta                                                                          |\n| [R](https://r-project.org/)                                                | Execute R code                                             | ⚠️ Alpha                                                                         |\n| [QuickJs](https://bellard.org/quickjs/)                                    | Execute JavaScript in embedded sandbox                     | 🔶 Beta                                                                          |\n| [Node.js](https://nodejs.org)                                              | Execute JavaScript in a Node.js env                        | 🔶 Beta                                                                          |\n| [Deno](https://debo.com)                                                   | Execute TypeScript code                                    | ❔ Maybe; [`v1`](https://github.com/stencila/stencila/tree/v1/rust/kernel-deno)  |\n| [SQLite](https://sqlite.org)                                               | Execute SQL code                                           | 🧭 Planned; [`v1`](https://github.com/stencila/stencila/tree/v1/rust/kernel-sql) |\n| [Jupyter kernels](https://github.com/jupyter/jupyter/wiki/Jupyter-kernels) | Execute code in Jupyter kernels                            | 🚧 In progress; [PR](https://github.com/stencila/stencila/pull/1719)             |\n| [Rhai](https://rhai.rs/)                                                   | Execute a sand boxed, embedded language                    | 🔶 Beta                                                                          |\n| [AsciiMath](https://asciimath.org/)                                        | Render AsciiMath symbols and equations                     | 🔶 Beta                                                                          |\n| [TeX](https://en.wikipedia.org/wiki/TeX)                                   | Render TeX math symbols and equations                      | 🔶 Beta                                                                          |\n| [Graphviz](https://graphviz.org/)                                          | Render Graphviz DOT to SVG images                          | ⚠️ Beta                                                                          |\n| [Jinja](https://jinja.palletsprojects.com/en/3.1.x/)                       | Interpolate document variables into styling and other code | ⚠️ Beta                                                                          |\n| Style                                                                      | Transpile [Tailwind]() and CSS for styling                 | 🔶 Beta                                                                          |\n| HTTP                                                                       | Interact with RESTful APIs                                 | ❔ Maybe; [`v1`](https://github.com/stencila/stencila/tree/v1/rust/kernel-http)  |\n\n\u003e [!TIP]\n\u003e Run `stencila kernels` (or `cargo run -p cli kernels` in development) for an up to date list of kernels, including those available through plugins.\n\n### Tools\n\nTools are what we call the self-contained Stencila products you can download and use locally on your machine to interact with Stencila documents.\n\n| Environments     | Purpose                                                                           | Status                                              |\n| ---------------- | --------------------------------------------------------------------------------- | --------------------------------------------------- |\n| CLI              | Manage documents from the command line and read and edit them using a web browser | ⚠️ Alpha                                            |\n| Desktop          | Manage, read and edit documents from a desktop app                                | ⚠️ Alpha [repo](https://github.com/stencila/writer) |\n| VSCode extension | Manage, read and edit documents from within VSCode                                | ⚠️ Alpha                                            |\n\n### SDKs\n\nStencila'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.\n\n| Language   | Description                                                     | Status                                                        | Coverage                                                                                                                                                                |\n| ---------- | --------------------------------------------------------------- | ------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------- |\n| Python     | Types and function bindings for using Stencila from Python      | ⚠️ Alpha [PyPI](https://pypi.org/project/stencila/)           | [![](https://img.shields.io/endpoint?url=https://shields.stencila.dev/codecov?comp=sdk_python)](https://app.codecov.io/gh/stencila/stencila/tree/main/python)           |\n| TypeScript | JavaScript classes and TypeScript types for the Stencila Schema | ⚠️ Alpha [NPM](https://www.npmjs.com/package/@stencila/types) |                                                                                                                                                                         |\n| Node.js    | Types and function bindings for using Stencila from Node.js     | ⚠️ Alpha [NPM](https://www.npmjs.com/package/@stencila/node)  | [![](https://img.shields.io/endpoint?url=https://shields.stencila.dev/codecov?comp=sdk_node)](https://app.codecov.io/gh/stencila/stencila/tree/main/node/stencila-node) |\n\n### Testing and auditing\n\nMaking sure Stencila `v2` is well tested, fast, secure, and accessible, is important. Here's what where doing towards that:\n\n| What                   | Description                                                                                                                   | Status                                                                                                                                                                                      |\n| ---------------------- | ----------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |\n| Property-based testing | Establish property-based (a.k.a generative) testing for Stencila documents                                                    | 🟢 Done                                                                                                                                                                                     |\n| Round-trip testing     | Establish property-based tests of round-trip conversion to/from supported formats and reading/writing from/to Automerge CRDTs | 🟢 Done [here](https://github.com/stencila/stencila/blob/main/rust/codecs/tests/proptests.rs) and [here](https://github.com/stencila/stencila/blob/main/rust/node-store/tests/proptests.rs) |\n| Coverage reporting     | Report coverage by feature (e.g. by codec) to give developers better insight into the status of each                          | 🟢 Done [Codecov](https://app.codecov.io/gh/stencila/stencila)                                                                                                                              |\n| Dependency audits      | Add dependency audits to continuous integration workflow.                                                                     | 🟢 Done                                                                                                                                                                                     |\n| Accessibility testing  | Add accessibility testing to continuous integration workflow.                                                                 | 🟢 Done [here](https://github.com/stencila/stencila/blob/main/rust/codecs/tests/accessibility.js)                                                                                       |\n| Performance monitoring | Establish continuous benchmarking                                                                                             | 🟢 Done [here](https://stencila.dev/develop/benchmarks/)                                                                                                                                    |\n| Security audit         | External security audit sponsored by NLNet.                                                                                   | 🧭 Planned Q2 2023 (after most `v2` functionality added and before public beta)                                                                                                             |\n| Accessibility audit    | External accessibility audit sponsored by NLNet.                                                                              | 🧭 Planned Q3 2023 (before `v2.0.0` release)                                                                                                                                                |\n\n## 📜 Documentation\n\nAt this stage, documentation for `v2` is mainly reference material, much of it generated:\n\n- [Schema](https://github.com/stencila/stencila/tree/main/docs/reference/schema)\n- [Formats](https://github.com/stencila/stencila/tree/main/docs/reference/formats)\n- [CLI](https://github.com/stencila/stencila/tree/main/docs/reference/cli.md)\n\nMore 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.\n\n## 📥 Install\n\nAlthough `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.\n\n### CLI\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cstrong\u003eWindows\u003c/strong\u003e\u003c/summary\u003e\n\nTo install the latest release download `stencila-\u003cversion\u003e-x86_64-pc-windows-msvc.zip` from the [latest release](https://github.com/stencila/stencila/releases/latest) and place it somewhere on your `PATH`.\n\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cstrong\u003eMacOS\u003c/strong\u003e\u003c/summary\u003e\n\nTo install the latest release in `/usr/local/bin`,\n\n```console\ncurl -sSf https://stencila.dev/install.sh | sh\n```\n\nTo install a specific version, append `-s vX.X.X`. Or, if you'd prefer to do it manually, download `stencila-\u003cversion\u003e-x86_64-apple-darwin.tar.gz` from the one of the [releases](https://github.com/stencila/stencila/releases) and then,\n\n```console\ntar xvf stencila-*.tar.gz\ncd stencila-*/\nsudo mv -f stencila /usr/local/bin # or wherever you prefer\n```\n\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cstrong\u003eLinux\u003c/strong\u003e\u003c/summary\u003e\n\nTo install the latest release in `~/.local/bin/`,\n\n```console\ncurl -sSf https://stencila.dev/install.sh | sh\n```\n\nTo install a specific version, append `-s vX.X.X`. Or, if you'd prefer to do it manually, download `stencila-\u003cversion\u003e-x86_64-unknown-linux-gnu.tar.gz` from the one of the [releases](https://github.com/stencila/stencila/releases) and then,\n\n```console\ntar xvf stencila-*.tar.gz\nmv -f stencila ~/.local/bin/ # or wherever you prefer\n```\n\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cstrong\u003eDocker\u003c/strong\u003e\u003c/summary\u003e\n\nThe CLI is also available in a Docker image you can pull from the Github Container Registry,\n\n```console\ndocker pull stencila/stencila\n```\n\nand use locally like this for example,\n\n```console\ndocker run -it --rm -v \"$PWD\":/work -w /work --network host stencila/stencila --help\n```\n\nThe same image is also published to the Github Container Registry if you'd prefer to use that,\n\n```console\ndocker pull ghcr.io/stencila/stencila\n```\n\n\u003c/details\u003e\n\n### SDKs\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cstrong\u003ePython\u003c/strong\u003e\u003c/summary\u003e\n\nUse your favorite package manager to install Stencila's [SDK for Python](https://pypi.org/project/stencila/):\n\n```console\npython -m pip install stencila\n```\n\n\u003e [!NOTE]\n\u003e If you encounter problems with the above command, you may need to upgrade Pip using `pip install --upgrade pip`.\n\n```console\npoetry add stencila\n```\n\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cstrong\u003eNode\u003c/strong\u003e\u003c/summary\u003e\n\nUse your favorite package manager to install [`@stencila/node`](https://www.npmjs.com/package/@stencila/node):\n\n```console\nnpm install @stencila/node\n```\n\n```console\nyarn add @stencila/node\n```\n\n```console\npnpm add @stencila/node\n```\n\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cstrong\u003eTypeScript\u003c/strong\u003e\u003c/summary\u003e\n\nUse your favorite package manager to install [`@stencila/types`](https://www.npmjs.com/package/@stencila/types):\n\n```console\nnpm install @stencila/types\n```\n\n```console\nyarn add @stencila/types\n```\n\n```console\npnpm add @stencila/types\n```\n\n\u003c/details\u003e\n\n## 🛠️ Develop\n\n### Code organization\n\nThis repository is organized into the following modules. Please see their respective READMEs, where available, for guides to contributing to each.\n\n- [`schema`](schema): YAML files which define the Stencila Schema, an implementation of, and extensions to, [schema.org](https://schema.org), for programmable documents.\n\n- [`json`](json): A [JSON Schema](https://json-schema.org/) and [JSON LD](https://json-ld.org/) `@context`, generated from Stencila Schema, which can be used to validate Stencila documents and transform them to other vocabularies\n\n- [`rust`](rust): Several Rust crates implementing core functionality and a CLI for working with Stencila documents.\n\n- [`python`](python): A Python package, with classes generated from Stencila Schema and bindings to Rust functions, so you can work with Stencila documents from within Python.\n\n- [`ts`](ts): A package of TypeScript types generated from Stencila Schema so you can create type-safe Stencila documents in the browser, Node.js, Deno etc.\n\n- [`node`](node): A Node.js package, using the generated TypeScript types and bindings to Rust functions, so you can work with Stencila documents from within Node.js.\n\n- [`prompts`](prompts): Prompts used to instruct generative AI models in different contexts and for different purposes.\n\n- [`docs`](docs): Documentation, including reference documentation generated from `schema` and CLI tool.\n\n- [`examples`](examples): Examples of documents conforming to Stencila Schema, mostly for testing purposes.\n\n- [`scripts`](scripts): Scripts used for making releases and during continuous integration.\n\n### Continuous integration and deployment\n\nSeveral 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:\n\n```console\nbash scripts/bump-version.sh \u003cVERSION\u003e\ngit push \u0026\u0026 git push --tags\n```\n\n| Workflow                                       | Purpose                                                                                                           | Status                                                                                                                                                                |\n| ---------------------------------------------- | ----------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------- |\n| [`test.yml`](.github/workflows/test.yml)       | Run linting, tests and other checks. Commit changes to any generated files.                                       | [![](https://img.shields.io/github/actions/workflow/status/stencila/stencila/test.yml?label=)](https://github.com/stencila/stencila/actions/workflows/test.yml)       |\n| [`pages.yml`](.github/workflows/pages.yml)     | Publish docs, JSON-LD, JSON Schema, etc to https://stencila.dev hosted on GitHub Pages                            | [![](https://img.shields.io/github/actions/workflow/status/stencila/stencila/pages.yml?label=)](https://github.com/stencila/stencila/actions/workflows/pages.yml)     |\n| [`version.yml`](.github/workflows/version.yml) | Trigger the `release.yml` workflow when a version tag is created.                                                 | [![](https://img.shields.io/github/actions/workflow/status/stencila/stencila/version.yml?label=)](https://github.com/stencila/stencila/actions/workflows/version.yml) |\n| [`release.yml`](.github/workflows/release.yml) | Create a release, including building and publishing CLI, Docker image and SDKs.                                   | [![](https://img.shields.io/github/actions/workflow/status/stencila/stencila/release.yml?label=)](https://github.com/stencila/stencila/actions/workflows/release.yml) |\n| [`install.yml`](.github/workflows/install.yml) | Test installation and usage of CLI, Docker image and SDKs across various operating systems and language versions. | [![](https://img.shields.io/github/actions/workflow/status/stencila/stencila/install.yml?label=)](https://github.com/stencila/stencila/actions/workflows/install.yml) |\n\n## 🙏 Acknowledgements\n\nStencila 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](https://github.com/orgs/stencila/sponsoring) and [Open Collective](https://opencollective.com/stencila).\n\n|                                                  | Link                                  | Summary                                                                                                                                 |\n| ------------------------------------------------ | ------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------- |\n| \u003cimg src=\"docs/images/automerge.png\" width=\"80\"\u003e | [Automerge](https://automerge.org/)   | A Rust library of data structures for building collaborative applications.                                                              |\n| \u003cimg src=\"docs/images/clap.png\" width=\"80\"\u003e      | [Clap](https://crates.io/crates/clap) | A Command Line Argument Parser for Rust.                                                                                                |\n| \u003cimg src=\"docs/images/napi.png\" width=\"80\"\u003e      | [NAPI-RS](https://napi.rs)            | A framework for building pre-compiled Node.js addons in Rust.                                                                           |\n| \u003cimg src=\"docs/images/pyo3.png\" width=\"80\"\u003e      | [PyO\u003csub\u003e3\u003c/sub\u003e](https://pyo3.rs)    | Rust bindings for Python, including tools for creating native Python extension modules.                                                 |\n| \u003cimg src=\"docs/images/rust.png\" width=\"80\"\u003e      | [Rust](https://www.rust-lang.org/)    | A multi-paradigm, high-level, general-purpose programming language which emphasizes performance, type safety, and concurrency.          |\n| \u003cimg src=\"docs/images/ferris.png\" width=\"80\"\u003e    | [Serde](https://serde.rs/)            | A framework for **ser**ializing and **de**serializing Rust data structures efficiently and generically.                                 |\n| \u003cimg src=\"docs/images/similar.png\" width=\"80\"\u003e   | [Similar](https://insta.rs/similar/)  | A Rust library of diffing algorithms including Patience and Hunt–McIlroy / Hunt–Szymanski LCS.                                          |\n| \u003cimg src=\"docs/images/tokio.png\" width=\"80\"\u003e     | [Tokio](https://tokio.rs/)            | An asynchronous runtime for Rust which provides the building blocks needed for writing network applications without compromising speed. |\n\n## 💖 Supporters\n\nWe wouldn’t be doing this without the support of these forward looking organizations.\n\n\u003cdiv\u003e\n  \u003cp align=\"center\"\u003e\u003ca href=\"https://astera.org/\"\u003e\u003cimg src=\"docs/images/astera.png\" height=\"70\"\u003e\u003c/img\u003e\u003c/a\u003e\u003cp\u003e\n  \u003cp align=\"center\"\u003e\u003ca href=\"https://sloan.org/\"\u003e\u003cimg src=\"docs/images/sloan.png\" height=\"70\"\u003e\u003c/img\u003e\u003c/a\u003e\u003cp\u003e\n  \u003cp align=\"center\"\u003e\u003ca href=\"https://elifesciences.org/\"\u003e\u003cimg src=\"docs/images/elife.svg\" height=\"70\"\u003e\u003c/img\u003e\u003c/a\u003e\u003cp\u003e\n  \u003cp align=\"center\"\u003e\u003ca href=\"https://nlnet.nl/\"\u003e\u003cimg src=\"docs/images/nlnet.svg\" height=\"70\"\u003e\u003c/img\u003e\u003c/a\u003e\u003cp\u003e\n  \u003cp align=\"center\"\u003e\u003ca href=\"https://coko.foundation/\"\u003e\u003cimg src=\"docs/images/coko.png\" height=\"70\"\u003e\u003c/img\u003e\u003c/a\u003e\u003cp\u003e\n  \u003cp align=\"center\"\u003e\u003ca href=\"https://www.codeforsociety.org/\"\u003e\u003cimg src=\"docs/images/css.png\" height=\"70\"\u003e\u003c/img\u003e\u003c/a\u003e\u003cp\u003e\n  \u003cp align=\"center\"\u003e\u003ca href=\"https://www.callaghaninnovation.govt.nz/\"\u003e\u003cimg src=\"docs/images/callaghan.png\" height=\"70\"\u003e\u003c/img\u003e\u003c/a\u003e\u003cp\u003e\n  \u003cp align=\"center\"\u003e\u003ca href=\"https://www.mbie.govt.nz\"\u003e\u003cimg src=\"docs/images/mbie.jpeg\" height=\"70\"\u003e\u003c/img\u003e\u003c/a\u003e\u003cp\u003e\n  \u003cp align=\"center\"\u003e\u003ca href=\"https://volcanica/\"\u003e\u003cimg src=\"docs/images/volcanica.png\" height=\"70\"\u003e\u003c/img\u003e\u003c/a\u003e\u003cp\u003e\n\u003c/div\u003e\n\n## 🙌 Contributors\n\nThank 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](https://allcontributors.org/docs/en/bot/usage#all-contributors-add).\n\n\u003c!-- ALL-CONTRIBUTORS-LIST:START - Do not remove or modify this section --\u003e\n\u003c!-- prettier-ignore-start --\u003e\n\u003c!-- markdownlint-disable --\u003e\n\u003ctable\u003e\n  \u003ctbody\u003e\n    \u003ctr\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"https://ackerleytng.github.io/blog/\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/2399902?v=4\" width=\"100px;\" alt=\"Ackerley Tng\" title=\"Ackerley Tng\"/\u003e\u003c/a\u003e\u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"https://github.com/apawlik\"\u003e\u003cimg src=\"https://avatars2.githubusercontent.com/u/2358535?v=4\" width=\"100px;\" alt=\"Aleksandra Pawlik\" title=\"Aleksandra Pawlik\"/\u003e\u003c/a\u003e\u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"http://ketch.me\"\u003e\u003cimg src=\"https://avatars2.githubusercontent.com/u/1646307?v=4\" width=\"100px;\" alt=\"Alex Ketch\" title=\"Alex Ketch\"/\u003e\u003c/a\u003e\u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"https://github.com/beneboy\"\u003e\u003cimg src=\"https://avatars1.githubusercontent.com/u/292725?v=4\" width=\"100px;\" alt=\"Ben Shaw\" title=\"Ben Shaw\"/\u003e\u003c/a\u003e\u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"https://github.com/colettedoughty\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/64813273?v=4\" width=\"100px;\" alt=\"Colette Doughty\" title=\"Colette Doughty\"/\u003e\u003c/a\u003e\u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"https://github.com/Integral\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/182010?v=4\" width=\"100px;\" alt=\"Daniel Beilinson\" title=\"Daniel Beilinson\"/\u003e\u003c/a\u003e\u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"https://uk.linkedin.com/in/daniel-ecer\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/1016473?v=4\" width=\"100px;\" alt=\"Daniel Ecer\" title=\"Daniel Ecer\"/\u003e\u003c/a\u003e\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"https://orcid.org/0000-0001-9488-1870\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/465923?v=4\" width=\"100px;\" alt=\"Daniel Mietchen\" title=\"Daniel Mietchen\"/\u003e\u003c/a\u003e\u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"https://nordholmen.net/\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/1325054?v=4\" width=\"100px;\" alt=\"Daniel Nüst\" title=\"Daniel Nüst\"/\u003e\u003c/a\u003e\u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"https://github.com/daniellecrobinson\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/13207169?v=4\" width=\"100px;\" alt=\"Danielle Robinson\" title=\"Danielle Robinson\"/\u003e\u003c/a\u003e\u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"https://github.com/discodavey\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/745794?v=4\" width=\"100px;\" alt=\"Dave\" title=\"Dave\"/\u003e\u003c/a\u003e\u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"https://github.com/davidcmoulton\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/2893480?v=4\" width=\"100px;\" alt=\"David Moulton\" title=\"David Moulton\"/\u003e\u003c/a\u003e\u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"https://github.com/finlay\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/777798?v=4\" width=\"100px;\" alt=\"Finlay Thompson\" title=\"Finlay Thompson\"/\u003e\u003c/a\u003e\u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"https://github.com/fkmendes\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/10715960?v=4\" width=\"100px;\" alt=\"Fábio H. K. Mendes\" title=\"Fábio H. K. Mendes\"/\u003e\u003c/a\u003e\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"https://github.com/kayakr\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/208184?v=4\" width=\"100px;\" alt=\"J Hunt\" title=\"J Hunt\"/\u003e\u003c/a\u003e\u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"http://toki.io\"\u003e\u003cimg src=\"https://avatars1.githubusercontent.com/u/10161095?v=4\" width=\"100px;\" alt=\"Jacqueline\" title=\"Jacqueline\"/\u003e\u003c/a\u003e\u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"https://github.com/jamestwebber\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/963647?v=4\" width=\"100px;\" alt=\"James Webber\" title=\"James Webber\"/\u003e\u003c/a\u003e\u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"https://juretriglav.si/\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/238667?v=4\" width=\"100px;\" alt=\"Jure Triglav\" title=\"Jure Triglav\"/\u003e\u003c/a\u003e\u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"https://larsgw.github.io/\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/14018963?v=4\" width=\"100px;\" alt=\"Lars Willighagen\" title=\"Lars Willighagen\"/\u003e\u003c/a\u003e\u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"http://has100ideas.com\"\u003e\u003cimg src=\"https://avatars0.githubusercontent.com/u/57006?v=4\" width=\"100px;\" alt=\"Mac Cowell\" title=\"Mac Cowell\"/\u003e\u003c/a\u003e\u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"https://github.com/elfring\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/660477?v=4\" width=\"100px;\" alt=\"Markus Elfring\" title=\"Markus Elfring\"/\u003e\u003c/a\u003e\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"https://github.com/michael\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/2931?v=4\" width=\"100px;\" alt=\"Michael Aufreiter\" title=\"Michael Aufreiter\"/\u003e\u003c/a\u003e\u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"https://moranegg.github.io/\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/6273005?v=4\" width=\"100px;\" alt=\"Morane Gruenpeter\" title=\"Morane Gruenpeter\"/\u003e\u003c/a\u003e\u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"https://github.com/MorphicResonance\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/55984436?v=4\" width=\"100px;\" alt=\"MorphicResonance\" title=\"MorphicResonance\"/\u003e\u003c/a\u003e\u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"https://github.com/Cumol\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/4943380?v=4\" width=\"100px;\" alt=\"Muad Abd El Hay\" title=\"Muad Abd El Hay\"/\u003e\u003c/a\u003e\u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"https://github.com/nokome\"\u003e\u003cimg src=\"https://avatars0.githubusercontent.com/u/1152336?v=4\" width=\"100px;\" alt=\"Nokome Bentley\" title=\"Nokome Bentley\"/\u003e\u003c/a\u003e\u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"https://github.com/obuchtala\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/284099?v=4\" width=\"100px;\" alt=\"Oliver Buchtala\" title=\"Oliver Buchtala\"/\u003e\u003c/a\u003e\u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"https://github.com/rgaiacs\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/1506457?v=4\" width=\"100px;\" alt=\"Raniere Silva\" title=\"Raniere Silva\"/\u003e\u003c/a\u003e\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"https://remi.rampin.org/\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/426784?v=4\" width=\"100px;\" alt=\"Remi Rampin\" title=\"Remi Rampin\"/\u003e\u003c/a\u003e\u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"https://github.com/richlysakowski\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/9345711?v=4\" width=\"100px;\" alt=\"Rich Lysakowski\" title=\"Rich Lysakowski\"/\u003e\u003c/a\u003e\u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"https://github.com/rgieseke\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/198537?v=4\" width=\"100px;\" alt=\"Robert Gieseke\" title=\"Robert Gieseke\"/\u003e\u003c/a\u003e\u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"https://sethvincent.com/\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/164214?v=4\" width=\"100px;\" alt=\"Seth Vincent\" title=\"Seth Vincent\"/\u003e\u003c/a\u003e\u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"https://github.com/stefanfritsch\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/7372706?v=4\" width=\"100px;\" alt=\"Stefan Fritsch\" title=\"Stefan Fritsch\"/\u003e\u003c/a\u003e\u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"http://sirinath.com/\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/637415?v=4\" width=\"100px;\" alt=\"Suminda Sirinath Salpitikorala Dharmasena\" title=\"Suminda Sirinath Salpitikorala Dharmasena\"/\u003e\u003c/a\u003e\u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"https://tim.mcnamara.nz/\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/27889?v=4\" width=\"100px;\" alt=\"Tim McNamara\" title=\"Tim McNamara\"/\u003e\u003c/a\u003e\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"https://github.com/wooorm\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/944406?v=4\" width=\"100px;\" alt=\"Titus\" title=\"Titus\"/\u003e\u003c/a\u003e\u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"http://blog.ouseful.info/\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/82988?v=4\" width=\"100px;\" alt=\"Tony Hirst\" title=\"Tony Hirst\"/\u003e\u003c/a\u003e\u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"https://github.com/ouboub\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/5957203?v=4\" width=\"100px;\" alt=\"Uwe Brauer\" title=\"Uwe Brauer\"/\u003e\u003c/a\u003e\u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"https://vsoch.github.io\"\u003e\u003cimg src=\"https://avatars0.githubusercontent.com/u/814322?v=4\" width=\"100px;\" alt=\"Vanessasaurus\" title=\"Vanessasaurus\"/\u003e\u003c/a\u003e\u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"https://neurathsboat.blog/\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/1205023?v=4\" width=\"100px;\" alt=\"Vassilis Kehayas\" title=\"Vassilis Kehayas\"/\u003e\u003c/a\u003e\u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"https://github.com/alexandr-sisiuc\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/80925015?v=4\" width=\"100px;\" alt=\"alexandr-sisiuc\" title=\"alexandr-sisiuc\"/\u003e\u003c/a\u003e\u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"https://github.com/asisiuc\"\u003e\u003cimg src=\"https://avatars0.githubusercontent.com/u/17000527?v=4\" width=\"100px;\" alt=\"asisiuc\" title=\"asisiuc\"/\u003e\u003c/a\u003e\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"https://github.com/campbellyamane\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/26848216?v=4\" width=\"100px;\" alt=\"campbellyamane\" title=\"campbellyamane\"/\u003e\u003c/a\u003e\u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"https://github.com/ern0\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/1758588?v=4\" width=\"100px;\" alt=\"ern0 - Zalka Ernő\" title=\"ern0 - Zalka Ernő\"/\u003e\u003c/a\u003e\u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"https://github.com/grayflow\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/70041?v=4\" width=\"100px;\" alt=\"grayflow\" title=\"grayflow\"/\u003e\u003c/a\u003e\u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"https://github.com/happydentist\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/35398116?v=4\" width=\"100px;\" alt=\"happydentist\" title=\"happydentist\"/\u003e\u003c/a\u003e\u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"https://github.com/huang12zheng\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/28038074?v=4\" width=\"100px;\" alt=\"huang12zheng\" title=\"huang12zheng\"/\u003e\u003c/a\u003e\u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"https://github.com/ignatiusm\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/11403879?v=4\" width=\"100px;\" alt=\"ignatiusm\" title=\"ignatiusm\"/\u003e\u003c/a\u003e\u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"https://github.com/jm-observer\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/50091488?v=4\" width=\"100px;\" alt=\"jmhuang\" title=\"jmhuang\"/\u003e\u003c/a\u003e\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"https://jonrichter.de/\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/1645308?v=4\" width=\"100px;\" alt=\"jon r\" title=\"jon r\"/\u003e\u003c/a\u003e\u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"https://nyanpasu64.gitlab.io/\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/913957?v=4\" width=\"100px;\" alt=\"kitten\" title=\"kitten\"/\u003e\u003c/a\u003e\u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"https://github.com/solsson\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/144945?v=4\" width=\"100px;\" alt=\"solsson\" title=\"solsson\"/\u003e\u003c/a\u003e\u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"http://www.danbeekim.org/\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/27739141?v=4\" width=\"100px;\" alt=\"taunsquared\" title=\"taunsquared\"/\u003e\u003c/a\u003e\u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"https://github.com/yasirs\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/400538?v=4\" width=\"100px;\" alt=\"yasirs\" title=\"yasirs\"/\u003e\u003c/a\u003e\u003c/td\u003e\n    \u003c/tr\u003e\n  \u003c/tbody\u003e\n\u003c/table\u003e\n\n\u003c!-- markdownlint-restore --\u003e\n\u003c!-- prettier-ignore-end --\u003e\n\n\u003c!-- ALL-CONTRIBUTORS-LIST:END --\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fstencila%2Fstencila","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fstencila%2Fstencila","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fstencila%2Fstencila/lists"}