On Feb 23, 2010, at 6:38 PM, Thomas Mortagne wrote:
On Tue, Feb 23, 2010 at 16:54, Vincent Massol
<vincent(a)massol.net> wrote:
On Feb 23, 2010, at 2:49 PM, Thomas Mortagne wrote:
On Tue, Feb 23, 2010 at 14:08, Vincent Massol
<vincent(a)massol.net> wrote:
On Nov 25, 2009, at 11:25 AM, Thomas Mortagne wrote:
> On Wed, Nov 25, 2009 at 10:26, Vincent Massol <vincent(a)massol.net> wrote:
>>
>> On Nov 25, 2009, at 10:15 AM, Jerome Velociter wrote:
>>
>>> On 11/25/09 10:11 AM, Jerome Velociter wrote:
>>>> On 11/24/09 7:07 PM, Sergiu Dumitriu wrote:
>>>>> On 11/23/2009 10:43 AM, Vincent Massol wrote:
>>>>>>
>>>>>> On Nov 23, 2009, at 10:40 AM, Thomas Mortagne wrote:
>>>>>>
>>>>>>> I just found that we have a "ajax" URL parameter
already. It's
>>>>>>> put in
>>>>>>> the context in XWikiAction so we could check for it in
statistics.
>>>>>>>
>>>>>>> WDYT about reusing it ?
>>>>>>
>>>>>> What is this URL param doing? The name doesn't sound very
>>>>>> explicit to
>>>>>> tell not to log stats...
>>>>>
>>>>> Currently it prevents in some cases returning the full response. For
>>>>> example, the /cancel/ action normally redirects to view, which in
>>>>> turn
>>>>> renders the entire page. An AJAX request just wants to trigger the
>>>>> cancel action, and doesn't care for the response at all. Not
going
>>>>> through the rendering engine is a good performance boost.
>>>>>
>>>>> It's not used for every request done through AJAX, since it must
be
>>>>> added manually.
>>>>
>>>> In the long run, I don't like too much this solution, since it
forces
>>>> developers to be aware of that and to add the ajax=1 to all their
>>>> AJAX
>>>> requests. Using a different action for service like /service/
>>>>
>>>> Jerome
>>>>
>>>> sounds more natural, and easier to learn.
>>>
>>> Read:
>>>
>>> "Using a different action for service like /service/sounds more
>>> natural,
>>> and easier to learn.
>>
>> "service" doesn't mean much IMO but +1 for a different action on
the
>> longer run. Note that WCAG complains about URL with query string (for
>> readability reason) so this solves this problem too.
>
> Adding an action is not that difficult if everyone is agree to go the
> action way now...
Answering again since we need to move on. My current feeling:
* Using a new action or passing a parameter to identify a query that shouldn't be
logged (through a URL parameter) sounds the same kind of complexity to me.
* That said I'm +0 for a new view action (I hope there are no other actions required
though)
* I keep maintaining that the need to not log something should be independent of the
action called and thus even if we had a new action we can also add a URL parameter to
prevent stats logging. "logstats=0|1" sounds good to me. We could easily make
the new view action set the parameter.
For this one the question is: do we want to allow a user to do
whatever he wants and be invisible from statistics point of view. I
still don't think so. Whatever we think about that it's not a minor
change.
The same can be said of the action.... Instead of using view you'd use viewinternal
or whatever the name and not get the stats logged....
No it's not the same, it only apply to view where your proposal apply
to anything.
And it's not one action that needs to be added but as many as there are existing
actions in order to be complete since we could not want to have stats logged for the edit
action too, save action, preview action, etc.
As i said we don't have any use case for something else that internal
view queries. I really don't see why we would want to hide a
modification from client side.
I can easily imagine not wanting to log in the stats, for example, an object modification
done by the scheduler plugin (or the watchlist, or lucene plugin, or...) to some page.
It's not just client side, it's about any kind of use case that wouldn't want
to log something. A doc change will trigger the stats plugin for edit for ex but if we
have the logstats=false in the context then the stats code can check whether it should log
anything or not.
Yes, I know that in this example you could filter by user to exclude the
"superadmin" user from logging anything but you might not want to exclude that
user all the time, only for specific actions, like scheduler actions.
Re client side, the same applies since the goal of XMLRPC/SOAP/REST is to write client
applications that interact with xwiki and you may have the same use case as above but
executed from a remote app. Imagine for ex a spam prevention app that would remove spam
comments using the REST API.
BTW, just to be sure, I did agree about having the special view action for now. I just
don't think it's generic enough for the longer term.
Thanks
-Vincent
> Thanks
> -Vincent
>
>>> * Re the question on how the stats code will get access to that parameter,
yes, it could be put in the context (it could be retrieved from the request URL but
it' not a good idea to become dependent on the environment).
>>
>> That's one of the main difference between action solution and
>> parameter solution: you don't have anything do here with action
>> solution because statistics module simply don't know about this action
>> and don't listen to it so it's not the same kind of complexity. With
>> parameter solution you need to introduce two new API (the parameter
>> and the context value) that should be taken into account everywhere
>> where action is just a kind of plugin.
>>
>>> * I'd be +0 to reuse the ajax param too although in the longer run
I'd prefer to introduce a "logstats" param since not wanting to log some
stats shouldn't be related to ajax specifically. It's a more general use case.
>>
>> The only good point about this one is that we don't introduce anything
>> new publicly but apart from this i don't like it very much. It does
>> not cover properly our use case, we don't want to avoid statistics for
>> an ajax query that would delete an object for example, that's a valid
>> user action (done using ajax but still a user action).
>>
>>>
>>> WDYT?
>>
>> So to summarize IMO the action solution is the safest and easiest
>> solution for the use cases we currently have which are internal
>> queries (mostly ajax).
>>
>>>
>>> Thanks
>>> -Vincent
>>>
>>>>> Thanks
>>>>> -Vincent
>>>>>
>>>>>> Jerome"
>>>>>>
>>>>>>>>
>>>>>>>>> I think I'd prefer a more explicit param.
>>>>>>>>>
>>>>>>>>> Thanks
>>>>>>>>> -Vincent
>>>>>>>>>
>>>>>>>>>> On Thu, Nov 19, 2009 at 12:04, Thomas Mortagne
>>>>>>>>>> <thomas.mortagne(a)xwiki.com> wrote:
>>>>>>>>>>> On Thu, Nov 19, 2009 at 11:36, Vincent
Massol<vincent(a)massol.net>
>>>>>>>>>>> wrote:
>>>>>>>>>>>>
>>>>>>>>>>>> On Nov 19, 2009, at 11:26 AM, Thomas
Mortagne wrote:
>>>>>>>>>>>>
>>>>>>>>>>>>> On Thu, Nov 19, 2009 at 08:50,
Vincent Massol<vincent(a)massol.net
>>>>>>>>>>>>>>
>>>>>>>>>>>>> wrote:
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> On Nov 18, 2009, at 5:16 PM,
Thomas Mortagne wrote:
>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> Hi,
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> Since we introduce document
footer informations view
>>>>>>>>>>>>>>> statistics
>>>>>>>>>>>>>>> are
>>>>>>>>>>>>>>> store several time for the
same user view of a page.
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> See
http://jira.xwiki.org/jira/browse/XWIKI-4590
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> The issue is that theses tabs
are loaded asynchronously in
>>>>>>>>>>>>>>> ajax
>>>>>>>>>>>>>>> and
>>>>>>>>>>>>>>> make a call using view
action.
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> Here are some solutions:
>>>>>>>>>>>>>>> 1/ introduce a new action
"viewinternal", "service" or
>>>>>>>>>>>>>>> anything
>>>>>>>>>>>>>>> else
>>>>>>>>>>>>>>> that would be a
"view" action without UI and not taken into
>>>>>>>>>>>>>>> account by
>>>>>>>>>>>>>>> statistics (that register for
"view" action events)
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> +0
>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> 2/ pretty much the same thing
that 1/ but based on a URL
>>>>>>>>>>>>>>> parameter
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> +1
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> This is much better to me since:
>>>>>>>>>>>>>> * Stats are a transersval
concern, not related to the view
>>>>>>>>>>>>>> action
>>>>>>>>>>>>>> especially. I'm pretty sure
we can imagine use cases where we
>>>>>>>>>>>>>> don't
>>>>>>>>>>>>>> want to register stats for
actions other than view
>>>>>>>>>>>>>> * The way I'd like to
implement the actions later on (xwiki-
>>>>>>>>>>>>>> actions
>>>>>>>>>>>>>> module) is to have action
pipelines and this "saving stats"
>>>>>>>>>>>>>> action
>>>>>>>>>>>>>> will be implemented as a
post-action that would be injected
>>>>>>>>>>>>>> after the
>>>>>>>>>>>>>> main actions. Thus only this post
action will need to check
>>>>>>>>>>>>>> the
>>>>>>>>>>>>>> parameter which will be
transparent to the other actions, thus
>>>>>>>>>>>>>> providing a good separation of
concern.
>>>>>>>>>>>>>
>>>>>>>>>>>>> So you want statistics module to go
look at URL parameters ?
>>>>>>>>>>>>
>>>>>>>>>>>> I said the opposite actually: it's
the action that should do
>>>>>>>>>>>> this.
>>>>>>>>>>>> Right now (current code) we could just
have the view action
>>>>>>>>>>>> check
>>>>>>>>>>>> for
>>>>>>>>>>>> the param.
>>>>>>>>>>>
>>>>>>>>>>> And do what, put something in the context ?
The statistics module
>>>>>>>>>>> will
>>>>>>>>>>> still receive a "view" action
event. It has to check something.
>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>>> How would
>>>>>>>>>>>>> you name this parameter ?
>>>>>>>>>>>>
>>>>>>>>>>>> Some proposals:
>>>>>>>>>>>> - "stats=true|false" (or 0|1 to
follow the current "tradition")
>>>>>>>>>>>> - "logstats"
>>>>>>>>>>>>
>>>>>>>>>>>>> Also i really don't like that
ajax calls use the standard view
>>>>>>>>>>>>> action
>>>>>>>>>>>>
>>>>>>>>>>>> Can you explain? I don't see the
problem.
>>>>>>>>>>>
>>>>>>>>>>> "view" action is supposed to be a
user view of a document, ajax
>>>>>>>>>>> calls
>>>>>>>>>>> are retrieving structured informations from a
service located
>>>>>>>>>>> in a
>>>>>>>>>>> page most of the time so they have to
explicitly tweak the URL to
>>>>>>>>>>> remove the UI, indicate they want plain
renderer... and so get
>>>>>>>>>>> something that has nothing to do with what
"view" action is
>>>>>>>>>>> supposed
>>>>>>>>>>> to be.
>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>> Thanks
>>>>>>>>>>>> -Vincent
>>>>>>>>>>>>
>>>>>>>>>>>>> so the "viewinternal"
action is needed anyway IMO.
>>>>>>>>>>>>>
>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> 3/ use an additional AJAX
request similar to a google
>>>>>>>>>>>>>>> analytics
>>>>>>>>>>>>>>> call
>>>>>>>>>>>>>>> to record statistics
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> -1
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> Thanks
>>>>>>>>>>>>>> -Vincent
>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> As i said in jira I'm
against 3/
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> 2/ seems too big for a URL
parameter to me and it makes
>>>>>>>>>>>>>>> statistics
>>>>>>>>>>>>>>> depends on URL parameters
where 1/ fix the issue without
>>>>>>>>>>>>>>> touching
>>>>>>>>>>>>>>> anything in the statistics
module
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> +1 for 1/
>>>>>>>>>>>>>>> +0 for 2/
>>>>>>>>>>>>>>> -1 for 3/
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> --
>>>>>>>>>>>>>>> Thomas Mortagne