Git Product home page Git Product logo

matrix.to's Introduction

Matrix.to

Matrix.to is a simple url redirection service for the Matrix.org ecosystem which lets users share links to matrix entities without being tied to a specific app. Stylistically it serves as a landing page for rooms and communities.

How can I put a badge on my website linking to my matrix room?

You can use the badge image we've put up at https://matrix.to/img/matrix-badge.svg, and use it in a link like this:

Chat on Matrix

You can use this Markdown:

[![Chat on Matrix](https://matrix.to/img/matrix-badge.svg)](https://matrix.to/#/#matrix.to:matrix.org)

Or this HTML:

<a href="https://matrix.to/#/#matrix.to:matrix.org" rel="noopener" target="_blank"><img src="https://matrix.to/img/matrix-badge.svg" alt="Chat on Matrix"></a>

to show the badge.

How does matrix.to work?

Matrix.to preserves user privacy by not sharing any information about the links being followed with the Matrix.to server - the redirection is calculated entirely clientside using JavaScript, and the link details is hidden behind a fragment to avoid web clients leaking it to the server. However, acting as a landing page it may leak your ip to any number of homeservers involved with the entity linked to while fetching previews. There is an opt out under which no previews will be loaded.

Anyone is welcome to host their own version of the Matrix.to app - Matrix.to is not a single point of failure on the Matrix ecosystem; if the matrix.to deployment ever failed, users could trivially copy the room/user/message details out of the URLs and follow them manually, or change the hostname to point at an alternative deployment of the service. The Matrix.to service could also be hosted in an immutable/signed environment such as IPFS to further increase its availability and avoid tampering.

URL Scheme

The matrix.to URL scheme is

Entity type: Example URL
Rooms: https://matrix.to/#/#matrix:matrix.org
Rooms by ID: https://matrix.to/#/!cURbafjkfsMDVwdRDQ:matrix.org
Users: https://matrix.to/#/@matthew:matrix.org
Messages: https://matrix.to/#/#matrix:matrix.org/$1448831580433WbpiJ:jki.re

The #/ component is mandatory and exists to avoid leaking the target URL to the server hosting matrix.to.

Note that linking to rooms by ID should only be used for rooms to which the target user has been invited: these links cannot be assumed to work for all visitors.

(Technically the # and @ in the URL fragment should probably be escaped, but in practice for legibility we bend the rules and include it verbatim)

Optional parameters

https://matrix.to/#/#matrix:matrix.org?web-instance[element.io]=chat.mozilla.org

  • client, e.g. client=im.fluffychat, client=element.io
  • web-instance[], e.g. web-instance[element.io]=chat.mozilla.org.
  • via, e.g. via=mozilla.org

You can discuss matrix.to in #matrix.to:matrix.org

Build Instructions

  1. Install yarn
  2. git clone https://github.com/matrix-org/matrix.to
  3. cd matrix.to
  4. yarn
  5. yarn start
  6. Go to http://localhost:5000 in your browser

matrix.to's People

Contributors

aaronraimist avatar afranke avatar andrewryanchama avatar anoadragon453 avatar ara4n avatar billcarsonfr avatar bwindels avatar calebccff avatar carlschwan avatar commanderroot avatar danilafe avatar deepbluev7 avatar dependabot[bot] avatar freaktechnik avatar jorikschellekens avatar jryans avatar krille-chan avatar madlittlemods avatar matrix-foundation-md avatar mraagh avatar novocaine avatar pixlwave avatar ptman avatar strugee avatar t3chguy avatar thibaultamartin avatar turt2live avatar twi1ightsparkle avatar zjvandeweg avatar zocker1999net avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

matrix.to's Issues

Add the possibility to link to a homeserver

For example: https://matrix.to/#/matrix.org

What would that mean?

  • Start a client by clicking on that link, and it prompts registration/login on that homeserver.

Use case: Jenny wants her normie friends (who have not yet joined the Matrix) to join her Matrix server, but she wants them to chose their own client. Rather than explaining they need to set their client to use her server, which might be a different procedure for every client, she could simply send one link to all of them.

Add a copy as markdown link button

This is probably kind of random but I'd love a button that would copy the link as a markdown formatted link like [#riot:matrix.org](https://matrix.to/#/#riot:matrix.org). I mean it isn't that hard for me to add the formatting but it would be nice if I could just grab the whole thing preformatted since I tend to do that a lot when giving the link to someone.

inconsistent semantics for how to "access" a user

In a user link, (e.g. https://matrix.to/#/@uhoreg:matrix.org), matrix.to lists a link for Riot such as https://riot.im/app/#/user/@uhoreg:matrix.org, which will show the user's profile, whereas for the other clients it says to type "/invite @uhoreg:matrix.org", which will invite the user to the room.

Since different clients may support different actions for users, and clients may support multiple possible actions, so it may be good to list multiple ways of interacting with the user and a description of what it does, such as:

Name ... Access @uhoreg:matrix.org .
Riot ... View profile https://riot.im/app/#/user/@uhoreg:matrix.org
. ... Start chat (something once element-hq/element-web#4034 is fixed)
. ... Invite to a room Type /invite @uhoreg:matrix.org
WeeChat ... Invite to a room Type /invite @uhoreg:matrix.org
etc...

It might also be useful to be able to add a parameter to the matrix.to link to specify a certain action. For example, something like https://matrix.to/#/@uhoreg:matrix.org?action=chat would mean that someone clicking on the link should start a chat with @uhoreg:matrix.org. (cf. XEP-0147)

Component design

Components will be in Typescript with the intent to be as modular as possible.
All previews should have defaults and loading animations.

  • Responsive Layout
  • Buttons
  • Tile
  • Avatars
  • Sharer tile
  • Room Preview
  • Client previews
  • Advanced options
    • Client previews
    • Settings
  • Matrix Badge
  • App store instructions

Matrix-static is broken

E.g. https://matrix.to/#/!QtykxKocfZaZOUrTwp:matrix.org

view.matrix.org redirects to matrix.org. It does that in a broken way (stripping the leading / and ending up with a bogus domain name) but even if that's fixed manually, the redirection does not seem to produce anything useful. It would probably be better to redirect to an error page explaining that this service does not exist anymore.

Guests can't join room guests are allowed in

I've setup my matrix room to allow guests:
#trains_and_things:matrix.org
by checking "Anyone who knows the room's link, including guests" in riot.

Now I setup a guest account and it won't let me join the room.

I'm using the matrix plugin from here: https://gitlab.com/vurpo/godot-matrix, it seems riot.im/app has no guest login so I do not know how to test a guest login outside of the code I've been using to determine if its an issue with Matrix or if there was some API changes that have recently broken the above code.

include room info in html title

I dunno if feasible but it would be nice for the html returned by a room link to include at least the room address. Even better if it also contained name/topic/number of users/privacy...

It is for IRC bots reporting info about URLs, currently just mentioning "the matrix" and nothing about the room itself

Translate matrix.to website to popular language and auto-detect browser language

English language is best! but not all people known it well, many people afraid no-native language sites, so if they see in matrix.to not his language - they will not want to translate or understand what is it.

matrix.to website have not so much strings, so will be good to translate it into popular languages (at first - via google translate, and after - correct via community).

And create script for auto-detect browser language when visiting site and show text in user native language. Also add language switcher combobox.

Room invite page is confusing

The page matrix.to shows for room/etc. invite links is a bit confusing:

  • It's unclear what the user is supposed to click to join the room.
  • There are several link targets close to each other that lead to different places (room/etc join link / app homepage)
  • The actual link/information how to join the room is given on the far right, which usually is the place for unimportant stuff.
  • There's some prominently shown "scary looking" information that's not important for users (repeat of the contents of the browser url bar, the room invite url which may be long and contain random characters, instructions how to add apps to the list)
  • How do I join with Riot mobile or desktop apps?

Because this page is an entry point to first-time users, it might make sense to check that its design is suitable for this.

screenshot

Refresh the client list

There are a few clients on the list which are possibly not in the best shape and we could consider putting some of the newer ones on the show reel.

Provide SVG badges for chat links

It's popular to use badges to link to chat rooms, so it'd be nice to have one for matrix.to.
I'm not sure if could be an url serving a javascript generating an SVG on the client side (to keep the current privacy protecting mechanism).

i18n

This won't be a first class citizen in this project but it would be nice.

URL preview for messages in public rooms that allow guests

Currently when pasting a permanent link generated from Riot into a channel, there is no URL preview available when wanting to forward a message into another room.

Tested with

https://matrix.to/#/!JxSVcUkWaKRiETPsxS:matrix.allmende.io/$1498108097390ttXFy:matrix.allmende.io

which is locally expanded to

https://riot.allmende.io/#/room/!JxSVcUkWaKRiETPsxS:matrix.allmende.io/$1498108097390ttXFy:matrix.allmende.io

Add short link for Matrix documentation

When not copy-pasting, it would be nice to have short addresses such as https://matrix.to/faq for the FAQ, /irc for bridge IRC networks and /ircfaq for FAQ of the IRC bridge.

Lacking these I have been linking to https://mikaela.info/r/matrixircfaq as the direct address is difficult to remember and type especially on mobile, but I think official address would be more preferable. I have also gotten negative feedback for linking through my own domain.

Link previews

Try to create best effort link previews such as user and room avatars and descriptions.

This will need to use or create a small sdk to query unauthenticated endpoints.

Setting storage

Persist settings between visits. Will include settings for a 'strict privacy' (does not attempt to load link previews) mode.

Extend matrix.to URL scheme and update spec

There is a current proposal by design to extend the URL scheme for a smoother user experience by adding a client parameter and an inviting-user parameter.

The client parameter will help matrix.to select a sensible default client for the room redirect. It will also help private matrix instance with custom clients pass that information to new users.

The optional inviting-user parameter was intended to provide a visual preview of the inviting user as seen here: https://www.figma.com/file/WSXjCGc1k6FVI093qhlzOP/04-Recieving-share-link?node-id=148%3A341/. However, there is currently no way to do that without opening many forms of phishing attack. I doubt this will make it to the spec.

No easy way to contact you

Hi,

I noticed you are looking for funding and wanted to send you an email or call you to discuss. Please reach out to me.

Best,

Alexander

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.