| #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. |