Hi,

First of all thanks for your support. You're completely right I should have refered to XHTML and not HTML. I have actually been playing with the editor harness and started working on a doodad but I just wanted to get a best practices advice before mooving further. We want to support DOM editing and we're using XHTML as a sample trial. The goal is to extend the approach to other schemas like SVG, X3D, etc so we need a renderer and can't just use the source code directly.

I understand that expressing these operations as DOM operations comes at a cost but the rendering comes free. So, what you're saying is that we should optimize the document model for OT and worry less about the rendering, right ?

On 28-02-2011 23:47, David Hearnden wrote:
Hi Nelson,

Is your goal to allow collaborative editing of the full HTML spectrum in a wysiwyg fasgion?

HTML is a mismatched hybrid of content and presentation, and does neither of the two particularly well except for the particularly narrow purpose for which it was designed (single-column paragraphs of text with mild markup). I'd recommend focusing on what you want to use HTML for (e.g., documents, or diagrams, or spreadsheets, etc), and design your product around that.

When it comes to collaborative editing, it is vital for the syntax of what's being edited to have a form where mutations of that syntax have close correlation with user intent, in order to have conflict resolution rules (i.e., OT) that make sense. e.g., imagine using raw HTML tables for a spreadsheet-like experience, and one user moves a row while the other deletes a column. If you look at the individual HTML-table mutations to express those actions (deletion of a tr with lots of tds, insertion of a tr with lots of tds, plus deletion of a sparse range of tds), it is difficult to write HTML-element-mutation-based OT resolution that would result a favorable outcome. Even for document editing, the trivial action of hitting enter in the middle of a paragraph (in order to split it) can only be expressed in HTML syntax as the deletion of an entire paragraph plus the insertion of two more paragraphs. If someone else was concurrently typing in that original paragraph, it is unlikely that OT rules could produce a desirable outcome. There are many other trivial examples (e.g., selecting some text and styling it while someone else is typing in it, or two users selecting intersecting regions and applying independent styles, etc) that demonstrate why raw HTML's syntax can be problematic for concurrent OT-based editing.

For any kind of collaborative editor, I'd discourage using HTML as a content language, and think of it only as a rendering language. If you're not fussed on the content language, and you just want an editor that renders as HTML (but without the full wave client around it), then I'd recommend taking a look at the editor test harness (run it with 'ant editor-hosted') as a starting point.

Alternatively, if your goal is to allow multiple HTML programmers to edit pages collaboratively, still giving them the full spectrum of HTML, then I'd consider using any collaborative text editor (of which Wave is one) to edit the HTML source directly as text, rather than using a DOM-based HTML editor.

HTH,

-Dave


On Tue, Mar 1, 2011 at 10:06 AM, Nelson Silva <[email protected] <mailto:[email protected]>> wrote:

    Hi all,

    I'd like to know what is the best approach to create an editor to
    manipulate a pure HTML DOM element.

    If I wanted to be able to support collaborative edition of pure
    HTML how should I approach it?

    I could use an HTML doodad but I'd have to add support for the
    full HTML schema and would have a one to one mapping between my
    document model and the view...

    The idea is to use Wave and OT but not the client interface to
    create a collaborative HTML editor. Should I just skip gadgets and
    doodads and create a simple editor or would it be best to use
    doodas even with a direct mapping between the document and the view ?

    Thanks



Reply via email to