@b5 b5 released this Nov 9, 2018 · 113 commits to master since this release

Assets 3

Version 0.6.0 is a big 'ol release. Lots of changes that have taken close to a month to land. Test coverage is up, but expect us to have broken a bunch of things. We'll be rapidly iterating over the coming weeks to make sure everything works the way it should.

This release marks turning a corner for the Qri project as a whole. We have a new look for the frontend, and have rounded out an initial feature set we think will take Qri out of the realm of "experimental" and into the world of dependable, usable code. It's taken a great deal of time, effort, and research. I'm very thankful/proud/excited for all who have contributed to this release, and can't wait to start showing off this newest verion. Here's some of the highlights, with a full changelog below.

❤️ We've adopted the RFC process

I'm delighted to say Qri's feature developement is now driven by a request-for-comments process. You can read about new features we're considering and implementing, as well as make suggestions over at our RFC repo. From this release forward, we'll note the biggest RFCs that have landed in release notes.

Overhauled, more capable starlark transform functions, renamed everything from "skylark" to "starlark" (RFC0016)

We've overhauled the way transform functions are called to provide greater flexibility between function calls to allow sidecar state to travel from special functions, and unified all transforms around the transform special function. here's an example:

load("http.star", "http")
def download(ctx):
  res = http.get("https://api.github.com/")
  return res.json()

def transform(ds, ctx):
  ds.set_body(ctx.download)

Thanks to RFC0020, the passed-in ds dataset is now the current version. More on that below.

.zip export & import (RFC0014)

The following now works:

$ qri export me/my_dataset
exported my_dataset.zip

# on some other qri repo:
$ qri save --file=my_dataset.zip

This makes it possible to send around Qri datasets without using the p2p network. It even works when the zip is posted to a url:

$ qri save --file=https://dropbox.com/.../my_dataset.zip

We think this is a big win for portability. We'll be working on exporting to different file formats in the coming weeks.

Publish & Update (RFC0018)

Qri now gives you control over which datasets of your will be listed for others to see using qri publish. This does mean you need to publish a datset before others will see it listed. This does not mean that data added to Qri is private. It's better to think of data you've added to qri that isn't published as 'unlisted'. If you gave someone the hash of your dataset, they could add it with qri add, but users who list your datasets over p2p won't see your unlisted work. If you want private data, for now Qri isn't the right tool, but now you have more control over what users see when they visit your profile.

We now also have our first real mechanism for automated syncronization: update. Update works on both your own datasets and other people's. Running update on your own dataset will re-run the most recent transform and generate a new dataset version if Qri detects a change. Running update on a peer's dataset will check to see if they're online, and if they are, update will fast-forward your copy of their dataset to the latest version.

New and Save have merged (RFC0017)

The new and save commands (and API endpoints) have merged into just save. New wasn't doing too much for us, so we're hoping to get down to one keyword for all modifications that aren't re-running transform scripts.

Deterministic Transforms & Overhauled Dataset Creation (RFC0020)

We've completely overhauled the process of saving a datset, clarifying the mental model by distinguishing between manual and scripted transformations. The process of creating a dataset is now easier to understand and predict. We'll be working in the coming weeks to properly document how this works, but the first form of documentation we've landed are error messages that help clarify when an issue arises.