-
Notifications
You must be signed in to change notification settings - Fork 382
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
MSC2997: Add t-shirt #2997
base: old_master
Are you sure you want to change the base?
MSC2997: Add t-shirt #2997
Conversation
2f1bb18
to
57334d8
Compare
But what colour should they be? |
And what sizes will be available? |
Hmmm, I think we should also use something better than S, M, L and Xl... We should use some units like beard-seconds! Also, we should probably display the sizes in binary for simplicity |
From a purely grammatical nitpick, I have to point out that even assuming that the Matrix spec will never be complete and that there will always be more MSCs, that MSC2997 as-rendered will never be able to refer to itself. That is to say, in the sentence "There's an MSC for that!" (emphasis mine), present on the T-shirt, it would be improper grammar for "that" to be allowed to refer to MSC2997, and thus explain the T-Shirt's existence. Potential solutions: Potential downsides of either include "ruining the joke", but I think that's a perfectly acceptable compromise for technical correctness. |
What about we strikte "that" in the Text and put a handwritten "this" over it to emphanzise how the spec progress works? |
|
||
## Security considerations | ||
|
||
Unfortunately not all people are able to wear t-shirts, so a solution for those would have to be |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
what about wristbands with text for them?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This is a fair point, though I'm not sure if it would mitigate the security that a t-shirt provides. For one, the surface area of a t-shirt far outweighs that of a wristband. Wristbands can also be made from a variety of materials, some even opting for mere paper.
Not to mention the lack of area for displaying the intended messaging of the MSC.
I think if wristbands is taken as an approach, care should be taken to ensure the security and practicality of the device.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
What about a hat? Or similar headware? It is more visible than a wristband and everyone that is affected by MSC tends to have a head. Or do we also want to integrate aliens via a bridge end expect headless users?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
What about capes? Almost everyone has a neck and you can make them pretty big to put arbitrary messages on them. Would need to come with a disclaimer not to wear them next to aircrafts though.
Please comment on some line of the MSC, since otherwise the discussion is hard to follow, since you don't get threads! |
In all seriousness, i'd like to have one on https://shop.matrix.org, preferably in the following format;
|
Use threads please |
Yes, threads are important to use for T-shirts |
{ | ||
"type": "m.t-shirt", | ||
"content": { | ||
"body": "There's an MSC for that!" |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Should body
in this case actually be the user? T-shirts are generally most useful on the user's body
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
My suggestion is simply that the t-shirt will be more useful if the body in question were to be the user's body instead of some arbitrary text.
Properly serialising the end user may however prove to be a significant implementation challenge
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Oooh, do you mean like this?
{
"type": "m.t-shirt",
"content": {
"body": "@sorunome:sorunome.de"
}
}
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
That's a medical stuff, so it's probably depending on us to spec HL7 FHIR resource state events. ^_^
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Maybe we should make it a state event, then? Since state_keys starting with @
are preserved so that they only can be set by the user themself and not by others.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Yes! And the content is quite obvious.
https://www.hl7.org/fhir/genomics.html
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
On the other hand, I'm quite worried that the serialization of user would require a space of t-shirt-as-rooms
|
||
Instead of a shirt, a sweater or thelike could be used. | ||
|
||
Instead of just printing normal event contents on the shirt we might want to consider using |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
While the increased flexibility for metadata would be useful, specific care should be given to the sizing implementation. Smaller users may have issues with the fit of a room based t-shirt
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
It could allow us to have not only "One size fits all" t-shirts, but also "One size fits many" - at once!
|
||
## Potential issues | ||
|
||
Once the spec is complete and there are no more MSCs the t-shirt will be obsolete. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Once the spec is complete and there are no more MSCs the t-shirt will be obsolete. | |
Once the spec is complete and there are no more MSCs the t-shirt will be obsolete. That's unlikely to happen anytime soon though. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Once the spec is complete and there are no more MSCs the t-shirt will be obsolete. | |
Once the spec is complete and there are no more MSCs the t-shirt will be obsolete. | |
That is never going to happen, though. |
Get a t-shirt with "There's an MSC for that!" written on it. This T-shirt shall include a code block | ||
typeset in a monospace block that should read |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Get a t-shirt with "There's an MSC for that!" written on it. This T-shirt shall include a code block | |
typeset in a monospace block that should read | |
Get a t-shirt. This T-shirt shall include a code block typeset in a monospace block that should read |
|
||
## Alternatives | ||
|
||
Instead of a shirt, a sweater or thelike could be used. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
It seems shirts have not been considered which I find quite sad since I am a regular user of them
@@ -0,0 +1,39 @@ | |||
# MSC2997: "There's an MSC for that!" |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
There is another draft for an implementation from @nadineminagawa. It will cover the front end and back end implementation of this MSC. |
|
"an" is used if the following words sounds like a vowel but "a" for a consonant sound. We can stay with the "a". There is the example of an MP3-Player at https://dictionary.cambridge.org/grammar/british-grammar/a-an-and-the |
exactly, "MSC" is pronounced ~ "emm ess see", which means it should be "an MSC" same as "an MP3" |
Quick nitpick: the apostrophe used on the t-shirt draft is upside down, it should be |
{ | ||
"type": "m.t-shirt", | ||
"content": { | ||
"body": "There's an MSC for that!" | ||
} | ||
} |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
A POC implementation was done for CCCamp23!
The following constitutes the backend implementation
{ | |
"type": "m.t-shirt", | |
"content": { | |
"body": "There's an MSC for that!" | |
} | |
} | |
{ | |
"type": "m.t-shirt", | |
"content": { | |
"body": "There's an MSC for that!", | |
"background": "$bgcolor", | |
"text-color": "$fgcolor", | |
"size": "$size", | |
"fitted": $fitted, | |
"frontend.logo": $logo, | |
"backend.highlight": $highlight | |
}, | |
"origin_server_ts": $timestamp | |
} |
where
- bgcolor is the shirt's color, in this case
#000000
- fgcolor is the frontend print's color, in this case
#FFFFFF
- size is the T-shirt size in T-Shirt sizes, we used
S
,M
,L
,XL
,XXL
,XXXL
- optionally, fitted indicates whether it's a fitted T-shirt (boolean)
- logo is whether the frontend depicts the
[matrix]
logo (boolean), in this casetrue
- highlight is whether the backend implementation uses syntax highlighting (boolean), in this case
true
- timestamp is the creation or event start, in this case
1692049320000
Full event as implemented by us:
{
"type": "de.sorunome.t-shirt",
"org.matrix.msc2997.content": {
"body": "There's an MSC for that!",
"background": "#000000",
"text-color": "#FFFFFF",
"size": "M",
"fitted": true,
"frontend.logo": true,
"backend.highlight": true
},
"origin_server_ts": 1692049320000
}
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
(gratz @Sorunome, you're eternalised in a couple T-shirts now.... 🎉)
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
(implementation accepted - MSC description updated)
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
We iterated for Matrix Community Summit 2023!
It is based on the extensible events for media and by extension, files.
content
contains 3 blocks:
- Like the media extensible events, there is the
m.text
fallback block in case your t-shirt manufacturer is unable to reproduce the graphic given by the file. - The
m.file
block holds some common properties - The
m.t-shirt
block (unstable prefixorg.matrix.msc2997.t-shirt
) specifies some t-shirt specific details
Some details of the event metadata are not shown in the backend for comprehensiveness.
{ | |
"type": "m.t-shirt", | |
"content": { | |
"body": "There's an MSC for that!" | |
} | |
} | |
{ | |
"type": "de.sorunome.t-shirt", | |
"sender": "$sender_mxid", | |
"content": { | |
"m.text": [ | |
{ "body": "There's an MSC for that!" } | |
], | |
"m.file": { | |
"url": "mxc://$some_url", | |
"name": "$url_label", | |
"mimetype": "$mime", | |
"size": "$size" | |
}, | |
"org.matrix.msc2997.t-shirt": { | |
"background": "$bgcolor", | |
"text-color": "$fgcolor", | |
"fitted": $fitted, | |
"frontend.logo": $logo | |
"backend.highlight": $highlight | |
} | |
}, | |
"origin_server_ts": $event_start | |
} |
where:
sender_mxid
per https://spec.matrix.org/latest/client-server-api/#room-event-formatsome_url
a url in the format of https://spec.matrix.org/latest/client-server-api/#matrix-content-mxc-uris that coincidentally also works when using it with the HTTP(s) protocol instead of MXC - we usedmxc://summit2023.matrixmeetup.de/conference
mime
the material of the shirt, in this caset-shirt/cotton
size
is the T-shirt size in T-Shirt sizes, we usedS
,M
,L
,XL
,XXL
, up to5XL
bgcolor
is the shirt's color, in this case#000000
fgcolor
is the frontend print's color, in this case#FFFFFF
(only relevant if the fallback text is used)- optionally,
fitted
indicates whether it's a fitted T-shirt (boolean) - our implementation lists it explicitly even if false logo
is whether the frontend depicts the graphic indicated by them.file.url
(boolean), in this casetrue
highlight
is whether the backend implementation uses syntax highlighting (boolean), in this casetrue
timestamp
is the creation or event start, in this case1695283200000
Full event as implemented by us:
{
"type": "de.sorunome.t-shirt",
"sender": "@me:homeserver.tld",
"content": {
"m.text": [
{ "body": "There's an MSC for that!" }
],
"m.file": {
"url": "mxc://matrixmeetup.de/summit2023",
"name": "Matrix Community Summit 2023",
"mimetype": "t-shirt/cotton",
"size": "L"
},
"org.matrix.msc2997.t-shirt": {
"background": "#000000",
"text-color": "#FFFFFF",
"fitted": true,
"frontend.logo": true,
"backend.highlight": true
}
},
"origin_server_ts": 1695283200000
}
Rendered
Signed-off-by: Sorunome [email protected]
Please note that this proposal is meant as a joke and is not to be taken seriously
Unstable implementation: #2997 (comment)