Skip to content

Latest commit

 

History

History
13 lines (7 loc) · 3.91 KB

File metadata and controls

13 lines (7 loc) · 3.91 KB

As with many software projects, Stencila has evolved a lot as we have learned what works, and what doesn't. Two older branches have been preserved in this repo for historical interest (and because they contain a significant amount of work and some useful code!):

triassic branch c. 2012-2013. 305 commits

Initial explorations and experiments. This branch, introduces Stencils (what we now call Documents) as data-driven, programmable documents. Stencils are HTML documents containing directives such as script (for executing code) and text (for evaluating expressions and rendering them as text) encoded as element attributes e.g. <span data-text="6*7">42</span>. A mark up language called Stem (later renamed to Cila) was developed as an alternative to HTML for authoring. Stem attempts to take the combine the simplicity of Markdown with the flexibility of web templating languages like Slim. In addition, this branch includes work on abstractions for data tables and queries on them (like in dplyr and blaze). The implementation strategy in this branch (and the next) was to develop mostly in C++ (making the most of libraries such as pugixml and tidy-html5) and then expose this functionality using thin wrappers in host languages, initially R and Python. This branch also includes some initial work on browser-based user interfaces.

jurassic branch c. 2014-2016. 2414 commits

Clean up and focus. This branch started as a fresh slate to remove the experiments, cleanup the implementation and focus on Stencils as the central part of the platform. This branch also marks the start (and probably the end) of releases for this repository. Releases 0.1 to 0.4 really just set things up. Execution contexts for rendering stencils in R and Python were introduced in 0.5 and Stem was re-released as Cila in 0.6. Releases 0.7 to 0.18 were mostly incremental improvements (although together they add up to big improvements in reliability and usability!). Release 0.19 was an important because it was the first to use Substance and was thus a big step up for our browser-based user interfaces. We went on to leverage Substance and the execution contexts we had already developed to introduce Sheets in 0.21. Subsequent releases focused on interoperability including introducing a Node.js package in 0.23 and RMarkdown support for stencils in 0.24.

master branch c. 2016-

The implementation strategy we had been using (core in C++ with wrappers for various languages) had advantages (a single fast implementation deployed to various languages) but a few significant problems. Prime amongst these problems was that it was difficult for others to contribute code, particularly those who specialized in a single higher level language e.g R. To address these issues, our current strategy is to use a decoupled, modular architecture with various packages linked via network communications rather than an underlying C++ core. This also opens up some exciting possibilities for distributed and polyglot computing.