yjs VS player.html

Compare yjs vs player.html and see what are their differences.

player.html

One file drop-in video player web app for using video files served using basic directory listing (by pseudosavant)
Our great sponsors
  • OPS - Build and Run Open Source Unikernels
  • SonarQube - Static code analysis for 29 languages.
  • Scout APM - Less time debugging, more time building
yjs player.html
11 3
6,294 145
9.8% -
8.4 6.7
1 day ago 3 months ago
JavaScript HTML
MIT MIT License
The number of mentions indicates the total number of mentions that we've tracked plus the number of user suggested alternatives.
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.

yjs

Posts with mentions or reviews of yjs. We have used some of these posts to build our list of alternatives and similar projects. The last one was on 2021-12-29.
  • Consider SQLite
    13 projects | news.ycombinator.com | 29 Dec 2021
    You have to handle the merge conflicts yourself, see https://www.sqlite.org/session/sqlite3changeset_apply.html

    So you need to be carful how you design your schema, but very possible.

    One option is to use something like Yjs and a JSON column to get proper CRDTs for merging.

    https://github.com/yjs/yjs

  • Markdown editor for freedom!
    6 projects | dev.to | 21 Dec 2021
    🍻 Collaborate - Shared editing support with yjs
  • Automerge: a new foundation for collaboration software [video]
    13 projects | news.ycombinator.com | 10 Dec 2021
  • Show HN: SyncedStore CRDT – build multiplayer collaborative apps for React / Vue
    11 projects | news.ycombinator.com | 8 Dec 2021
    Hi! Great questions :)

    First of all, SyncedStore does not implement any CRDT algorithms. Credits for this go to Yjs [1] (and its author Kevin), which it uses as underlying CRDT.

    Yjs and Automerge are (afaik) the two most commonly used CRDT implementations. Both have their pros and cons, but Yjs has focused a lot on performance [2].

    Automerge has a bit friendlier "Immer style" [3] API. I'm not too familiar with @localfirst/state, but it seems to add a Redux style API on top of Automerge.

    My approach with SyncedStore was really to provide an API on top of Yjs that's as simple as possible to use in React / Vue / Svelte or plain JS app. I.e.: only use a single React Hook to observe changes, and use regular Javascript assigments to update values. The API is inspired mostly by Reactive Programming libraries such as MobX [4] (from the same author as Immer).

    Hope you're still following along :) Maybe it helps to compare the TODO-MVC applications, as both SyncedStore (https://github.com/YousefED/SyncedStore/tree/main/examples) and @localfirst/state (https://github.com/local-first-web/state/tree/main/examples/...) have implemented these as examples!

    [1]: https://github.com/yjs/yjs

    11 projects | news.ycombinator.com | 8 Dec 2021
    - if you modify a property "prop" and set it to "value" it will sync an update [set "prop" to "value"] along with some metadata

    It will not automatically diff these with the previous value (in a distributed system it's difficult to say what the "previous value" was, but it will sync only those properties that have been changed). For text heavy operations, you can use the Text structure which will sync fine-grained operations ([delete 4 characters at position 2] or [insert "world" at position 5]). This makes it suitable for collaborating on rich text documents (similar to Google Docs), see: https://syncedstore.org/docs/advanced/richtext.

    This might also be an interesting resource to learn how the Yjs internals work (SyncedStore builds on top of this): https://github.com/yjs/yjs/blob/main/INTERNALS.md

  • Where is the CRDT for syntax trees
    5 projects | news.ycombinator.com | 3 Dec 2021
  • Todos: The Hard Parts
    3 projects | dev.to | 15 Sep 2021
    But still, frontend development is pretty damn hard! And that makes sense. Web applications can have interfaces as complex as IDEs and data exchange layers as complex as distributed databases.
  • A Simple Way to Build Collaborative Web Apps
    6 projects | news.ycombinator.com | 17 Aug 2021
    I haven't yet done this but based on some research it seems to me like the core of any collaborative app today is easiest served by picking some CRDT library.

    There are a couple of open-source CRDT libraries that provide both clients and servers (yjs [0] and automerge [1] are two big ones for JavaScript I'm aware of).

    My basic assumption is that as long as you put all your relevant data into one of these data structures and have the CRDT library hook into a server for storing the data, you're basically done.

    This may be a simplistic view of the problem though. For example I've heard people mention that CRDTs can be space inefficient so you may want/have to do periodic compaction.

    [0] https://github.com/yjs/yjs

    [1] https://github.com/automerge/automerge

    6 projects | news.ycombinator.com | 17 Aug 2021
    I've used YJS and can strongly recommend. https://github.com/yjs/yjs

    Built a Google Docs like rich text collaborator for a client on Express/Psql and React. Worked like a charm (the hardest part was dealing with ports on AWS tbh).

    6 projects | news.ycombinator.com | 17 Aug 2021
    That's a really nice tutorial. However, most of collaborative apps mentioned in the beginning operate on documents where merging concurrent edits by different users is more of a problem, and there's a really nice tool for that problem: CRDT (https://en.wikipedia.org/wiki/Conflict-free_replicated_data_...) and even ready to use libraries like Yjs (https://docs.yjs.dev).

    Of course, there's a lot of very senior HN users who already know about it. I only mention it because I never explored these tools before, learned about it a couple of months ago for the first time in my life and was really impressed.

player.html

Posts with mentions or reviews of player.html. We have used some of these posts to build our list of alternatives and similar projects. The last one was on 2021-02-15.
  • Not Your Typical Horizontal Rules
    1 project | news.ycombinator.com | 7 Apr 2021
    This is a great exploration of how to use SVG on the web. It is a very under-utilized technology.

    One thing that would add to this post is to point out that you can define an SVG once in a document and then reference it everywhere else. That way you aren't inlining the actual SVG markup over and over and over.

    1. Place your SVG inline anywhere in the document. I usually put all of them in a `

    ` I do `display: none` on.

    2. Make sure you assigned each SVG an ID: ``

    3. Reference that SVG anywhere in your document using ``

    I use it extensively in a Github project (shameless plug) I've been working on lately. https://github.com/pseudosavant/player.html/blob/master/src/...

  • Kanban board in one HTML using localstorage
    10 projects | news.ycombinator.com | 15 Feb 2021
    I love the utility of single file web apps, even if this one does use 2 external dependencies.

    I've gotten into this myself. I made a couple of (actually) single file web apps for navigating/viewing videos on a web server, or Markdown on a web server.

    https://github.com/pseudosavant/player.html

    https://github.com/pseudosavant/markdown.html

  • Ask HN: Has anyone hired a freelance developer for a MVP?
    1 project | news.ycombinator.com | 1 Jan 2021
    I have the same question.

    I've tried working with UpWork, but their developers seem more geared towards "known"-type of projects, involving specific tech, or specific type of jobs, or fix it jobs.

    I presented a project of some advanced JS, nothing too serious, and almost every developer declined or couldn't understand the requirements, likely because they didn't read any of my material about the project.

    The job is pretty simple: add support for https://play.Presenta.cc .json files to https://github.com/pseudosavant/player.html#playerhtml. I want to be able to have a Presenta File player, so I can play the Presenta slideshow files and video files from my local folder using the html page. That's generally it. Upwork couldn't deliver.

    This job was step one, in a very few number towards an MVP.

    Nobody on Upwork seems to be able to do this.

    I'm pretty disappointed with UpWork.

What are some alternatives?

When comparing yjs and player.html you can also consider the following projects:

automerge - A JSON-like data structure (a CRDT) that can be modified concurrently by different users, and merged again automatically.

pacman-backup - :floppy_disk: Pacman Backup tool for off-the-grid updates via portable USB sticks or (mesh) LAN networks.

automerge-rs - Rust implementation of automerge

logseq - A local-first, non-linear, outliner notebook for organizing and sharing your personal knowledge base. Use it to organize your todo list, to write your journals, or to record your unique life.

solid - Solid - Re-decentralizing the web (project directory)

kanban - A basic kanban board in a single HTML file using browser native drag & drop and localStorage for persistence

Visual Studio Code - Visual Studio Code

cardi - A full-featured, static-generated PWA for notes stored in privately owned DynamoDB tables

Kanboard - Kanban project management software

crdt-woot - Implementation of collaborative editing algorithm CRDT WOOT.

chronofold - Chronofold is a conflict-free replicated data structure (a.k.a. CRDT) for versioned text.