yswift
yswift copied to clipboard
Roadmap for 0.2.0
Hey @ObuchiYuki @heckj, here's the draft for roadmap for the 0.2.0 release as I see it. I would love to have your input on this one to decide what we need to prioritize/add/remove.
I will be updating this message as we proceed with the discussion.
Following are improvements that I think should be included in the next release:
- [ ] Expose iterator directly from Rust
- Basically it means wrapping
iter()
method in Rust directly. Right now iteration is pretty naively implemented – it just collects all values upfront and then iterates over them. Direct iterator wrapping will enable us to have better support for Sequence, Collection types on the Swift side.
- Basically it means wrapping
- [ ] Verify interoperability with other language bindings. Probably start by interacting with simple
yjs
-based web app. - [ ] Improve usability of
Attribute
s andEmbed
s to allow more streamlined experience of working with rich text (think –NSAttributedString
) - [ ] Implement lib0
- @ObuchiYuki already ported here most of it. We'd just need to implement it as top-level coder and fully conform to
Codable
.
- @ObuchiYuki already ported here most of it. We'd just need to implement it as top-level coder and fully conform to
- [ ] Leverage lib0 encoding/decoding to pass complex types instead of JSON String.
- We already started discussing it with Joe, I think we can continue it there as well https://github.com/y-crdt/yswift/issues/7
- [ ] Nested types
- [ ] Implement YProtocol
- Same as with lib0, we can reuse Yuki's implementation
Below are things that I think can wait:
- [ ] Separate
TransactionMut
&Transaction
in Rust wrapper- [ ] Make Concurrency support more fine-grained
- Right now all transactions that are created through Rust wrapper are
TransactionMut
– it is done so for simplicity purposes. But it does come at a cost, becauseTransactionMut
does more job than justTransaction
so it makes sense to separate between them for the Rust wrapper/YSwift as well.
- [ ] Transaction Events
- [ ] Undo/Redo Manager
- [ ] Awareness
- [ ] Integration with Lexical