On Apr 26, 2013, at 7:56 PM, Marius Dumitru Florea 
<[email protected]> wrote:

> On Fri, Apr 26, 2013 at 1:00 PM, Vincent Massol <[email protected]> wrote:
>> Hi Denis,
>> 
>> On Apr 26, 2013, at 10:53 AM, Denis Gervalle <[email protected]> wrote:
>> 
>>> Hi Vincent,
>>> 
>>> As I said on IRC, I am afraid that all your solutions increase complexity
>>> for not much, especially for user having a single wiki.
>>> To keep things simple, 1) without syntax version change would be sufficient
>>> in most cases, but could cause some unexpected breakage. If we want to get
>>> rid of those, let's go for a simplification of 3), where only links to
>>> other wikis require the doc: prefix. This would be a single new syntax
>>> version, and will allow dynamic addition of new prefix for the future.
>>> 
>>> So we would have only two possibilities for documents (parenthesis meaning
>>> optional):
>>> doc:(wiki:)(space.)name
>>> (doc:)(space.)name
>>> 
>>> WDYT ?
>> 
>> So to recap what you're proposing:
>> 
>> Solution 3bis
>> ===========
>> 
>> * For links to docs in subwikis force the user to use the "doc:" notation
>> 
>> PRO:
>> * Solves all future needs for new reference types and makes the syntax 
>> extensible since it allows to plug new type parsers without breaking the 
>> syntax
>> 
>> CONS:
>> * Harder to write links to documents in subwikis (for workspaces users for 
>> example)
>> 
>> Analysis
>> =======
>> 
>> I agree that this solution is better than solution 3 below.
>> 
>> So from an algorithm point of view this means:
>> * Looks for a prefix type
>> ** If a prefix is found use the registered type parser if it exists
>> ** If the prefix is found but there *NO* type parser for that prefix, DO 
>> SOMETHING
>> * If no prefix is found then
>> ** if the reference starts with "[a-zA-Z0-9+.-]*://" then do as now and 
>> consider it a URL
>> ** otherwise consider it a reference to a document
>> 
>> So the only change from the current code is the "DO SOMETHING" part which we 
>> don't have (ATM we then default to considering it a reference to a document).
>> 
>> The only solution that really makes sense is to generate an Error block as 
>> we do for macros to mention to the user that the used prefix doesn't exist 
>> (and maybe mention that if he wanted to point to a doc in another wiki he 
>> should use the "doc:" notation).
> 
> This is for XWiki 2.2 syntax right?

yes

Thanks
-Vincent

