On Tue, Apr 12, 2016 at 5:12 PM, Thomas Mortagne <[email protected]> wrote:
> On Tue, Apr 12, 2016 at 4:09 PM, Vincent Massol <[email protected]> > wrote: > > > >> On 12 Apr 2016, at 15:43, Marius Dumitru Florea < > [email protected]> wrote: > >> > >> On Tue, Apr 12, 2016 at 4:30 PM, Vincent Massol <[email protected]> > wrote: > >> > >>> Hi Marius, > >>> > >>>> On 12 Apr 2016, at 14:56, Marius Dumitru Florea < > >>> [email protected]> wrote: > >>>> > >>>> Hi devs, > >>>> > >>>> We need to decide what is the expected link reference serialization > >>>> produced by the WYSIWYG editor when you create a link to a wiki page. > I > >>>> think we have to choose between 3 options: > >>>> > >>>> (1) Output untyped (ambiguous) link references whenever possible > >>>> (2) Always output unambiguous (typed) link references (both 'doc:' and > >>>> 'space:') > >>>> (3) Always output 'doc:' link references (no 'space:' references) > >>>> > >>>> Let's see the details: > >>>> > >>>> = OPTION 1: Output untyped link references whenever possible = > >>>> > >>>> == <7.2 == > >>>> > >>>> Link from A.B > >>>> * to A.WebHome (space home page) => [[WebHome]] > >>>> * to A.C (same space) => [[C]] > >>> > >>> I don’t understand why you’re using relative links in your 2 examples > >>> above. Option (1) says untyped, it doesn’t say convert links into > relative > >>> links. > >>> > >>> So for me that would be: > >>> > >>> * to A.WebHome (space home page) => [[A.WebHome]] > >>> * to A.C (same space) => [[A.C]] > >>> > >>>> * to X.Y (different space) => [[X.Y]] > >>>> * to X.WebHome => [[X.WebHome]] > >>>> > >>>> == 7.2+ == > >>>> > >>>> Link from A.B.WebHome > >>>> * to A.WebHome (its parent) => [[space:A]] > >>> > >>> Note 1: We could also imagine introducing a syntax for absolute links > such > >>> as [[:A]] > >>> Note 2: We could also imagine introducing a syntax for parent links > such > >>> as [[..A]] > >>> > >>>> * to A.B.C or A.B.C.WebHome or A.C or A.C.WebHome (child or sibling) > => > >>>> [[C]] (very ambiguous) > >>> > >>> This is using a relative notation. But (1) is not about transforming > links > >>> into relative links. > >>> > >>> so for me this is: > >>> * => [[A.B.C]] > >>> * => [[A.C]] > >>> > >>> I’m stopping reading here since first we need to clarify if (1) is > about > >>> a) untyped or b) using relative references. > >>> > >>> IMO it should be about a) and doesn’t have to do b). > >>> > >>> > >> > >>> Maybe I misunderstood something? > >>> > >> > >> Generating relative references is a must for me (whenever possible), no > >> matter what output format we choose. I'm surprised there's any doubt > about > >> this. The current WYSIWYG editor is generating relative references and > the > >> CKEditor should continue to do this. Relative references have many > >> advantages (eases the refactoring, allows you to export a hierarchy and > >> import it somewhere else, etc.). > > > > Didn’t realize the WYSIWYG was already doing this! > > > > Indeed there are pros. The cons is that it can make the linking more > ambiguous., but overall it’s probably a good thing. > > > > > Also note that ideally we’d need to not convert existing links when > going through the WYSIWYG editor. That’s true independently of this > discussion though. > > > This is handled by XML comments containing the source reference so the > only thing the WYSIWYG need to do is to not touch those comments > (unless the user explicitly modify the target of course). > It's already the case. The link reference is preserved as is unless you edit the link and apply the changes (i.e. you close the link dialog with the OK button). > > > > > Thanks for the reply, I understand now. > > > >> So option (1) is about untyped relative links, option (2) is about typed > >> relative links and option (3) is about doc: relative links. In other > words: > >> (1) don't generate "doc:" and "space:" > >> (2) generate both "doc:" and "space:" > >> (3) generate only "doc:" (don't hide WebHome) > > > > I’ve now read again the first mail and I’m in favor of (2). > > > > The main reason for me is that we want to hide WebHome and with Nested > Pages, all links would have WebHome in them with option (3). > > > > Option (3) is really the worst for users: they get to see both “doc:” > and “WebHome” :) > > > > Also note that even option (2) is not perfect because of the “doc:” and > “space:” prefixes which are also hard to understand for users. > > > > I also know users who use both WYSIWYG and wiki editors (and who think > that WebHome is confusing - We’re used to it, but it’s really confusing if > you’re just starting to use XWiki - you don’t even understand what it means > at all). > > > > To summarize: +1 for (2). > > > > Note: My choice for (2) is based purely on a usability POV. It could be > that implementing option (2) is so much complex that it’s not worth it and > that we’d want to wait till we change the underlying model before changing > the linking syntax. > > > > Last note: Maybe we need to invent some completely new syntax for > linking since currently it has become very complex. I remember of any mail > where I proposed some new syntax for links using a different syntax such as > [[[…]]]. It could be interesting to spec a new simpler syntax such as: > > * Use “/“ instead of “.” (we already know that users would prefer “/“ > since they’re more used to that symbol) > > * Leading “/“ means absolute. Example: [[[/A/B]]] > > * Use “..” for parent. Example: [[[..A/B]]] > > > > Thanks > > -Vincent > > > >> Thanks, > >> Marius > >> > >> > >>> > >>> Thanks > >>> -Vincent > >>> > >>>> * to A.B.C.D or A.B.C.D.WebHome (nested page two levels or more > below) => > >>>> [[.C.D]] (ambiguous) > >>>> * to A.C.D or A.C.D.WebHome (nested page under sibling) => [[A.C.D]] > >>>> (ambiguous) > >>>> * to X.Y.Z or X.Y.Z.WebHome => [[X.Y.Z]] (ambiguous) > >>>> > >>>> Link from A.B (terminal) > >>>> * to A.WebHome (its parent) => [[space:A]] > >>>> * to A.C or A.C.WebHome (sibling) => [[C]] (ambiguous) > >>>> * to A.C.D or A.C.D.WebHome (nested page under sibling) => [[A.C.D]] > >>>> (ambiguous) > >>>> * to X.Y or X.Y.WebHome => [[X.Y]] (ambiguous) > >>>> > >>>> Link from A.B.C (terminal) or A.B.C.WebHome > >>>> * to A.B.WebHome (its parent) => [[A.B]] (ambiguous) > >>>> > >>>> PROS: > >>>> * shorter link references > >>>> * hides WebHome from source syntax on 7.2+ > >>>> > >>>> CONS: > >>>> * ambiguous link references > >>>> * complex code > >>>> * different output for <7.2 and 7.2+ in case of top level space > >>> [[WebHome]] > >>>> or [[A.WebHome]] vs. [[space:A]] (we need to check if support for > nested > >>>> spaces is available) > >>>> > >>>> > >>>> = OPTION 2: Always output unambiguous link references = > >>>> > >>>> == <7.2 == > >>>> > >>>> Link from A.B > >>>> * to A.WebHome (space home page) => [[doc:WebHome]] (relative) > >>>> * to A.C (same space) => [[doc:C]] (relative) > >>>> * to X.Y (different space) => [[doc:X.Y]] > >>>> * to X.WebHome => [[doc:X.WebHome]] > >>>> > >>>> == 7.2+ == > >>>> > >>>> Link from A.B.WebHome > >>>> * to A.WebHome (its parent) => [[space:A]] > >>>> * to A.B.C (terminal child) => [[doc:C]] (relative) > >>>> * to A.B.C.WebHome (non-terminal child) => [[space:A.B.C]] (absolute) > >>>> * to A.C (terminal sibling) => [[doc:A.C]] > >>>> * to A.C.WebHome (non-terminal sibling) => [[space:A.C]] > >>>> * to A.B.C.D (terminal descendant) => [[doc:.C.D]] (relative) > >>>> * to A.B.C.D.WebHome (non-terminal descendant) => [[space:A.B.C.D]] > >>>> (absolute) > >>>> * to A.C.D (terminal descendant of sibling) => [[doc:A.C.D]] > >>>> * to A.C.D.WebHome (non-terminal descendant of sibling) => > >>> [[space:A.C.D]] > >>>> * to X.Y.Z => [[doc:X.Y.Z]] > >>>> * to X.Y.Z.WebHome => [[space:X.Y.Z]] > >>>> > >>>> Link from A.B (terminal) > >>>> * to A.WebHome (its parent) => [[space:A]] > >>>> * to A.C (terminal sibling) => [[doc:C]] (relative) > >>>> * to A.C.WebHome (non-terminal sibling) => [[space:A.C]] (absolute) > >>>> * to A.C.D (terminal descendant of sibling) => [[doc:.C.D]] (relative) > >>>> * to A.C.D.WebHome (non-terminal descendant of sibling) => > >>> [[space:A.C.D]] > >>>> * to X.Y => [[doc:X.Y]] > >>>> * to X.Y.WebHome => [[space:X.Y]] > >>>> > >>>> Link from A.B.C (terminal) or A.B.C.WebHome > >>>> * to A.B.WebHome (its parent) => [[space:A.B]] (absolute) > >>>> > >>>> PROS: > >>>> * unambiguous link references ("what you link is what you get") > >>>> * slightly less complex code (but still complex) > >>>> * hides WebHome from source syntax on 7.2+ > >>>> > >>>> CONS: > >>>> * longer link references (because of "doc:" and "space:" prefixes) > >>>> * cannot specify relative 'space:' references > >>>> * different output for <7.2 and 7.2+ in case of [[doc:WebHome]] vs. > >>>> [[space:A]] > >>>> > >>>> > >>>> = OPTION 3: Always output 'doc:' references = > >>>> > >>>> == <7.2 == > >>>> > >>>> Link from A.B > >>>> * to A.WebHome (space home page) => [[doc:WebHome]] (relative) > >>>> * to A.C (same space) => [[doc:C]] (relative) > >>>> * to X.Y (different space) => [[doc:X.Y]] > >>>> * to X.WebHome => [[doc:X.WebHome]] > >>>> > >>>> == 7.2+ == > >>>> > >>>> Link from A.B.WebHome > >>>> * to A.WebHome (its parent) => [[doc:A.WebHome]] > >>>> * to A.B.C (terminal child) => [[doc:C]] (relative) > >>>> * to A.B.C.WebHome (non-terminal child) => [[doc:.C.WebHome]] > (relative) > >>>> * to A.C (terminal sibling) => [[doc:A.C]] > >>>> * to A.C.WebHome (non-terminal sibling) => [[doc:A.C.WebHome]] > >>>> * to A.B.C.D (terminal descendant) => [[doc:.C.D]] (relative) > >>>> * to A.B.C.D.WebHome (non-terminal descendant) => [[doc:.C.D.WebHome]] > >>>> (relative) > >>>> * to A.C.D (terminal descendant of sibling) => [[doc:A.C.D]] > >>>> * to A.C.D.WebHome (non-terminal descendant of sibling) => > >>>> [[doc:A.C.D.WebHome]] > >>>> * to X.Y.Z => [[doc:X.Y.Z]] > >>>> * to X.Y.Z.WebHome => [[doc:X.Y.Z.WebHome]] > >>>> > >>>> Link from A.B (terminal) > >>>> * to A.WebHome (its parent) => [[doc:WebHome]] (relative) > >>>> * to A.C (terminal sibling) => [[doc:C]] (relative) > >>>> * to A.C.WebHome (non-terminal sibling) => [[doc:.C.WebHome]] > (relative) > >>>> * to A.C.D (terminal descendant of sibling) => [[doc:.C.D]] (relative) > >>>> * to A.C.D.WebHome (non-terminal descendant of sibling) => > >>>> [[doc:.C.D.WebHome]] (relative) > >>>> * to X.Y => [[doc:X.Y]] > >>>> * to X.Y.WebHome => [[doc:X.Y.WebHome]] > >>>> > >>>> Link from A.B.C (terminal) > >>>> * to A.B.WebHome (its parent) => [[doc:WebHome]] (relative) > >>>> > >>>> Link from A.B.C.WebHome > >>>> * to A.B.WebHome (its parent) => [[doc:A.B.WebHome]] (absolute) > >>>> > >>>> PROS: > >>>> * unambiguous link references ("what you link is what you get") > >>>> * relative references for nested non-terminal descendants > >>>> * same output for <7.2 and 7.2+ > >>>> * simpler code (easier to maintain) > >>>> > >>>> CONS: > >>>> * doesn't hide WebHome from source syntax > >>>> * longer link references (because of "doc:" prefix and "WebHome" > suffix) > >>>> > >>>> > >>>> I don't like ambiguous links so I'm against option (1). I don't think > the > >>>> WYSIWYG editor users care too much about the wiki syntax (option 2), > as I > >>>> commented on http://jira.xwiki.org/browse/XWIKI-13083, so I'm +1 for > >>> option > >>>> (3). > >>>> > >>>> WDYT? > >>>> > >>>> Thanks, > >>>> Marius > > _______________________________________________ > > devs mailing list > > [email protected] > > http://lists.xwiki.org/mailman/listinfo/devs > > > > -- > Thomas Mortagne > _______________________________________________ > devs mailing list > [email protected] > http://lists.xwiki.org/mailman/listinfo/devs > _______________________________________________ devs mailing list [email protected] http://lists.xwiki.org/mailman/listinfo/devs

