josephg / josephg/ShareJS

Serialization of custom OT types

Open
#389 2 comments 0 reactions 0 assignees View on GitHub
Dominant language
JavaScript
Stars
5k
Forks
454
PR merge metrics
No merged PRs in 30d

Description

Hi ShareJS community!

You guys have done an amazing job here and I'd like to contribute.

I am exploring the possibility of using ShareJS to solve the shared-mutable-state problem I have with my Trello-like web app. I have concluded that the JSON0 type cannot be used to enforce the invariants of my application state and therefore I must implement a custom OT type for my application state.

The snapshot for my custom OT type is an immutable object from the Immutable.js npm module. As a result, I need custom serialization/deserialization methods as documented here: https://github.com/ottypes/docs#optional-properties.

Unfortunately, the shareJS and liveDB libraries do not support the optional serialization/deserialization methods on OT types. I have forked the ShareJS and LiveDB repos to add custom serialization for my purposes ( https://github.com/DetweilerRyan/ShareJS https://github.com/DetweilerRyan/livedb ).

I feel there is a strong use case for custom serialization support ( I can go into more detail if needed ) and believe it should be supported by the two libraries.

Contributor guide

No contributing guide indexed for this repository

Research direction

Start with the optional serialization/deserialization properties in the linked OT types documentation, then inspect the serialization paths in the ShareJS and liveDB repositories and compare the author's linked forks. Done means custom OT serialization and deserialization methods are supported across both libraries for an Immutable.js snapshot.

Written by the indexing model from the issue text.

Assessment

Tech stack
javascript
Domain
distributed-systems
Issue type
Feature
Difficulty
4/5
Estimated time
3-5 days
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
42/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.