> Thanks,
> Marius
> 
>> 
>> Sounds not too bad but I'd have preferred a more seamless solution for the 
>> user with less typing when referencing a doc in another subwiki. Ideally the 
>> use case of adding new type parser is not that common that we should make 
>> the user suffer from having to prefix everything with "doc:". Now it's 
>> probably the best solution from all proposed so far if we want to support 
>> plugging in any new type parser in the future in XWiki Syntax 2.2.
>> 
>> WDTY?
>> 
>> Thanks
>> -Vincent
>> 
>> PS: Sniff almost all my code developed during one day will go to the trash 
>> if we choose this… :)
>> 
>>> On Fri, Apr 26, 2013 at 10:42 AM, Vincent Massol <[email protected]> wrote:
>>> 
>>>> 
>>>> On Apr 26, 2013, at 10:27 AM, "Ecaterina Moraru (Valica)" <
>>>> [email protected]> wrote:
>>>> 
>>>>> Hi,
>>>>> 
>>>>> There are a lot of things I don't understand, but I'm just curios if you
>>>>> had the same problems when you added 'icon:', 'path:', 'attach:',
>>>> 'mailto:',
>>>>> etc. Are this words reserved now, a.k.a can not make wikis with these
>>>>> names? Or maybe this case is a special one.
>>>> 
>>>> It's not a special one. Right now it already means that if you need to
>>>> refer to a wiki named "mailto" you need to use: "doc:mailto:…";
>>>> 
>>>> Thanks
>>>> -Vincent
>>>> 
>>>>> Thanks,
>>>>> Caty
>>>>> 
>>>>> 
>>>>> On Fri, Apr 26, 2013 at 11:11 AM, Vincent Massol <[email protected]>
>>>> wrote:
>>>>> 
>>>>>> Hi devs,
>>>>>> 
>>>>>> I've started implementing XRENDERING-290 (I've spent already 1 day on it
>>>>>> and have most of it done) but as I progressed I've realized we need to
>>>>>> decide on something.
>>>>>> 
>>>>>> It's an interesting problem! :)
>>>>>> 
>>>>>> So the issues asks for support a "user" prefix in links to link to user
>>>>>> profiles such as in: [[label>>user:evalica]]
>>>>>> 
>>>>>> Explanation of Problem
>>>>>> ==================
>>>>>> 
>>>>>> I started with implementing a new Reference Type Parser to add support
>>>> for
>>>>>> the "user" prefix. I soon realized that we cannot implement this in
>>>> XWiki
>>>>>> Syntax 2.1 since it means if a user currently has
>>>> [[label>>user:evalica]]
>>>>>> it means pointing to the "user" wiki and to the page named "evalica".
>>>>>> 
>>>>>> Thus we need to add this in a new syntax only (i.e. XWiki Syntax 2.2).
>>>>>> 
>>>>>> Now the problem is that currently Reference Type Parsers are components
>>>>>> and implementing a new component means it's going to be available to
>>>> XWiki
>>>>>> Syntax 2.1. So I spent a substantial amount of time to allow syntaxes to
>>>>>> specifically specify the list of prefixes that they support. This is
>>>> done,
>>>>>> I just need to push it.
>>>>>> 
>>>>>> Now this all looked good till I started implementing the
>>>>>> UserXHTMLLinkTypeRenderer… I realized that I would need to be able to
>>>>>> transform a String (supposed to represent a username) into a User
>>>> reference
>>>>>> and even though we don't have an API for this ATM this would normally
>>>> mean
>>>>>> to depend on the Platform User module… which is a big no go since
>>>> Rendering
>>>>>> cannot depend on Platform.
>>>>>> 
>>>>>> Side Note:I also realized that XRENDERING-290 could also be extended to
>>>>>> support displaying the user's avatar with image:user:evalica. This is
>>>>>> currently done with the {{useravatar}} macro (which is also wrongly
>>>> located
>>>>>> in Rendering and should be in platform for the reason explained!!).
>>>>>> 
>>>>>> So I thought I could just have the UserResourceReferenceTypeParser and
>>>>>> UserXHTMLLinkTypeRenderer classes implemented in the Platform User
>>>> module
>>>>>> but that still meant that the XWiki Syntax 2.2 needs to reserve the
>>>> "user"
>>>>>> prefix.
>>>>>> 
>>>>>> Then I realized that any time we will want to add support for a new
>>>> prefix
>>>>>> we would need to introduce a new Syntax version which is a huge PITA
>>>> and a
>>>>>> pity.
>>>>>> 
>>>>>> I thought about several solutions.
>>>>>> 
>>>>>> Solution 1
>>>>>> ========
>>>>>> 
>>>>>> * Consider that each syntax can reserve prefix type namespaces and this
>>>>>> just means that if the user wants to write a link to a document a wiki
>>>>>> named after one of these prefixes then he needs to use the full format:
>>>>>> [[label>>doc:<wikiname>:….]]
>>>>>> * Thus XWiki Syntax 2.2 would just add the "user" prefix to the reserved
>>>>>> list of prefix type namespaces.
>>>>>> 
>>>>>> PRO:
>>>>>> * I have this code ready to be pushed on my computer
>>>>>> * Doesn't change the current XWiki Syntax notation
>>>>>> 
>>>>>> CONS:
>>>>>> * Requires a new syntax whenever a new type parser is added (after a
>>>>>> syntax has been released as final)
>>>>>> * Creates a relationship between the syntax and implementations (the
>>>> User
>>>>>> module will provide an impl. for supporting the reserved "user"
>>>> namespace).
>>>>>> 
>>>>>> Solution 2
>>>>>> ========
>>>>>> 
>>>>>> * Don't implement support for linking to users using resource types and
>>>>>> add a {{userlink}} macro and move both macros in platform.
>>>>>> 
>>>>>> PRO:
>>>>>> * Simple, no need for a new XWiki Syntax
>>>>>> 
>>>>>> CONS:
>>>>>> * Not integrated in the syntax
>>>>>> * Not very logical since as a user you would want to write:
>>>>>> [[label>>user:evalica]]
>>>>>> 
>>>>>> Solution 3
>>>>>> ========
>>>>>> 
>>>>>> Force XWiki Syntax 2.2 to *ALWAYS* use the full form when creating a
>>>> link,
>>>>>> i.e. all links to doc would need to be written: [[label>>doc:reference]]
>>>>>> 
>>>>>> PRO:
>>>>>> * Solves all future needs for new reference types and makes the syntax
>>>>>> extensible for this.
>>>>>> 
>>>>>> CONS:
>>>>>> * Harder to write links to documents and users will need to get used to
>>>> it
>>>>>> 
>>>>>> Solution 4
>>>>>> ========
>>>>>> 
>>>>>> Invent a new syntax when you wish to write links using a type prefix and
>>>>>> keep the current link syntax for references to documents:
>>>>>> * Ref to a doc: [[label>>docref]] (e.g. [[label>>xwiki:Main.WebHome]])
>>>>>> * Ref to anything but using the type prefix:
>>>> [[label>>>prefix:reference]]
>>>>>> (e.g. [[label>>>doc:doc:Main.WebHome]]: link to a wiki named "doc")
>>>>>> 
>>>>>> PRO:
>>>>>> * Still easy to make refs to documents
>>>>>> * Makes the syntax extensible by allowing new types to be added
>>>>>> 
>>>>>> CONS:
>>>>>> * Changes the syntaxes since it means introducing a new link notation
>>>>>> [[label>>>ref]]. Also means that references to docs cannot start with
>>>> ">"
>>>>>> anymore (but that's not a real issue IMO)
>>>>>> * A bit more complex to implement obviously since it needs a change to
>>>> the
>>>>>> javacc parser
>>>>>> 
>>>>>> Conclusion
>>>>>> ==========
>>>>>> 
>>>>>> My POV:
>>>>>> * The more correct solution is solution 3 but it makes harder to write
>>>>>> links to documents so I believe that's going to be a problem since it's
>>>> the
>>>>>> main use case.
>>>>>> * Solution 1 is already implemented on my computer and I just need to
>>>> make
>>>>>> a push to have it so the simplest for me. I think it could be acceptable
>>>>>> since we don't introduce new type parsers all the time. But it's not
>>>>>> perfect obviously.
>>>>>> * Solution 4 is the most tempting for me even though it's more work.
>>>> I've
>>>>>> suggested ">>>" but we could imagine a different notation. Other ideas
>>>>>> include using [[label>>doc:doc:Main.WebHome||typed="true"]] (ie setting
>>>> a
>>>>>> "type" param to mention that it's referring to a typed reference). It
>>>> has
>>>>>> the advantage of not requiring changes to the javacc parser but it has
>>>> more
>>>>>> chars to type for the user and is thus more complex for the user.
>>>>>> 
>>>>>> Do you have an opinion? WDYT? Should I push what I have for now and make
>>>>>> changes later?
>>>>>> 
>>>>>> Thanks
>>>>>> -Vincent
_______________________________________________
devs mailing list
[email protected]
http://lists.xwiki.org/mailman/listinfo/devs

Reply via email to