On 2/12/07, Vincent Massol <vincent@massol.net> wrote:
Hi,

Some user (Jerome Lacoste) has commented to me that XWiki URLs are a
bit too complex and should be simplified and cleaned as much as
possible. I agree with him.

I also agree, and there's a task for this somewhere in my queue.

Take for example: http://www.xwiki.org/xwiki/bin/view/Main/WebHome

Wouldn't it be nice is this was simplified to http://www.xwiki.org/
Main/WebHome?

Yes, but it's going to be tough.

This would mean view is the action by default.

I guess we could have: http://www.xwiki.org/Main/WebHome?action="view|
edit|..." with view being the default.

I (and also some search engines) don't like this. It reminds me of those websites consisting of one page only and a few params, like www.mysite.com?page=78 . Anyway, for other actions except view, we can decide on whatever method to specify the action.

The /xwiki/ part will be able to be removed once we fix the jira
issue about removing the hardcoding about it.

I think the hardcoded urls have been fixed, but I wouldn't recommend having the default package configured as the ROOT webapp. Instead, we should document how to make xwiki respond to the URL without /xwiki/, either by deploying the application as the ROOT webapp, or by using apache+mod_jk+URL rewriting. This is because xwiki might live in a crowded environment, where the ROOT application already exists.

That leaves the /bin/ path. I'm not sure why it's there and what it's
doing. I can see some hardcoded /testbin/ in the code but I thin this
is probably some leftover that we should remove (or do differently).

The /bin/ part is needed for sending requests to struts, and the /view part is needed for sending requests to the ViewAction. XWiki works fine without /view/, what needs to be changed is the URLFactory that generates URLs. Removing /bin/ is a bit trickier, since the container must know which requests to pass to struts and which requests to serve as plain documents (what's the difference between /Skins/MySkin and /skins/default/style.css ?). But for removing the /bin/ part, we can do this:
- send requests for / to struts
- remap existing directories to a simple directory listing / file retrieval servlet. The default one should do fine, but I don't know (didn't find) a way to specify a starting directory, since if we map it to /skin/, it will serve files not from the skin directory, but from the root directory. And if we don't want to explicitly map each directory, we could have only one action ( /files/ for example) which calls this servlet, and all the problems are solved. We just need to modify the same URLFactory.

So what's the reason for /bin/?

Thanks
-Vincent

So, to summarize:
- /xwiki/ should be there in the default package, but we need to document how it can be removed if needed/wanted.
- /bin/ can be removed
- /view/ can be removed
- /edit/inline/viewrev/download ... can be replaced with something else, but I think they should stay there
- /files/ should be added for serving files on the local file system
- The code generating URLs should be modified. Anyway, with the architectural change, a complete recheck/rewrite of the various URL modules should be performed.

Sergiu

--
http://purl.org/net/sergiu