create new tag
, view all tags

Feature Proposal: Add AJAX Contribs to Distribution

and pave the way for improved usability.



-- Contributors: ArthurClemens


We've discussed this shortly on FreetownReleaseMeeting2007x03x12. Concerns that have been raised are:

  • How many TWiki users could really use this features?
  • Does it add any overhead in performance?
  • Danger of less stability, more support questions
  • (If you want to use it for TagMePlugin) why not simply say that AjaxContrib is a prerequisite for tagme?
  • Does it fall back gracefully?
  • I am nervous we get problems with different browsers. I am nervous that we need to load more files to view a simple TWiki page.
  • Say, i want it on XyzPlugin, and only use ajax when %XYZ% is present in a topic

Yes, I still believe in providing Ajax for TWiki smile But these concerns need to be addressed.

-- ArthurClemens - 12 Mar 2007

Yes, concerns need to be addressed. To propell TWiki, I think we can take some risks in the MAIN branch, and fix issues as they come. AJAX is a key technology and fits well into the TWikiMission: Give broad corporate appeal. AJAX helps also on the usability front.

-- PeterThoeny - 13 Mar 2007

Since this was in reality rejected in FreetownReleaseMeeting2007x03x12 the process is now to refine the actual proposal and address the concerns raised - and listed above by Arthur - and then put forward a new proposal. The release meeting was not against Ajax in TWiki as such. Concern was related to just adding a lot of extra Javascript to page loading.

-- KennethLavrsen - 23 Apr 2007

I believe the decision was a bit too fast, without looking at the actual performance impact. Unlike some other proposals, this one is very clear: Add YahooUserInterfaceContrib and TWikiAjaxContrib.

-- PeterThoeny - 24 Apr 2007

This one was rejected in the sense that the proposal just needed to get refined and the few concerns addressed (performance related to extra Javascript loading).

Here is the relevant discussion.

In short Harald felt that we should finish making was has already been added working instead of adding more.

And Kenneth was concerned about having to load more Javascript. On a 512 kb ADSL line like the one my server runs on it takes sometimes 4-8 seconds for the first page load to finish because of so many files that needs to get loaded. And also the browser - especially IE has visible delay from last file loaded till page shown because of Javascript. We cannot just add and add and add. Things needs to be loaded more intelligently. E.g. load the features needed on the page instead of everything and make sure the Javascript runs fast.

But Ajax is the technology that also enables current slow applications to perform faster. Example is to not headlessly load the entire list of topics for selecting parent when you create a new topic. Here loading the extra Javascript needed to do the Ajax feature will be much smaller than the gain of not loading the topic list.

So what I am looking for is details on how to add this Javascript when needed only. And this does not mean by adding it as plugin or similar silly shortcuts that in reality is not a real option because people need the plugins anyway.

This is the transscript.

