-
Notifications
You must be signed in to change notification settings - Fork 25
Home
Welcome to the Datsys wiki!
!!!: current symmetric
branch for datsys
is one behind datsync
. working on the update now.
This software is very much in alpha state, hopefully this will change in the near future. Currently the code base contains too much and we are in the process of simplifying.
There's obviously also a ton smaller things that need to be done and fixed, and you can take a look at project issues for those. But the following is a very big picture overview of some of the more major things we'd like to accomplish with the system and the current state of the system.
- Move away from protocols and towards spec
- Move away from multi-methods and towards onyx compute graphs using plain functions
- Use async chans for side effects, onyx for purity
Datsys is for stitching together the other dat projects into a unified whole.
git clone -b dev-merging https://github.com/metasoarous/datsys.git
cd datsys
lein new datsys testapp
cd testapp
lein repl
(run)
Note: Not currently working (reset)
Note: Currently you have to manually add checkouts for https://github.com/bamarco/conformity and https://github.com/bamarco/datscript. We are currently trying to remove those depencdencies.
- Documentation
- More example apps
- System Componentization of server, similar to what we've done for client: Going to be a little more challenging here since the flow of data is a bit more complicated, and scalability more of a concern. But we should still be able to come up with some nice abstractions so folks can switch out different implementations.
- Generative testing (based on specs)
- Arachne plugin?
- dev-merging - (USE THIS ONE) combination of the lein template and the symmetric branch. we are still working out bugs and refactoring befor merging back to dev and eventually master.
- master - this branch is way behind development. not really useful if you are trying to contribute
- dev - also way behind development. not really useful if you are trying to contribute
- symmetric - has been merged into the dev-merging branch. this uses the symmetric branches of the other dat.* projects
Datsync is for communications between the client and server (eventually peers). It coordinates transactions and publication/subscription.
- symmetric - (USE THIS ONE) this version is combining server.clj and client.cljs into a single core.cljc file. core.cljc is messy and has been through rounds and rounds of refactoring. server.clj and client.cljs are deprecated and will be replaced with core.cljc. Multimethods are slowly being replaced by onyx compute graphs using the onyx local runtime. Onyx will serve the role that interceptors do in re-frame as well as providing infrastructure to later accomplish peering and optimistic updates. The sente implementation has been changed heavily and is a bit of a mess. The wire protocol is the most recent version of usage, but will also be replaced by a spec of some kind.
- master - behind
- dev - behind
- Security and scoping filters (+ posh query exports for automated scoping)
- Offline availability
- Entity validations
- Onyx distribution
- Long term:
- P2P (non-centralized) distribution/sharing (perhaps via CRDTs or CVDCS)
- Log history plugins
Datreactor is for managing events and side-effects. This project may be cut entirely and is in a high state of flux.
- symmetric - USE THIS ONE this version has onyx.cljc which will be replacing most if not all of the rest of the repository. It is possible that parts of onyx.cljc will be replaced by or moved into onyx-sim
The protocols, utils, and specs that the rest of the system uses. This is in a high state of flux and contains a lot of information which is outdated or incorrect. Be wary here.
- symmetric - (USE THIS ONE)
Datview is for the user interface. This is still very experimental and about to undertake a complete rewrite as we move from multimethods to onyx. It is still unclear how we will wrap the onyx fns so much of the current registration architecture may or may not remain in the next version.
- symmetric - (USE THIS ONE)
- Use onyx-sim to make ui declaration more flexible, interactive, and debuggable.
- Finish setting up default context hooks/implementations.
- Build out more default control widgets and clean way of grouping them.
- Documentation
- Package together some example widgets (as context multimethod implementations).
- Datspec
- Add Clojure spec hotness to abstract architectural descriptions :-) (and generally spec rest of project(s) as well)
Navigation is to your right under Pages.
Please also see