Comments (8)
The project does build a Scala.js module but I'm not sure if it's usable from JS.
from crjdt.
Right, if I understand correctly, Scala.js just helps if you want to write the host app in Scala too, as opposed to just transpiling a Scala lib for use in native JS. I gave it a shot a couple days ago without much success :)
from crjdt.
Scala.js code can be used from a JS host environment as long as what you want to use is exported https://www.scala-js.org/doc/interoperability/export-to-javascript.html
That said, I have no idea if the code base is annotated in any way.
from crjdt.
Because the crjdt is implemented in Scala, I learned the language and love it now. Check out Martin's Coursera course and Haoyi's Hands-on. Regarding language design and elegance I think Scala is superior to JavaScript. In this gist I have some ugly code of a collaborative textfield using crjdt.
from crjdt.
I'd love to see ports to other languages and would encourage you to do this. Unfortunately I lack the free time and experience with JavaScript for collaborating on a JS port. I agree that the notation of the paper is a little bit off-putting and understanding the whole data type without much type information can be hard (at least it was for me).
Btw, the code has no @JSExport
annotations again because of unfamiliarity with JS and Scala.js. I'd happily merge a PR if someone wants to contribute this.
@Tamriel Your gist is great! This is AFAIK the first demo using crjdt!
from crjdt.
@fthomas I will try the annotations method for a stop gap, but I would definitely love to create a first-class native JS implementation. If you do happen to come across some free time, let me know — even just walking through your understanding of the algorithm would help me immensely! No JS experience necessary :)
from crjdt.
Have a look at automerge.
from crjdt.
I agree the notation used in paper is the biggest obstacle preventing more implementations (in different languages) of the great ideas published in this paper to exist. I personally also struggle to understand it properly. I've created a question on Computer Science Stack Exchange site (here: https://cs.stackexchange.com/questions/83770/help-understand-the-notation/85376) to clarify the notation, and some of the points were already answered there. Unfortunately, the still unanswered questions are crucial for proper understanding, and, apparently, it requires a deep familiarity with the paper to answer them, according to the people who posted some answers already.
It would be great if someone who made his way through the notation to chime in and post an answer for the reward of imaginary internet points and my (and probably other people's) gratitude. :) @fthomas any chance you could give it a shot some time in future?
from crjdt.
Related Issues (13)
- Other JSON CRDT implementations HOT 1
- Resolve conflicts of MapNode with duplicate key caused by concurrent update to the same key with different type values other than primitive HOT 1
- Filter out empty register in `NodeToJson` converter
- Should `StrK` encode operation ID or not?
- Scala.js version does not work
- To JSON conversion: Delete causes exception HOT 3
- Update the API HOT 3
- Haskell implementation HOT 2
- Implement rules KEYS1,2,3
- Implement rules VAL1,2,3
- Add usage example HOT 1
- [Question] Garbage collection
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
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.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from crjdt.