signalapp / Signal-Desktop

A private messenger for Windows, macOS, and Linux.
https://signal.org/download
GNU Affero General Public License v3.0
14.56k stars 2.65k forks source link

Add support for formatting text with Markdown #999

Closed lokesh-krishna closed 3 years ago

lokesh-krishna commented 7 years ago

Feature Description

There is currently no support to format text as italic, bold or to underline or strikethrough.

Screenshots

WhatsApp handles this really well on Android and iOS (have never used the web interface) though it would be better to implement Markdown tags than to come up with our own tags like WhatsApp did.

The way WhatsApp does it is that it turns

7c1a94e0-ab15-11e6-80b4-c5b8acf27e44

Into

80dd3906-ab15-11e6-8f35-76830910d0e6

This is already a filed issue on the Android repository: https://github.com/WhisperSystems/Signal-Android/issues/5534

This is to make the feature cross platform.

liliakai commented 7 years ago

Should be pretty straightforward to implement this on Desktop, though we'll probably want to coordinate the release with Android/iOS.

basnijholt commented 7 years ago

It would be great to also support adding code blocks, inline code, and links!

This still keeps me on Skype for quick chats nowadays :(

TheMcMurder commented 6 years ago

I'm still happy to implement this feature, but I'm not willing to build it on all three platforms. I don't want to build another PR just for it to be rejected on the grounds of not wanting the feature. If I built this feature again, and it met the code standards you want, would it be merged?

scottnonnenberg commented 6 years ago

You know what would be helpful for us? A comprehensive spec of the behavior you'd like, including the phones, including comparisons to the other mobile apps. We have other higher-priority stuff on our plate right now, but that spec would remove a lot of the design friction holding us back whenever we do consider this.

TheMcMurder commented 6 years ago

First thanks for taking time to respond, I know you and your colleagues are busy with so much more than this issue. I'm willing to help in additional areas beyond this single issue, but this is a feature I want so it seems like a good place to start and get my feet wet in the codebase.

Granted this is just my 2 cents on this, but here goes:

The underlying principle for me is that I as a user of Signal (and a strong advocate) would like formatting on my messages.

It's a strong desire, but it's non urgent. The primary use case of Signal (in my mind) is security, not features, but IMO the features are what push Signal from a project only used by enthusiasts to something the mainstream public can use. With that out of the way here is my probably flawed vision for formatting in messages:

Desktop (electron web app): Ideally we'd see something like what Github provides, a full featured editor with buttons that does the formatting for you, but for power users the ability to insert formatting via the keyboard. Markdown seems like the obvious choice.

Mobile: Same behavior, on mobile it might make sense to limit the number of UX options for formatting on the top level, but mobile isn't a second class client so having all the options (even if some is under a dropdown) and preserving the ability to use markdown to format the message would be ideal.

As for comparisons to other applications, my comparisons are a bit outdated because I switched to using Signal as my main messaging application and pulled my inner circle with me almost 2 years ago, I only use signal and texts now. I'm passionate about this feature because I spent 3 months evaluating other options and after weighing pros and cons chose signal. Many of my friends ask me often why signal doesn't support formatting like What'sApp does. I can look into some other apps in the near future, and come back.

Ultimately I believe limiting support to a subset of markdown is a mistake, because markdown degrades gracefully into text.

chipaltman commented 6 years ago

I was recently made aware of Signal by a friend and I wondered how I had overlooked it. I think it's because I was searching for chat clients that supported markdown. I wouldn't use a graphic toolbar (in fact, I'd rather not have one). Thanks for considering this feature!! :D And thanks for your hard work.

arozans commented 6 years ago

Thanks for hard work: app works and looks great. That said, yes, support for formatting, especially for code blocks, is very much needed.

4mig4 commented 5 years ago

I would also like to have this feature of Markdown (don't need any UI to manage it) people would just have to know the markdowns which are standard.

charltonstanley commented 5 years ago

Lively convo over here, in case it hasn't been linked already: https://community.signalusers.org/t/font-styling-for-signal-messages-e-g-using-markdown/612

i agree- markdown support would be really nice. Signal makes it too easy to securely encrypt and send messages\files to friends and coworkers to not have at least some this feature set at our disposal. (it also is nice WHEN BEING INTENTIONALLY dramatic.) :wink:

Esokrates commented 4 years ago

Since for scientific workgroups this is also quite important: supporting LaTeX expression as part of markdown. This would make life sooo much easier.

As for the reserved character problem: To make this not confuse users who have no idea about markdown and wonder about reserved characters: I'm all for toggling the markdown mode with a button in the text field.

Also one thing I have in mind: when replying to a markdown message, when toggling the markdown mode in the reply field the code of the referred message should be shown and one should be able to split the messages on refers to up, so one could react on individual points of the message.

I think Signal-Desktop provides the ideal platform to implement this first, as it has an entire browser stack already integrated. This feature would imho justify all the bloat that comes with electron.

If one is more interested in the points I'm making I will provide mockups.

mikelyons commented 4 years ago

For users switching away from WhatsApp, the habit of typing in standard markdown is strong and switching to signal is the obvious choice but then the habits die hard

thommiller commented 4 years ago

bump I wouldn't mind taking the time to make a PR for the iOS version if others are willing to take the responsibility of desktop and android, it seems clear from this thread that people are keen for some form of formatting. Personally I'd like to avoid links though since it can be easy to send misleading/malicious links through markdown, but otherwise I think the rest of MD would be good to implement and only requires client side code.

SRugina commented 4 years ago

Hi,

As I've explained on the signal community forum, I'm very happy to work on this for android, desktop, and iOS. I've explained my methodology and decisions there too, but it will not be hard to add addition styling options on top of my 'minimum' requirements.

Also explained there is my current status on this. After 2 days, in my spare time, I've got the rendering of styles working on android and desktop - very soon I will port the functions across to iOS too. My next steps (again explained at the forum) are to get previewing of stylings, then the style menu popup options working.

Currently my solution applies to bold (*bold*), italic (_italic_) and strikethrough (\~strikethrough~) - the reasons for deviating from commonmark explained in the forum post - but it will not be hard to expand on this, e.g. for `monospace`.

Esokrates commented 4 years ago

@SRugina Could you evaluate math expression support too eventually?

SRugina commented 4 years ago

The code that evaluates math expressions would have to be written/used from a package, but feasibly the code I'm currently using can be used to detect the start and end of a math expression - then all one would have to do is use a package to evaluate the math expression within this range.

Currently, I do not plan to add that myself as it is beyond my goal of text styling for Signal.

chutchi2 commented 4 years ago

@Esokrates I've never seen markdown esque formatting evaluate functions. Did you mean formatting math expressions?

samtuke commented 4 years ago

Looking forward to this, especially links

KeronCyst commented 4 years ago

I'm new to Signal and I'm floored that it doesn't have text-formatting. I thought this is such a basic feature of all chat apps! Like, really?

garymoon commented 4 years ago

Not constructive, positive, or likely to promote getting this feature included @KeronCyst.

KeronCyst commented 4 years ago

Okay, I guess I should say, "Yes, please add this."

To me, that doesn't carry anywhere near as much weight as "Literally every other app has this basic feature, even Hangouts (if on desktop)." The only no-format messaging system I can think of is SMS or systems based on SMS like GroupMe (and maybe LINE, way back then... I can't remember).

But I mean, whatever interpretation of my reaction will help more, sure.

garymoon commented 4 years ago

And now you're just inviting the question of "if every other app is superior to your mind, why are you here?". To me, your tone is about the only way of ensuring your message carries no weight at all.

lokesh-krishna commented 4 years ago

Can we please, please keep the discussion on topic so that this thread doesn't need to be locked?

KeronCyst commented 4 years ago

"if every other app is superior to your mind, why are you here?"

Because I obviously want Signal to be superior, and I see its potential and would still like to use it; I was just floored by this matter when I found out on my own. Anyways, all blows have been delivered here, so carry on.

btmcg commented 3 years ago

Just want to add that I use signal for most of my messaging (android and linux desktop) and would love to have basic markdown support. As many of the people I interact with are developers, as is myself, code blocks and inline code snippets would make a huge difference. I'm happy to help implement this feature as well.

While not having this support wouldn't make me stop using signal, I think it's something that could benefit everyone -- especially those migrating from other messaging apps that already do support markdown. First impressions are important.

yookoala commented 3 years ago

I'd also love to see the support of ``` code quotes in Signal. Telegram supports it and it make shared code a lot more pleasant to read.

Iron-E commented 3 years ago

Coming from Matrix and Discord makes me miss this feature. Having it would definitely helpful in convincing others to use Signal :)

TreeBranches commented 3 years ago

I'm seeing this being requested in various posts in the community since 2016 - I get that there are "more important features" being implemented, but after seeing stickers and other 'fluff' being added in, I'm surprised that this has yet to be done, especially since someone in this thread offered to implement it.

kmadathil commented 3 years ago

Inline styling support will help a lot in migrating people from WhatsApp. As things stand, the average user would consider this a limitation.

SRugina commented 3 years ago

It has been confirmed that Signal is working on implementing this feature.

These things would really make the experience for my family and I complete

  • Support for backups and transfer on Android. Not manual, > but automatic like iOS
  • Support for ChromeOS via Android Tablet support
  • Support for simple markdown like bold, strike through etc.

signal_app: Great list, weโ€™re working on all of these!

Source

realvictorprm commented 3 years ago

Just was going to ask whether an external contributor may do that to get that feature finally in (as it would usually be with open source projects). But if they are already implementing it on their own, fine by me!

chutchi2 commented 3 years ago

They've been super backlogged with the huge influx of users and @SRugina had been very busy with his main work. If you're qualified to take it on then I think you'd be able to get something together sooner than anyone else ๐Ÿ‘Œ

Geremia commented 3 years ago

You can already do this with Unicode; cf. the Javascript-based YayText.com.

OLLI-S commented 3 years ago

I switched from WhatsApp and Telegram to signal. I really miss bold text and code blocks (discussion with a friend of mine who is also coding). My daughter is not using Signal because "why using a messenger that is not even allowing bold text". I would donate 20 Euro for this feature!

TheodoreEhrenborg commented 3 years ago

You can already do this with Unicode; cf. the Javascript-based YayText.com.

Thanks, this is a good workaround. But I would really appreciate it (20 euros) if Signal added Markdown support.

OLLI-S commented 3 years ago

I really wonder, why such an important feature (under user perspective) is missing. Do you cooperate with services like https://www.bountysource.com/ There users can donate for single GitHub issues and I already have donated for some other projects there.

volomike commented 3 years ago

I would like to be able to paste source code

KeronCyst commented 3 years ago

You can already do this with Unicode; cf. the Javascript-based YayText.com.

Where exactly do we find this ~/.config/plasmashellrc file and is the formatting local only to us? If the formatting is local-only then this doesn't matter.

OLLI-S commented 3 years ago

To offer a great user experience (UX) and to increase the usability, users should have an easy way of formatting text (markdown). And this feature should be available for all platforms.

e40 commented 3 years ago

I'd also love to see the support of ``` code quotes in Signal. Telegram supports it and it make shared code a lot more pleasant to read.

This is the most important one. If I want to share something, like an email, I want the entire thing to be quoted and any links to be inactive, etc.

OLLI-S commented 3 years ago

Sorry if I ask this question: when is this feature planned? If I see it correctly then it is not even planned for any release?

VinnyFonseca commented 3 years ago

So, this discussion started almost 6 years ago, and no implementation yet? I know you're focused on security and privacy, that's why I switched, but if you keep ignoring user experience and quality of life improvements your retention will suffer. Most of my friends dropped it within the month, and the ones who stayed are using less and less.

kees-closed commented 3 years ago

So, this discussion started almost 6 years ago, and no implementation yet? I know you're focused on security and privacy, that's why I switched, but if you keep ignoring user experience and quality of life improvements your retention will suffer. Most of my friends dropped it within the month, and the ones who stayed are using less and less.

I think it's best to convince people to switch to Matrix. It's more like email, in the sense that it's an open standaard and you can use whatever client works with that standard. Let's say we finally get an RPM or an official Flatpak after 6 years, tomorrow you maybe want to switch to the Pinephone or Librem 5. Then we have the same problem again.

Being locked in to a software vendor sucks. We need open-source and open standards. With Matrix we can use whatever client we like. Element is quite a mature client. So, let's just convince people to switch to that and we don't have to have these conversations again. The community can then provide the features, clients and compatibility that's needed. The same ease and simplicity as with the email standard.

garymoon commented 3 years ago

While I don't entirely disagree with this, and the approach Signal's taking WRT third-party integration makes it even harder to disagree with, the problem with Signal adoption (especially around UX for those used to more polish ala Telegram/WhatsApp) is far greater in the Matrix ecosystem. Which client do I use and why? Which homeserver do I join? WTF is a homeserver? What happens when my homeserver dies? To say nothing of UI UX.

Signal is the mainstream middle-road option. You don't get the corporate influence like with WhatsApp or the lack of privacy like with Telegram, but you also don't get the absolute freedom of a federated ecosystem or the polish of a corporate-sponsored solution. On balance, if you want any part of the network effect plus your privacy respected, the middle of the road is where it'll have to be. I have enough trouble getting friends and family to care about privacy etc without answers to the Matrix questions above.

VinnyFonseca commented 3 years ago

We've seen it time and time again that community driven software suffers on the UI/UX side, and if you're part of the Linux community you'll know it very well. "Just use the terminal" or "Who cares if it's ugly? It works.". People were offended when users were asking to have smooth rounded borders on ubuntu when it was frankly a pixelated mess. The user side will always suffer, be limited or ignored entirely when there are functionality-based priorities to be addressed.

What people don't realise, don't care or conveniently forget about is that for your software to be dominant you need two things, popularity (user adoption) and good UX (user retention). UX is not just "this app is performant", it's mainly "this app is pleasant to use". And being pleasant to use is based mainly on the UI being fast, intuitive, polished and feature complete according to what people are used to at the time, which in this case means Whatsapp and Telegram.

Most people don't care about security, privacy or what's happening behind the scenes as long as it lets them accomplish their tasks without being a hindrance. The fact that Signal has the hardest parts already taken care of, which are popularity, security and privacy, and could have the best of both worlds but choose not to, is what will eventually drive me and many others away.

You can see above in this discussion TheMcMurder offering to build this feature even though his PR may be blocked again, where scottnonnenberg replies with:

"You know what would be helpful for us? A comprehensive spec of the behavior you'd like, including the phones, including comparisons to the other mobile apps. We have other higher-priority stuff on our plate right now, but that spec would remove a lot of the design friction holding us back whenever we do consider this."

So, a community member on an open source software board offers to develop a feature and instead of receiving the green light along with collaboration guidelines, they instead receive a task that will create a blocker for progress. In an ideal scenario, Signal would welcome the effort, review the PR and complete it themselves with the big part of the work already done.

We are talking about markdown support on the chat box and bubbles here, it's not some bleeding edge groundbreaking feature and shouldn't take more than 2 weeks to write a regex replace function that won't run if inside certain situations such as code blocks (```), especially because Discord, Slack, Whatsapp Telegram and every other modern chat software under the sun already has it. Instead, we've waited 5 and a half years.

Come on Signal devs, pay a bit more attention to the user side of things, please.

lokesh-krishna commented 3 years ago

Can y'all please move the discussion to the community forum? Each message that isn't a step towards resolving the issue simply pings every single person who's subscribed to the issue with just noise with respect to what they're actually subscribed to. Seeing progress, not more of preaching to the choir or to hear about alternatives.

VinnyFonseca commented 3 years ago

Just my 2 cents. I don't mind moving this conversation, but it's not like it's irrelevant to progress when this issue hasn't been worked on at all. Fragmenting the discussion and moving to another forum when people here are asking for progress and giving reasons for this progress to happen is also a way of blocking said progress and ensuring nothing happens, again.

khimaros commented 3 years ago

i'd particularly love to see backticks for codeblocks and preview before send ;)

Hahlh commented 3 years ago

Lively convo over here, in case it hasn't been linked already: https://community.signalusers.org/t/font-styling-for-signal-messages-e-g-using-markdown/612

i agree- markdown support would be really nice. Signal makes it too easy to securely encrypt and send messages\files to friends and coworkers to not have at least some this feature set at our disposal. (it also is nice WHEN BEING INTENTIONALLY dramatic.) wink

I would like to bring this message and the link to the relevant community thread again to the forefront.

There is a lot of discussion going on and there are also updates regarding the feature. It's confirmed that this is being worked on and some complexities of PRs and making this happen are well explained.

stale[bot] commented 3 years ago

This issue has been automatically marked as stale because it has not had recent activity. It will be closed if no further activity occurs. Thank you for your contributions.

charltonstanley commented 3 years ago

This issue has been automatically marked as stale because it has not had recent activity. It will be closed if no further activity occurs. Thank you for your contributions.

Bump to keep the stale bot from closing. Many people still want this, myself included. ๐Ÿ˜„