All Projects → KB1RD → Matrix Notepad

KB1RD / Matrix Notepad

Licence: gpl-3.0
A buggy way to collaborate on text documents using the Matrix protocol. When it works, consider this the Matrix Console of collaboration!

Programming Languages

javascript
184084 projects - #8 most used programming language

Projects that are alternatives of or similar to Matrix Notepad

Element Rpm
Providing the Element messaging desktop client packaged for the Fedora, Red Hat(IBM), and OpenSUSE families of linux desktop operating systems.
Stars: ✭ 73 (+46%)
Mutual labels:  collaboration, matrix
Server
☁️ Nextcloud server, a safe home for all your data
Stars: ✭ 17,723 (+35346%)
Mutual labels:  collaboration, federated
Unplug
unplug : desktop client for matrix.org (work-in-progress)
Stars: ✭ 45 (-10%)
Mutual labels:  matrix, federated
Matrix
A modern, C++20-native, single-file header-only dense 2D matrix library.
Stars: ✭ 30 (-40%)
Mutual labels:  matrix
Meta Review
Manuscript describing open collaborative writing with Manubot
Stars: ✭ 34 (-32%)
Mutual labels:  collaboration
Esp32 Hub75 Driver
A small, simple, passive driver for HUB75 based LED panels
Stars: ✭ 37 (-26%)
Mutual labels:  matrix
Llama Archive
Loss & LAtency MAtrix
Stars: ✭ 44 (-12%)
Mutual labels:  matrix
Planka
The realtime kanban board for workgroups built with React and Redux.
Stars: ✭ 944 (+1788%)
Mutual labels:  collaboration
Basketballarkit
Hello Everyone, This project talks about basics of ARKit introduced by Apple in iOS11. Please note that ARKit is only capable wih devices which use A9, A10, A11 chips .It shows how to build a basic BasketBall app using ARKit. All written in Swift4.
Stars: ✭ 42 (-16%)
Mutual labels:  matrix
Module Federation Examples
Implementation examples of module federation , by the creators of module federation
Stars: ✭ 979 (+1858%)
Mutual labels:  federated
Sharpmath
A small .NET math library.
Stars: ✭ 36 (-28%)
Mutual labels:  matrix
Core
☁️ ownCloud web server core (Files, DAV, etc.)
Stars: ✭ 7,599 (+15098%)
Mutual labels:  federated
Yannl
Yet another neural network library
Stars: ✭ 37 (-26%)
Mutual labels:  matrix
Zdoo
CRM& Chat& Collaboration system/tool written in PHP, Free Upgrade Forever!​
Stars: ✭ 33 (-34%)
Mutual labels:  collaboration
Matrix Puppet Hangouts
Matrix bridge for Google Hangouts
Stars: ✭ 42 (-16%)
Mutual labels:  matrix
Opencv Cheat Sheet
Opencv cheat sheet for C++
Stars: ✭ 30 (-40%)
Mutual labels:  matrix
Hokaido
HND✈CTS
Stars: ✭ 41 (-18%)
Mutual labels:  collaboration
Cracking The Coding Interview
Solutions for Cracking the Coding Interview - 6th Edition
Stars: ✭ 35 (-30%)
Mutual labels:  matrix
Fast Flipdot
Driving a flipdot matrix differently. All dots simultaneously.
Stars: ✭ 35 (-30%)
Mutual labels:  matrix
Mattext
Simple matrix-style pager
Stars: ✭ 34 (-32%)
Mutual labels:  matrix

Matrix Notepad

A buggy way to collaborate on text documents using the Matrix protocol. When it works, consider this the Matrix Console of collaboration!

GitHub release (latest SemVer) Matrix GitHub Workflow Status (branch) GitHub

Check it out at matrix-notepad.kb1rd.net and come chat at #matrix-collaboration:kb1rd.net! I'd love to hear about what you think (and what issues you encounter)!

Brief Roadmap

