Something else that I have had in the pipeline for a long while is autosave drafts.
Basically, whenever you type, the article is saved to your local computer. If the browser
crashes, and you visit the same article, it will prompt you for recovery. Making a
Special:Autosave drafts index page would be trivial.
Implementation:
https://gerrit.wikimedia.org/r/#/c/5130/ <https://gerrit.wikimedia.org/r/#/c/5130/>
Of this, I also have an alternate implementation:
https://gerrit.wikimedia.org/r/#/c/157818/
<https://gerrit.wikimedia.org/r/#/c/157818/>
https://gerrit.wikimedia.org/r/#/c/159626/
<https://gerrit.wikimedia.org/r/#/c/159626/>
The original one is based on code by Joancreus and uses localStorage. It works, quite well
actually, but while improving it, I became of the opinion that localStorage is basically
so limited in storage and gives you so little feedback as an API and an enduser, that
it's not really suited for much more than usersettings (big cookies). Not for saving
potentially multiple 1MB articles, with structured details.
As a storage layer, indexedDB is much nicer in that regard. API wise, it's a bit
convoluted, but a jQuery plugin makes it usable and readable. There are WebSQL polyfills
for platforms that don't have indexedDB, which would allow us to support browsers of
the past 6 years.
I would like some opinions on which way to go here. Additionally, i would love to hear
what else people think would be required to make this usable for the Wikipedia audience
and the naming. Would this be Drafts ? Autosave drafts ? autosave ? Would you say
'recover' when asking the user to use the version from drafts, or just 'use
draft' etc?
Note that the '2nd' version also has a few more improvements like a separate RL
module and a preference option, but those can easily be added to the first implementation
as well.
DJ