Giter Club home page Giter Club logo

statecraft's People

Contributors

josephg avatar rob-morris avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

statecraft's Issues

Documentation

Add documentation to repo.

  • API documentation
  • Design documentation - at a high level, what is statecraft, what problems is it aiming to solve
  • Differences with other systems:
    • Kafka
    • SQL
    • Datomic
    • Message queue
  • Demos & examples, with documentation each time
  • Roadmap

GraphQL query type

Add a graphql query type in the interfaces, and add a simple graphql store which can fetch / subscribe through a provided graphql schema.

The schema types should be exposed back out via storeinfo. Need to figure out how to send this to net clients.

Firefox websocket connection stalling

When opening one of the statecraft demos in firefox, the websocket connection stalls for ages. Weirdly opening another tab via chrome seems to make the firefox tab start working.

This is sometimes hard to reproduce.

There's probably some race condition where FF's timing is slightly different from chrome / safari. Not sure if this is a bug in ws or a bug in how I'm using websockets here.

Refactor code into a set of modules

Right now all the stores are in a big monolithic directory.

They should be pulled out into small, self contained (& tested) modules. I'm not sure if it makes sense to break them into a bunch of repos or not. Maybe something like:

  • Generic utilities pulled out separately. streamToIter, iterGuard
  • statecraft/core: All the stores with no dependancies. Mem kv & single, router, net, map, poll?
  • statecraft/*: Separate module for any of the "heavy" stores, which have more complex behaviour. Things like the foundationdb wrapper and OT stores.

This leaves a pretty heavy core. I need to make sure that specific parts can be targetted & pulled in to the browser in an isolated way that won't pull in half of the code.

The first step will be to just refactor this repo into a series of directories based on the module structure. After that I might move the code into a set of repos.

Authentication

Statecraft needs an authentication store.

To make that work we need to pass session information through all operation options objects. It would be ignored by the root stores, but added, passed and handled through stores which are all about that.

We don't need a stable auth store pre 1.0, but I don't want to be adding options after that point.

  • Make proof of concept auth store
  • Add auth options to fetch / subscribe / getOps / ...
  • Pass opaque session information through networking protocol?
  • Make simple authentication demo

Minimise net protocol

The networking protocol should be flattened into a series of arrays instead of named fields

Source -> Array

Change versions to be a list of v info, rather than an object.

Storeinfo - add per-range status information

The storeinfo object describes sources globally for the store its representing. This is a bit bad for stores which:

  • Wrap multiple backend stores with different source lists
  • Immutable data

It would be better to do storeinfo on a range-by-range basis in the store's KV space. We should fix this before stabilisation.

Website

Make first draft of website. Host on statecraft.io

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.