This is not in any particular order:

  • [x] More or less working insertions
  • [x] More or less working removals
  • [ ] Conflict resolution -- Almost!
  • [x] Improved UI/UX (this will be incremental)
  • [x] Unit testing for the algorithm (logootish-js is unit tested)
  • [x] Create a different package for the Logootish algorithm -- Right here
  • [ ] Node 'squashing' or similar. Currently Matrix Notepad has to sync ALL of the events :(
  • [ ] Rich text editing
  • [ ] Create "Matrix Apps" to load iframed apps, such as the Notepad
  • [ ] Clean up the code. I've been focusing on the algorithm, so the Notepad had gotten a bit messy

In addition, I think it would be a good idea to discuss future possibilities for sharing more than just text over Matrix and the possibility of creating a unified 'app host' client that manages permissions for applications and allows the user to browse a directory structure.

Why write this?

Fundementally, it is frustrating that there is no standard way to collaborate on the Internet. There are a bunch of systems to collaborate online, but they require that you trust a single company and, most of the time, have an account with that company. Just as Matrix was founded with the goal of making communication standardized just the way email is, this project was started with the goal of providing a proof-of-concept of how standardized collaboration could work over the Internet and over Matrix.

Usage

Just head on over to matrix-notepad.kb1rd.net and sign in. This will bring you to a room list. It's not a great idea to re-use rooms, so if you haven't joined a document room yet, click the "Add" button at the top of the room list and either create a room or join an existing one by ID or alias.

WARNING!

Since this is experimental software, do not use it to store very important or confidential information. I am not responsible for lost information

Bug Reporting

If you see error messages pop up or you encounter any bugs, please report it either on GitHub or on the Matrix chat. This is very helpful as I'm sure there are bugs that I don't know about.

Screenshots

Sign in Room List Document Editing

Contributing

Have a look at the Wiki if you're interested in contributing. I'd love the help! The wiki also contains documentation about how the algorithm, logootish-js, works internally as well as links to the JSDoc.

Organization

Here is the directory structure

  • components -- Vue components
  • layouts -- Nuxt layouts. This is currently just the default layout
  • pages -- Nuxt pages
  • plugins -- Nuxt plugins that perform vital functions for the program that are not the algorithm or the Vuex store
    • /matrix.js -- Provides the interface between Matrix, the GUI, and the algorithm. It is dense and poorly written since I'm still trying to figure out where to put everything.
  • static -- Static files. Currently only has the site icon
  • store -- The Vuex store. This is used for UI only since I want the algorithm to be seperate from Vue.JS. Vuex does track the state of the Matrix client, but not the state of document nodes (that's all "traditional" ES6 JS)
  • resources -- Files used in README.md or the docs
  • test -- A directory that I have reserved for unit testing. This would help a lot if I actually implemented it. sigh

Debugging

I have removed the debug panel as of version 0.2.0 in favor of a console based debug under the window-scope variable $debug. Here's the main tricks:

// Provides direct access to the ListDocumentModel
$debug.active_document.ldm

// Disable the initial load
$debug.syncback_settings.initial = false

// Manually fetch events (if initial load is disabled)
$debug.active_document.fetchEvents(1)

// Enable the LDM's internal operation log (currently disabled)
// This is helpful for diagnosing a bug that is identified in production
$debug.active_document.setupLogging()

// Dump the LDM's internal operation log (if enabled)
$debug.active_document.printEventLogJSON()

Build Setup

# install dependencies
$ yarn install

# serve with hot reload at localhost:3000 (for development)
$ yarn run dev

# generate static site
$ yarn run generate

# get webpack bundle statistics
$ yarn run stats

Also, if you want to debug the core algorithm, logootish-js, see https://github.com/KB1RD/logootish-js . I used to include a code sample in here to use yarn link to use a local version of the algorithm, but yarn link appears buggy and it's way faster to test and develop the algorithm on its own. I would encourage potential developers to use that method instead.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].