Skip to content

Technical Background and Reference Code Bases

flyingzumwalt edited this page Feb 19, 2016 · 4 revisions

Technical Goals

Ultimately we hope to integrate with dat. There are a few different ways that could happen. For now, we're just focusing on implementing our key features.

The key features for jawn are to:

  • manage and track change history in tabular data
  • create historical checkpoints with metadata (e.g., message, timestamp, author)

Jawn relies on hypercore to handle the core functions around creating merkle chains.

  • supply access points to data across the network with a peer-to-peer model
  • sync incrementally between machines

This is where jawn connects with the current work of the dat team, who created hypercore and are using it to do the same things with directories of files. For more technical info about hypercore, see the Hypercore Spec

Background

In early 2015 the dat team released a beta version of dat that included most of the functionality that we want to include in the first release of jawn. That dat beta allowed you to import tabular data, which is rows & columns like you find in CSV (Comma Separated Values) or TSV (Tab Separated Values) files.

The key features for Dat beta were to:

  • manage and track change history in binary and tabular data
  • supply access points to data across the network with a peer-to-peer model
  • create historical checkpoints with metadata (e.g., message, timestamp, author)
  • sync incrementally between machines

In late 2015, based on their experience with the beta release, the dat team pivoted their efforts to focus initially on easy file distribution rather than emphasizing tabular data. For more info about this decision, watch the video of the talk @karissa gave on Designing Dat 1.0 for ROpenSci Community Call

Video: Designing Dat 1.0 for ROpenSci Community Call

If you want detailed information about our initial design discussions for jawn and how it connects with hypercore and the current work of the dat team, there is a video of the intial design discussion and detailed notes from that call.

Reference Code Bases

In late 2015, the dat team rebooted their code base, setting aside dat-core. Instead of building on dat-core, they created hypercore and hyperdrive. For our purposes, that old code from early 2015 is a useful reference.