[23:28] <PeterThoeny> should we quickly talk about http://twiki.org/cgi-bin/view/Codev/AddAjaxContribsToDistribution
[23:28] <PeterThoeny> i think this is a logical step
[23:29] <HaraldJoerg> Sorry, I don't think so
[23:29] <HaraldJoerg> It adds a lot of complexity
[23:29] <PeterThoeny> any consideration on performance and req env?
[23:29] <ArthurClemens> it would facilitate development
[23:29] <HaraldJoerg> Really?
[23:29] <HaraldJoerg> How many TWiki users could really use this features?
[23:29] <ArthurClemens> it doesn't add anything to any topic
[23:30] <ArthurClemens> unless written so
[23:30] <HaraldJoerg> And aren't these exactly those users who are able to add a Contrib if they need itþ
[23:30] <PeterThoeny> i'd love to have ajax capabilities without the need to install extra stuff
[23:30] <ArthurClemens> we are talking about the default interface
[23:30] <PeterThoeny> for example, the tagmeplugin could be done much more user friendly with an ajax interface
[23:31] <HaraldJoerg> PeterThoeny: So why not simply say that AjaxContrib is a prerequisite for tagme?
[23:31] <ArthurClemens> same goes for CommentPlugin
[23:32] <PeterThoeny> i loath landylists of dependencies
[23:32] <PeterThoeny> avoid dll hell
[23:32] <ArthurClemens> and I wouldn't go that far to make Ajax prerequisite of CommentPlugin
[23:32] <PeterThoeny> the reason some extensions are more popular than others is because of that
[23:32] <ArthurClemens> it would be nice if it is out of the box
[23:33] <ArthurClemens> yes, it _is_ important to keep working on a better interface
[23:33] <PeterThoeny> s/landylist/laundry list/
[23:33] <HaraldJoerg> It creates a dependency of TWiki from the Javascript libraries
[23:33] <HaraldJoerg> And we really have more urgent problems on the interface than adding more stuff
[23:33] <PeterThoeny> the important question here is: does it fall back gracefully?
[23:34] <ArthurClemens> I don't
[23:34] <ArthurClemens> I love adding more stuff
[23:34] <ArthurClemens> to make things simple and clean
[23:34] <HaraldJoerg> We haven't finished up much of the stuff that was added in 4.0 properly
[23:34] <HaraldJoerg> which gives rise to lots of support questions
[23:34] <PeterThoeny> i need to sign off in 10 min
[23:34] <Lavr> I am mostly concerned with performance and with stability.
[23:35] <ArthurClemens> Ajax coding standard needs to be graceful fallback
[23:35] <ArthurClemens> what does these have to do with the contribs?
[23:36] <Lavr> I am nervous we get problems with different browsers. I am nervous that we need to load more files to view a simple TWiki page.
[23:38] <ArthurClemens> the idea is that page elements are faster because the page does not have to be reloaded
[23:38] <PeterThoeny> are they included only when needed?
[23:39] <ArthurClemens> they are contribs, so they are included when inserted into the header
[23:39] <Lavr> The minute the features are used in PatternSkin then they get loaded right?
[23:40] <PeterThoeny> say, i want it on XyzPlugin, and only use ajax when %XYZ% is present in a topic
[23:40] <ArthurClemens> then we need to package it as plugin
[23:40] <ArthurClemens> TWikiAjaxPlugin it would be
[23:41] <ArthurClemens> that would be neater
[23:41] <ArthurClemens> to hide the necessary file includes from the plugin / skin writer
[23:43] <PeterThoeny> ok, i need to sign off
[23:43] <Lavr> To me it is not a huge issue what is in the distribution. To me I am more nervous that we overload TWiki with more cool things that slow it down.
[23:43] <PeterThoeny> will keep the log rolling
[23:43] <PeterThoeny> nice talking to all :-)
[23:43] <ArthurClemens> see ya Peter
[23:43] <Lavr> See you Peter
[23:44] <ArthurClemens> Speed is a thing to be tested.

This is in all circumstances for Georgetown. Freetown code quality is the lowest ever. I have never seen so many open bugs. We need to focus on getting 4.2.0 stable now and halt the feature creeping for a while.

-- KennethLavrsen - 26 May 2007

Currently the way to conditionally add javascripts is to have a plugin that calls addToHEAD when a tag is encountered. Yes, one more plugin adds overhead, but it prevents that the javascrip files are loaded unnecessarily. So if we want to provide AJAX this is still the most efficient.

Of course AJAX is the sugar coating on top of existing form steps. So if no javascript is available, the current work flow is still available.

Recent cases where AJAX is proposed recently:

  • WebTopicCreator
  • Jump field
  • More screen: set new parent in large web
  • Edit screen: offer preview on same page

Plugins that could benefit from faster feedback without reloading the page:

What I meant with the plugin remark was that the extra javascript for ajax should not be loaded based on for example having CommentPlugin installed. It should be loaded based on if it is needed in the topic or not so you do not have to load a lot of Javascript that is not used in most pages. Making the Ajax solution using a plugin is quite OK IMHO. Sorry I was not clear enough in my text above. My fault. -- KennethLavrsen - 26 May 2007

-- ArthurClemens - 26 May 2007

I currently use AJAX-like features in a number of my plugins; usually using REST handlers. To date I haven't needed any additional libraries to do that; XmlHttpRequest is trivial enough to use without going through the pain of actually using XML. I'd like to see a real live example of something I can't do without the AJAX libs....

-- CrawfordCurrie - 26 May 2007

Which plugins should be study to learn from your examples CC?

-- KennethLavrsen - 26 May 2007

TWikiAjaxContrib was created to insert any text / TWiki topic, HTML or XML from any TWiki topic, template or plugin. Examples are on the example page with the contrib.

-- ArthurClemens - 26 May 2007

Edit | Attach | Watch | Print version | History: r10 < r9 < r8 < r7 < r6 | Backlinks | Raw View | Raw edit | More topic actions
Topic revision: r10 - 2007-05-26 - ArthurClemens
  • Learn about TWiki  
  • Download TWiki
This site is powered by the TWiki collaboration platform Powered by Perl Hosted by OICcam.com Ideas, requests, problems regarding TWiki? Send feedback. Ask community in the support forum.
Copyright © 1999-2017 by the contributing authors. All material on this collaboration platform is the property of the contributing authors.