Git Product home page Git Product logo

cerulean's Introduction

Cerulean

Cerulean is a highly experimental Matrix client intended to demonstrate the viability of freestyle public threaded conversations a la Twitter.

As such, it is built as simply as possible, in order to demonstrate to someone unfamiliar with Matrix how the Client Server API can be used in this manner. It has no dependencies (other than create-react-app) and has no optimisations. It uses a naive View+Model architecture for legibility (although ideally it'd grow to be MVVM in future).

For more info, see https://matrix.org/blog/2020/12/18/introducing-cerulean

Design

The way Cerulean works is:

  • Messages are sent into 2 rooms: the 'user timeline' room and a 'thread' room.
    • For instance, my user timeline room would be #@matthew:matrix.org
    • A thread room is created for each unique post. Replies to the thread are sent into this room.
  • Messages are viewed in the context of a given 'thread' room.
  • User timelines are viewed in the context of a given 'user timeline' room.
  • Messages are threaded in 'thread' rooms using MSC2836.
  • Users should only /join other's timeline rooms to 'follow' them and get updates whenever they make a post/reply.
  • Users should only /join a thread room to reply to a post in that room, otherwise they should /peek to get a read-only view of the thread.
  • Users should start off as guests on their chosen homeserver, and then login if they want to post.

Cerulean uses the following experimental MSCs:

  • Threading from MSC2836
  • #@user:domain user profile/timeline rooms from MSC1769
  • peeking via /sync MSC2753 - optional
  • peeking over federation MSC2444 - optional

Features

  • User timelines
  • User timelines with replies
  • Individual messages with surrounding threaded conversation
  • Ability to expand out threads to explore further
  • Ability to display parent rather than child threads if the parent started on a different timeline
  • Live updates as messages arrive (i.e. a /sync loop)
  • HTML messages
  • Likes
  • RTs

Pending serverside work:

  • Search. We don't currently have a fast search across all public rooms, but it could of course be added.
  • Hashtags. These are effectively a subset of search.

This test jig could also be used for experimenting with other threaded conversation formats, e.g:

  • Mailing lists
  • Newsgroups
  • HN/Reddit style forums

To build

yarn install
yarn start

License

All files in this repository are licensed as follows:

Copyright 2020 The Matrix.org Foundation C.I.C.

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.

cerulean's People

Contributors

akx avatar ara4n avatar half-shot avatar kegsay avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo 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.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.