#summary Creating Documents, etc.
#labels Importance-Details,Phase-Design,Contents-Draft

= What to Do with TinyMCE in Melange =

  * Issue 306 TinyMCE editor fails to meet *many* user needs, consider replacing with wiki (this issue contains many merged issues) 

TinyMCE in Melange is horked as detailed in [http://code.google.com/p/soc/issues/detail?id=306 Issue 306]. Let's talk about:

  # options for replacing it
  # feasibility of those options

It has been suggested that the most beneficial thing to do would be to make Melange accept wiki markup and dispense with other text editing functionality.

== Alternatives ==

  * HtmlBox
  * MarkDown
  * A wiki (using our own code and/or wikimarkup, wikimarkup is already in our libs).
  * _...add other alternatives considered here_

==Editing Requirements==

_...to be agreed/confirmed_

The editor needs:

  * Standard formatting such as bold/italic/bullet-list/horizontal rule/tables.
  * Diffs for revision history
  * Images? (for screenshots)
  * Html links? (for links to supporting documentation)


==Diffs==


diffs/versioning - is important for proposal changes, documentation changes

  * Diff would be possible whether or not we stay with TinyMCE
  * Ready made python diff code exists.  It's used in Rietveld. See also [http://docs.python.org/library/difflib.html difflib module] 
  * It would also be possible to write a diff that works in javascript, client side. See, for example [http://snowtide.com/jsdifflib JSdifflib] and [http://ejohn.org/files/jsdiff.js John Resig's Diff algorithm]

==Tiny?==

TinyMCE is not so very tiny, and accounts for some of the initial start up time when the first page on melange is opened.  Thereafter most browsers re-use the existing cached files, so it is probably not slowing down the app on subsequent pages.

==Security?==

Wiki, i.e. having python creating the html rather than storing the html directly might make it easier to overcome some kinds of scripting 'attacks'

  * Issue 448 Mentor impersonation in proposal comments

However it is also possible (though possibly difficult to get 100% right) to strip 'bad html' from html.  Wiki and TinyMCE (or similar) are not mutually exclusive, and which to use could be a [UserPreferences] option.  Clearly it is easier to support just one.