mastodon / mastodon

Your self-hosted, globally interconnected microblogging community
https://joinmastodon.org
GNU Affero General Public License v3.0
47.32k stars 7.02k forks source link

Feature Request : Save as a Draft #13617

Open little-snowflake-bot opened 4 years ago

little-snowflake-bot commented 4 years ago

I posted a thread to request the draft function on Mastodon here:

https://qoto.org/web/statuses/104110596539461744

For now, I collected 15 stars, that means 15 people on fediverse support this idea, will the development team add this feature?

brawaru commented 4 years ago

You really should have made issue here first and then share on Mastodon, so people would be able to upvote it here, but glad you made an issue it now! May I ask you to edit in the final details from your linked post so we able to discuss them here? (and not like some sort of abstract things we shared using telepathy…)

https://qoto.org/web/statuses/104110596539461744

In overall, I agree, the cloud drafts feature may come in handy, just like in old twitter, before it was murdered with their new design! But rather than having a button maybe they should auto-save (Telegram-like). And the button with text looks out of place, instead we could use icon button with fa-pencil-square-o to open drafts modal, probably.

And regarding,

For now, I collected 15 stars, that means 15 people on fediverse support this idea, will the development team add this feature?

As you may notice we have about 1.5K issues here at the moment, so Mastodon team is pretty blocked for a long time. But don't close the issue as people, like new contributors, might want to implement that in the future. Upvotes may also help prioritizing it in some sort!

buzzb0x commented 2 years ago

Hi! Is this feature still up for consideration? It sounds pretty important, especially for people coming from the birdsite.

Is there a roadmap of features or a mindset behind which feature might be approved? I'd love to help if I have some time.

irag commented 2 years ago

Seems like there is a function for saving draft replies on Tusky.

ShadowJonathan commented 1 year ago

Disregarding the fact that qoto.org was quoted here (a notoriously hostile and manipulative server on the fediverse), I do agree that drafts can be useful in mastodon, as I know a lot of people use them to sorta-save posts they want to send one time, yet not "now", or simply want to draft (ha) them to iterate on in a later time.

ThisIsMissEm commented 1 year ago

On a moderation / trust & safety note:

If we do add drafts, we'll likely need tools to monitor the usage of them, such that we don't enable that "we share a gmail account, but don't email anything & just save draft emails for the other person", as that can be a vector for illicit activities.

Maybe a drafts vs posts ratio or something? The more you post the higher your draft limit is? The accounts that user drafts for illicit activities will likely not post much nor have followers, so these might be metrics through which we can prevent abuse in these features?

illume commented 1 year ago

Just lost another toot, due to browser tab reload on Safari. You know where it helpfully reloads Safari when you are out of memory destroying any unsaved data?

What about a sessionStorage/localStorage based one to start with? That would solve the mobile browser issue, and no cloud worries then.

benaryorg commented 1 year ago

It would indeed be very nice if the Mastodon Web UI could store a draft. Just localStorage would probably scratch the itch for like 80% of people, especially considering that apps usually have their own drafts and integrating that would be much more involved (though providing a server side API for this would likely lead to apps adopting this).

General Comparison

localStorage server-side
basic draft functionality :white_check_mark: :heavy_check_mark:
privacy focused :white_check_mark: :grey_question: (could be encrypted)
available on multiple devices :x: :white_check_mark:
works with uploaded media :grey_question: :white_check_mark:
works with apps :x: :grey_question: (would probably be adopted)
moderation functionality or rate limits :white_check_mark: (not required) :exclamation: (very likely¹)
automatic saving during composition :white_check_mark: :grey_question: (may be a bit too much stress for the server?)
implementation complexity probably low probably a bit higher (e.g. media integration)

¹: at least rate-limits to fight potential abuse would be good (i.e. "max. 1000 drafts" or something configurable server-side)

First Implementation / Future Development

That said, localStorage could be migrated automatically (with user-consent) in a later version if server-side storage becomes a thing, so as a first implementation this could provide the UI and everything that's required fully client side and which is required for the feature anyway, but without having to touch the database schema or similar. This work could then potentially be reused later on. Specifically a hybrid implementation that allows me to toggle whether or not I want a draft stored server-side would be really nice, with a default set in the account settings, and a server-side toggle whether to enable the feature or not (in case moderation is an issue or whatever).

Use Cases

ShadowJonathan commented 1 year ago

Seems like there is a function for saving draft replies on Tusky.

this is achieved by making scheduled posts that'll be posted in the year 9999, i see a few of these in the database

this is a neat workaround, but it might be better to have a dedicated storage on the server


@benaryorg i think having a localstorage implementation would make more sense for drafts that you're still writing, i.e. your browser crashes in the middle of making it, but its saved somewhere still

maybe better would be a syncing action where those drafts would get saved, but i think explicit "save as draft" would be better for that


extra use cases:

shaedrich commented 1 year ago

i have figured out this really funny post but i dont think im in the right state of mind (middle of the night, party, drunk, high, etc.) to post it, but i'll save it to look at later

Wasn't there a discussion on Instagram or some other platform to implement a "drunk mode" where every post sent went to the drafts to prevent intoxicated people from posting what they might regret the next day and let them review their drunk prose when they are sober?

Just localStorage would probably scratch the itch for like 80% of people

That's probably a good start. If there needs to be server-side functionality later, this could be implemented as another visibility level, meaning, the post would only be visible to the user themself. Since we can edit our own posts, this should give us all the tools we need.

@benaryorg i think having a localstorage implementation would make more sense for drafts that you're still writing, i.e. your browser crashes in the middle of making it, but its saved somewhere still

maybe better would be a syncing action where those drafts would get saved, but i think explicit "save as draft" would be better for that

Specifically a hybrid implementation that allows me to toggle whether or not I want a draft stored server-side would be really nice, with a default set in the account settings, and a server-side toggle whether to enable the feature or not (in case moderation is an issue or whatever).

Looks like we have roughly five distinct modes:

Each of these "modes" might get their own setting to turn on, off or something in between.

ShadowJonathan commented 1 year ago

Maybe just two toggles/settings?

shaedrich commented 1 year ago

I thought more of: