Friday, October 3rd, 2008

Thinking about the difference between frameworks

Category: JavaScript, Library

I got to meet Aaron Newton at The Ajax Experience, and he is a thinker. He was really taking in the various talks, and interactions, and you could tell that he was trying to work out various angles on the frameworks. What makes them different? What makes them popular? Where are they going?

He wrote a really nice post on some of these thoughts that goes into detail on different patterns for JavaScript programing. The meme at the show was definitely “the frameworks all do the same thing, just with a different looking API” which makes it even harder to put your finger on differences sometimes. Aaron does a good job.

John Resig himself gave a talk comparing the frameworks. Considering that he is Mr. jQuery, I thought he was very unbiased and had some good thoughts:

Posted by Dion Almaer at 10:20 am

3.6 rating from 77 votes


Comments feed TrackBack URI

I think Jon Resig forgot that when you are only grabbing one element in Mootools you don’t have to do a tag/array collection with $$(‘#blah’), just $(‘blah’) just as in his lib :) That is among the more basic ones! jQuery was on it when getting their UI program together, I know Mootools has one in process (can’t wait!). I think this is cool, it will push people to advance the frameworks more rapidly, long as the competition remains ‘healthy’.

Comment by csuwldcat — October 3, 2008

I knew I should of spent these 20 minutes watching MTV. *sigh*

Comment by ibolmo — October 3, 2008

Comparing base libraries with widget libraries is like comparing apples and oranges, or rather 4-cylinder economy cars with luxury 12-cylinder cars. Widget libraries are much larger and actually have a learning curve.

Comment by Les — October 3, 2008

I couldn’t get to more than the 1st frame before I almost had my coffee in my throat and had to start breathing heavily a couple of times before hitting the comment fields here. I would *seriously* expect from “Mr. Rockstar JS” to have dived deeper into some of the “no-JavaScript framework” like Anthem, Gaia and Ra-Ajax.
Mostly all his points here is a living proof of 100% ignorance and a pure lack of knowledge in a field he is supposed to be “knowledged” within…
I’ll go through the one by one here;
“drop in a calendar widget”…
…sure those kinds of frameworks do exist, and mostly they have a “JavaScript knowledge is an option” thing. Ra-Ajax is NOT like that, Ra-Ajax has TINY controls like for instance RadioButton and CheckBoxes which mostly renders a single input HTML element, period!
Sure Ra-Ajax has a “calendar widget”, but that “calendar widget” is mostly there for REFERENCE purposes for people who wants to create their own extension widgets. And that “Calendar Widget” is entirely composed out of the smaller and tine “core controls” (like button, dropdownlist, textbox, textarea and so on) which mostly renders ONE DOM HTML ELEMENT…!
Second point is mostly accurate though. Congrats. I guess one out of three shouldn’t be that bad…
Third point is completely 180 degrees in the opposite direction of what Ra-Ajax (and many other “no-JavaScript” frameworks does)
How can you “configure” a TextBox to become your “application”…?
It renders as an <input type=”text”… PERIOD!
Then I think Mr. Resig should show me how to do just that. Because I do not know how to “configure” my textboxes to turn themselves into fully fledged Ajax Applications by themselves…
Fourth point though is still the most embarrasing. No *flexibility*…?
Hoooahhh…!! :S:S
(breathing heavily here)
By composing these *TINY* building block controls you can create really advanced stuff which I have still not been able to *EVER* see implemented in jQuery! (even though it is possible, it is just that it’s so difficult nobody is able to do it)
Let’s take the “Calendar control” from Ra-Ajax as an example here,
This widget is ENTIRELY composed out of other strongly typed Ajax Controls without *ONE* single line of Custom JavaScript. WITHOUT gzipping that page scores 84 in ySlow and has less than 20KB of JavaScript! THAT’s the advantage! You can create *REALLY COMPLEX WIDGETS* *WITHOUT TOUCHING JAVASCRIPT*…!
Ohh yeah, did I mention it’s 100% localized by default for every single language in the *ENTIRE FACE OF THE PLANET*…?
OUT OF THE BOX! (try changing the localization string in your browser to see this)
And this widget is less than 200 lines of code, PURELY written in C#, not ONE line of custom JavaScript…!
Still it is mostly meant for REFERENCE purposes and NOT meant to be a “fully fledged Calendar Widget”…
I knew Resig was (obviously) a jQuery guy, but he REALLY need to at LEAST study the “competition” since what he says in the FIRST slide is mostly a living proof of 100% ignorance and absolutely no knowledge at all about the alternatives out there. Which is quite surprising since he is “Mr. Rockstar Ajax” in this community…
If he continues to say things like that it might be VERY embarrassing for him sometime into the future…
-10 points in a scale of;
return [0,1,2,3,4,5,6,7,8,9];

Comment by ThomasHansen — October 3, 2008


The slide didn’t even mention ra-ajax. It said it wasn’t going to talk about ajax as it’s .net developers only, but nothing about ra-ajax. Why are you panties all in a twist?

Comment by Fyzbo — October 3, 2008


“Competition” with JavaScript libraries. You are clearly out of touch. There is no competition between the libraries. It’s the libraries versus the browsers. A developer’s preference for how he/she handles the browsers doesn’t create competition amongst the libraries; it creates innovation.

Comment by JoeMcCann — October 3, 2008

I dont know where John Resig got this information from, but MooTools never forked Prototype. Highly inspired at first, but it was never a fork.

Please John, check your sources before making a statement like that.

Comment by kamicane — October 3, 2008

I would suggest you continue to use even more punctuation in your comments. And you articulate your emotional state-of-mind really well — very visceral. I can almost picture you hunkered over your keyboard “breathing heavily.” Well done.

Now — what are you on about?

Comment by scottymac — October 3, 2008

Forked from Prototype are you kidding? Wow I completely overlooked that statement. That is a simple 2 min fact check to disprove. They share the idea that modifying natives is not inharently evil (and frankly I like results). I believe in that garbage as much as the person that says “If your site doesn’t validate it is flawed”…oh please, that is the biggest pot of shit out there.


I we are employing ASP.Net 3.5, Solr, and Mootools for our new application and I can firmly say that MS.Net ajax/ATLAS/whatever the hell MS is calling it nowadays is the most awkward garbage I have ever seen in motion and I actually use and LIKE .Net as a framework…nuff said.

Comment by csuwldcat — October 3, 2008

@kamicane: I should clarify the slide – in my talk I said that it was a spiritual fork of Prototype – taking concepts like classical inheritance, native prototype extension, etc. and adding in a more holistic view of web development (better selectors, animations, drag and drop, etc.). I never said that it was a code fork. Of course it isn’t a code fork, everyone knows this. I’m uploading a new version of the slides now with the word ‘spiritual’ added.

Comment by JohnResig — October 3, 2008

While I appreciate SmartClient being mentioned, it’s in the wrong box on the “What frameworks exist” slide. We have the Open Source SmartClient LGPL, which people use with lots of different server platforms, and then we have a commercial client-server offering for Java. So we should be in the lower-left box (the open source SmartClient LGPL) and the upper right box (the client & server Enterprise Edition).

Also, it’s really quite bombastic to say that a widgets-based approach offers “no flexibility”. We’ve seen lots of custom components built on top of SmartClient – just an example at random, a complete drag and drop calendar interface based on SmartClient’s grids, tabs, windows etc. This was built by someone who had no experience with cross-browser quirks – they didn’t have to, because SmartClient offers a higher-level, quirks free interface.

Without question, the same person could not have succeeded with any of the DOM-oriented libraries discussed in this talk (at least not without a few more years of time!). And that is a meaningful difference between frameworks! JQuery and friends are extremely high quality libraries appropriate for augmenting web sites with dynamic functionality. But when it comes time to implement full-screen, data-intensive applications, you want a broad, rich, deeply customizable set of pre-built widgets. We have a lot of customers who made this progression, adopting SmartClient on top of JQuery as their needs progressed from web site augmentation to full-blown RIA interfaces.

Comment by ckendrick — October 3, 2008

I think this was one of the best presentations on javascript frameworks to date. Thank you John.

Comment by matanlurey — October 3, 2008

Hey guys just ignore ThomasHansen, he is a flamer.
He just wants to plug his framework ra-ajax.

I wish someone would moderate this stuff.

Comment by Tr0y — October 3, 2008

Has anyone actually taken the time to look at Ra Ajax. Personally I enjoy the way it spews inline JavaScript into the page. LOL

Just the kind of thing that gives .Net developers a bad name

Comment by jamiethompson — October 3, 2008

I noticed that Ext was missing from the library comparison. No big deal-I mean, you can’t cover every great library out there. But there was a post from one of the attendees of John’s presentation that said essentially John had a strong dislike for Ext because it was “too closed”. This puzzled me more than a little, since one of Ext’s dual licenses is the GPL. John-is this really the case? We’re about to get heavily into Ext so if you have any insights as to why this might not be a good idea I’d be interested in hearing it.

Comment by coryn1 — October 3, 2008

John is one of several open source luminaries who have spoken out forcefully against Ext’s licensing practices.

Comment by ckendrick — October 3, 2008

Does SmartClient still look like a 1990s Borland IDE out of the box?

John Resig told me at the 2008 SXSW “Secrets of Javascript Libraries” that Jack Slocum (ExtJS) would not be a good addition to the panel (that included jQuery, Prototype, Dojo, etc) because Jack does not provide SVN access without purchasing a license. John has fired off several posts around the web detailing his dislike of Ext; some rants are open-source related, others are related to defecting personnel.

I like John, and his contribution is enormous; however, this repetitive exclusion of certain reputable libraries in the same space is silly. I’d attribute it to age, but I see Brendan Eich (Mozilla) behave the same way every time he’s seated next to Chris Wilson (MSIE) at a browser panel.

I am now writing reams of jQuery for fun and I love how my code is both compressed and obfuscated as I write it. I keed, I keed.

I must say that after reading the linked really nice post I was left wanting a better inheritance model in jQuery.

Comment by rextasy — October 3, 2008

Just for the records, Ra-Ajax has nothing to do with ASP.NET AJAX. Ra-Ajax doesn’t share ONE line of code or use ONE line of code from ASP.NET AJAX. It is as different form ASP.NET AJAX as Adobe Flex is from Prototype…
John was generalizing in his presentation saying, and I repeat; “Plug and Play, Drop in Calendar Widget, No JavaScript knowledge required, Customize some options and go, No flexibility” (first slide)
That SERIOUSLY pisses me off, first of all since it’s the most extreme case of generalizing I’ve ever read from a guy who SHOULD know better.
By doing this he is generalizing all “no-JavaScript-knowledge-required” based frameworks (Anthem.NET, GWT, Ra-Ajax, ExtGWT and so on) making people believe that these frameworks have “no flexibility” and is based upon “configuration instead of development”.
Those kinds of frameworks DO exist – the ones Resig talks about, for instance Telerik, Infragistics, ComponentOne etc. But they are not the “norm”. These vendors also mostly call themselves COMPONENT VENDORS and mostly build their stuff on top of other Ajax Frameworks Yes they are not even FRAMEWORKS! They are components!
One might have opinions about this and that, this is up the the individual, but to come with statements which generalizes to such an extreme amount as John does in his presentation shows only that frankly when it comes to server-side binded Ajax Frameworks (like GWT, ExtGWT, Anthem.NET etc) he doesn’t have a clue WHAT-SO-EVER on neither the diversity of frameworks that exists! Nor the basic implementation of most of them…
I really shouldn’t do this, but I can’t help it…
Everything is HTML, no “placeholder spans” there like most of the JavaScript Widget libraries. Everything you “see” is also in the source (HTML)
All the “library” JavaScript is in JS files (which are automatically appended at the bottom of the page to speed up load/rendering times)
Everything validates 100% in regards to XHTML (click the w3c link on ANY page)
Everything is indexable by search engines.
There are no “special attributes” on DOM elements which breaks the standards.
List goes on into infinity…
Many JS widgets libraries (including a huge deal of the “most popular” ones) are rendering “empty spans” and building the widgets entirely through JavaScript. Meaning “nothing there to see” for Search Engines.
Many of the more popular JS widgets libraries, to such an extend that even Open AJAX alliance have a “reserve list” on this are rendering “special attributes” on DOM elements. Yet again breaks XHTML and standards.
Many of the “most popular JS frameworks” have orders of magnitudes more JS for the client to download than Ra-Ajax. Still most of them have a fraction of the number of “widgets”…
In fact the only way you can in .Net and Mono render JS registration scripts without forcing users into a lot of really ackward configuration is by rendering the “registration scripts” inline. Now if this reduces the level of “non-intrusive” JS from 100% to 98% I frankly couldn’t care less. The way many people are using JS frameworks will often anyway end up in FAR more intrusive JS usage than what’s even possible to do with Ra-Ajax.
There is anyway NO logic in the scripts what-so-ever, they are only there to render “registration scripts” for the Ajax Controls on the page…
I am really sorry if people saw this as a “plug for my framework”, that was NOT my intention, in fact I also mentioned a lot of OTHER “server-side” Ajax Frameworks, also in my first posting though, so I cannot see how people are seeing this as a plug for Ra-Ajax which is LGPL btw and I earn ZERO money on. However it WAS a plug for server-side Ajax Frameworks in general. This includes also GWT, ExtGWT, Anthem.NET and a lot of other Frameworks which I have listed in both of my postings. And it wasn’t really meant as a plug either. It was meant to correct the serious misconceptions apparently John have in general about server-side Ajax Framework! The stuff in that slide-show about server-side frameworks is JUST NOT TRUE! And I couldn’t let it stand as it did since that would lead people to believe that it was true…
John should really investigate what’s out there since 5 years from now it is highly likely that JS is “the new assembly” and everyone is doing Ajax through some abstraction which doesn’t leak JS knowledge at all upwards in the stack. E.g. GWT…!
As in Google Web Toolkit!
Ajax is today at the state where programming was in the early seventies when your grandpa had to cut holes in paper to feed his algos into the university computer. I am betting every single piece of my credibility on that it will NOT stay there for long…
Most of the server-side binded Ajax Frameworks (e.g. GWT) have a productivity boost of orders of magnitudes compared to JS frameworks. And to generalize them as badly as John did is like saying “C stinks” in the early seventies…
Or C++ is “too slow” in 1985, or Java is “too slow” in 1998 or JavaScript is too slow in 2007…
JavaScript rules!
Just not for “application developers”…
JavaScript will very soon be the same as Assembly, C++ and C is for developers today. Great for writing runtimes on top of like Operational Systems and JS compilers, but nothing to create apps on top of unless you want to spend 15xTime2Market as is needed…
JavaScript == Assembly Programming, and the sooner this is realized the less time will be spent walking into the dead ends of tomorrow…
And I LOVE JavaScript…

Comment by ThomasHansen — October 3, 2008

@ckendrick, coryn1, rextasy: I just want to clear up what I said with regards to Ext. The most important point is that I cover the libraries that I know best. As it happens those libraries are also some of the most popular JavaScript libraries today. Going beyond the cloistered atmosphere you see here on Ajaxian the 5 libraries that I chose are the most extensively used in publicly-accessible web sites.

I feel that it’s important that anyone viewing the presentation should be able to go and use the libraries without reservation or qualification. Currently Ext does not offer that (closed source repository being one issue – licensing being another). I spoke to Jack Slocum at the Ajax Experience and he stated that portions of Ext would be made available under an MIT license – which is a good start. I’ll reevaluate the library at that time. Right now the library being under the GPL is, technically, Open Source but it undoubtedly adds undue restrictions to most corporations who wish to use it. Whereas the MIT/BSD licensing has been repeatedly shown to be a non-issue when it comes to adoption.


“this repetitive exclusion of certain reputable libraries in the same space is silly”

How many libraries should I cover in 90 minutes? How many libraries can I cover? I added Mootools this time around and I already ran out of time on some of the content that I wanted to cover. At some point there has to be a line drawn between libraries that will be covered and libraries that won’t. Including the most popular, generic, libraries that anyone should have no “reservation or qualification” in using seems like as good to place to start as any.

“John Resig told me … that Jack Slocum (ExtJS) would not be a good addition to the panel”

I don’t recall saying any such thing. In fact, I included Jack Slocum in my original SWSW panel proposal.

Comment by JohnResig — October 3, 2008

No, SmartClient no longer looks like a 1990s era Borland IDE out of the box (ouch!). Sanjiv’s blog about SmartGWT is the quickest way to see all three new skins (one out now, two more in 7.0, more planned):

These are getting rave reviews.

By the way, you should really read what Resig and others have said about Ext, because you have just profoundly misrepresented Resig’s reasons for omitting Ext from slides, panels, etc. This is not about quibbles over SVN access, but instead about the LGPL -> GPL bait and switch.

Comment by ckendrick — October 3, 2008

@JohnResig oh hi, our posts crossed. My intent was only to direct people to your exact, published words, hope that I did not offend.
As long as you are updating those slides, would you mind putting SmartClient in the right box(es)? We took a big gamble going open source and it’s painful to be labeled “commercial” inaccurately.
One extremely key thing to note:
broadly publicly used != suitable for enterprise usage
The requirements for using a library in enterprise business applications are very, very different from those for using a library to provide silos of interactivity within an otherwise content-oriented website. For example, the insurance companies that have claims processors running SmartClient applications from morning to close of business, without ever reloading the page, could care less if SmartClient were 10x as large as it is today. Yet the finely tuned size of JQuery is a key factor in deciding that it is appropriate for a public website that just needs some forms and animations.
It’s a big world out there and we have a long list of blue chip customers where JQuery, Prototype et al do not solve their problems but SmartClient does, as I’m sure you can say likewise about SmartClient in the areas where you focus.
I didn’t hear your actual talk, I’m just seeing your slides, but I think it’s very important that when giving advice, we all are very clear about our experiences and the usage we’re coming from.

Comment by ckendrick — October 4, 2008

Comment by ThomasHansen — October 4, 2008

Referring to JavaSript as Low Level is just plain ignorant. Its multi-paradigm, interpreted, concise and flexible. Putting it in the same category as C/C++ or assembly is insulting to all the above said communities.
Also your definition and usage of unmanaged vs managed contradicts itself.
“Think of it like Java/Ruby/C# versus Assembly, C and C++. In Assembly, C and C++ you need to take care of your own memory and you need to do a lot of low fiddling, while in Java, Ruby and C# you get a garbage collector which takes care of the heap for you and you don’t have to fiddle with the “small bytes”. This concept makes Java, Ruby and C# ‘Managed Programming Languages’.”
“Often you can create a more responsive and faster application using ‘un-managed’ Ajax Frameworks like MooTools, Prototype.js, jQuery or Dojo, but you will spend longer time, and the “can” part is crucial since due to the complexity in rolling your own JavaScript adds up and ‘leaks’, you will often end up with less responsiveness and less flexibility.”
.End Quote
Speaking of less responsiveness, why is that every time I put focus in the text control examples you’ve given, they initiate a post back to the server? (Rhetorical question of course)

Comment by TNO — October 4, 2008

I am not the first one to compare JS with Assembly programming, in fact one of the journalists here at did it more than 2 years ago…
“Speaking of less responsiveness, why is that every time I put focus in the text control examples you’ve given, they initiate a post back to the server?”
Because that sample does have an event handler for the Focus event of course. And from that event handler we’re doing some stuff (for that sample just selecting all text in the textbox)
Many Managed Ajax frameworks are doing a lot more callbacks than JavaScript frameworks, and this is a part of their nature and what makes them different and also easier to use. Also it is what often makes them “less speedy” than JavaScript frameworks. Just like the GC makes a Managed Programming language “slower” than an un-managed programming language like for instance C++ where you take care of your own heap etc. Though when it comes to implementation few are able to outperform the GC of Java or C# by coding in C++, just the same way as few people are able to outperform the “managed parts” of GWT, Anthem or Ra-Ajax by using JS directly.
This is of course because many don’t have the required knowledge to do this *CORRECTLY* in JavaScript, or they end up with such huge amounts of JS that the page takes the whole afternoon loading etc…
This is the equivalent of loosing heap memory or have dangling pointers etc in C++ and C…
Let me ask you a question now;
Now how many milliseconds did you have to wait for that response which the TextBox triggered when you gave it focus to complete?
Rhetorical question of course… ;)
Have a nice day :)

Comment by ThomasHansen — October 4, 2008

Why do you keep comparing memory management to Ajax development? They have nothing to do with each other, not even as a vague correlation. In .NET you still have to worry about memory especially in regards to string concatenation since the operator is an “umanaged” call (hence having to use a String Builder), plus you still have to call the .dispose() method on a number of unmanaged resources (and a large number of classes inherit the dispose method which may or may not even apply)
If anything, it proves the point why a large number of front end developers use a mainstream JavaScript library. The code is smaller and they still don’t have to worry about the majority of browser quirks. Placing the all of application logic on the server makes little sense when after just a couple postbacks you just dwarfed the size of the very libraries you mentioned and god forbid you pay for bandwidth
“Now how many milliseconds did you have to wait for that response”
A better example would be this page:
This gives me a 200ms delay on average between updates
“Many Managed Ajax frameworks are doing a lot more callbacks than JavaScript frameworks, and this is a part of their nature and what makes them different and also easier to use.”
How does that make them easier to use? For whom?

Comment by TNO — October 4, 2008

“A better example would be this page:
This page gives me 22, 25, 25, 27, 26, 27, 25, 23, 26, 27
milliseconds on the hover
And on the click;23, 24, 26, 27
Using FireBug on FF3.x (latest)
Though the server is in Norway and I am quite close to it, so I don’t doubt that your numbers are accurate since there will probably be quite a bit of hops between your place and my servers in Norway…
About StringBuilder and String. Those are two different classes in .Net, Java I don’t know much about in regards to those two classes except that Java also have them both. None of those classes are “un-managed” in .Net though and both of those classes are 100% managed types. String is even immutable…
The reason why I am making the comparison of Managed Programming languages and Managed Ajax is because most of the same arguments which are in favor of one of the concepts in regards to programming languages are also in favor of the same concept in regards to Ajax. And vice versa…
So I think it’s a brilliant way of perceive what “Managed Ajax Frameworks” are in fact actually doing and a great “name tag” to label Managed Ajax libraries with since it very accurately gives the reader an understanding of “what this stuff is about”. Just like the name Ajax in its time gave us an understanding of using JavaScript and DOM manipulation for creating “apps”…
In regards to Dispose, except for file management where I use it all the time (though through the “using pattern” in C#) I have only needed to resort to it ONCE which is on the Image class where you explicitly need to free up resources since otherwise you’ll “leak”. Dispose is very rarely used in .Net, especially explicitly.
Though the Dispose pattern is a perfect example of “leaking abstractions” and that 100% abstracting away everything in Managed Programming languages is impossible, just like abstracting away all JavaScript in Managed Ajax Frameworks is impossible. That doesn’t mean we should resort to neither un-managed programming languages nor un-managed Ajax Frameworks by “default” but rather when it’s absolutely *crucial* and the gains are just too big to ignore. Most of the time though they are NOT…
“How does that make them easier to use? For whom?”
I realize a lot of the regular crowd here at Ajaxian are JS gurus, though if I show this;
var x = function() { var x [1, 2, 3].push(54 + ‘px’); return x; };
var y = x();
to most of the developers in this world. I know for a fact that they are going to completely choke and don’t understand jack shit about what’s happening…
Lambda, is that a type of sheep…?
Dynamic typing system, isn’t that dangerous…?
These people however can be productive creating Ajax apps just like most of us don’t know ASMx86 CISC but are still relatively productive.
“Ajax is too darn important to be left to the JavaScript gurus”…
And Managed Ajax Frameworks gives the “other” ones a way and a solution…

Comment by ThomasHansen — October 4, 2008

Build a string in a large loop and compare that to the StringBuilder and you’ll see what I mean . (Referring to VB, not C#, so its probably a moot point anyway plus I wont dump alot of IL on the page that you can’t just google)
If you don’t use dispose/close often, its safe to say you don’t do much database manipulation. The using blocks are usually pointless in that regard since you would want to use a Try..Catch block anyway and wrapping the nested using blocks makes debugging harder and more verbose, so you’re still managing your own memory. At least in VBS you don’t have to explicitly remove references if they are contained within a scope. But we’re getting too far off-topic and the definition of “Managed” is lost somewhere I think, so no point going on about that part, at least not here.
“Lambda, is that a type of sheep…?”
VB 9.0/C# 3.0 has Lambda’s.
“Dynamic typing system, isn’t that dangerous…?”
Don’t overlook Anonymous Types:
Dim tropical = From city In Capitals _
Where TropicOfCancer = TropicOfCapricorn _
Select New With {city.Name, city.Country}
I understand how useful Ra can be to entrenched .NET users who are afraid of the browser and still want to be part of the Ajax Hype, but you can’t insult the technical aspects of the mainstream libraries when an library does even worse in polluting the browser. JavaScript isn’t going away anytime soon and I expect larger support for multiple languages before JS turning into “assembly”. For example IE has VBS and FireFox is working to include Python. I think the main argument is over whether the Browser is the new Development Platform, or whether the Server remains as one (which uses the browser as a simple display of the results).

Comment by TNO — October 4, 2008

If anyone wants a summary of the comments above: YOU’RE ALL WRONG AND I’M RIGHT!!1eleven

Comment by eyelidlessness — October 4, 2008

Great response, and mostly accurate, though regarding the StringBuilder – even in C++ you wouldn’t use std::string but rather std::vector for “large string manipulations”. StringBuilder is still also a managed class. And most string classes on the planet, including also the “un-managed” versions are NOT optimized for large string manipulations. std::vector is orders of magnitudes faster than std::string for “huge string concatenation”. So this is not dependent upon the “managed versus un-managed” debate…
In fact when I did SmartWin++ (the AddressBook sample) I tested std::string versus std::vector and found it to be a “gazillion” times faster for loading “huge files” than std::string…
This is due to the fact that most String classes (in-dependant upon “Managed versus Un-Managed”) are growing linearly while std::vector (and StringBuilder) is growing exponentially…
This makes the memory-move operations *really* time consuming when the std::string (or System.String) reaches some kind of threshold…
Regarding lambdas in C#3.0 and VB9 – there’s a HUGE difference between “pure” lambdas and LINQ…
The closest ones I’ve seen so far in reaching out to “pure lambdas” on the CLR is in fact the Boo programming language…
Still even that is not “pure” lambdas…
Regarding dBase manips, you’re mostly right (I don’t use a lot of dBase) since I develop GUI libraries as my “core activity”. Though when I do need to use dBase tools I mostly use them in-directly through (mostly) Castle’s ActiveRecord which abstracts away all that stuff perfectly for me and I have no need to do neither Dispose no in fact even “using”…
In that process (funny enough – while using ActiveRecord) I probably waste a *lot* of cycles compared to a “hand rolled” solution, but I don’t really care as it makes Time2Market 50 times faster and the levels of increased usage of CPU cycles really doesn’t matter that at all…
Just like the number of CPU cycles increasing while using “Managed Programming Languages” means ZIP for my apps…
This doesn’t mean “un-managed” dBase usage (using IConnection, ICommand and IDataReader directly) doesn’t have valid places of usage – e.g. where you’re reading a LOT of records at the same time or need some “insane scalability” features etc…
Not too much unlike using Managed Ajax Frameworks compared to Un-Managed Ajax Frameworks in fact… ;)
I didn’t mean to “insult the JavaScript libs”, my only concerns was to correct the insults I felt John did to the “Managed” Ajax Frameworks in his first slide in his presentation. JS libs definitely have a HUGE and prosperous future, and I am pretty sure that even 150 years from now they will still play a key role in Ajax, though I do (personally) not think that most app developers will do JS “by hand” themselves – even *5* years from now…
Just the way that most “app developers” are not using ASM themselves today, but only in-directly today through some kind of either “compilation process” or “API ‘firewall'”. Here libs like GWT, Anthem.NET and (hopefully, for my credibility ;) also Ra-Ajax plays a key role … :)
Now regarding Python and Ruby in the browser – for most app developers this is NOT a feature but rather will be perceived as a “bug”…
Not to mention the portability problems…
As I said I LOVE JavaScript…!
More languages is for most developers more of a “problem” than a “feature”. Just like supporting more than one instruction set on ASM for your ASM coded apps is a huge hassle…
For me (and obviouslu also you) though this is GREAT news, but we’re NOT the majority… ;)
As a final note – if we were only concerned about speed of execution we would all be developing ActiveX components in ASM hand-rolling our own IUnknown – IDispatch interfaces manipulating the VFP tables directly through x86 CISC [*REALTIME*] Assembly language for our RIA app, though today “everyone” (well – most of us ;) realize the insanity of doing just that. 10 year ago that would have been the “norm” and this discussion would have been about developing ActiveX components in VB(5) versus developing them in C/C++ or ASM for our RIA apps.
My hopes is just that we will get there faster in regards to “hand-rolled” JavaScript than the time we spent “getting there” with ASM COM components…
Another quote;
“Managed Ajax ‘just works’ for all browsers, compare that with ONE typo in jQuery, Prototype, Dojo or MooTools even though how brilliantly those frameworks are in fact implemented.”
“Giving people guns will only make them shoot their legs”…
*ONE* bad call to Element.getStyle and you’re wading through three months of debugging…
In a “Managed” Ajax Framework this is a *COMPILER-BUG* and will not allow you to even *start* debugging your app but point you to the direct line where the “compilation-bug” occurred… ;)
Even for seasoned Un-Managed Ajax (JavaScript) Developers that’s a *feature*…! ;)
Nice talking to you, you’re obviously very skilled (and seasoned) and I’ve taken a lot of your points with me and I think we’ve both grown in this discussion. Now I am going to bed after having *way* too many drinks over at my neighbor’s place … ;)
[me == In-Norway]

Comment by ThomasHansen — October 4, 2008

Thomas & TNO, maybe this discussion about Ra-Ajax could be taken offline into an email exchange. You obviously have a lot to chat about and I’m not sure that a comment section on a blog is the best place to do it.

The original opinions/comments relating to the post are perfectly fine but it seems that the most recent comments are a bit off topic.

Comment by ReyBango — October 5, 2008

Hi Rey and sorry ;)
I think we both got a little bit exalted…!
But I think we’re mostly finished now, but anyway if TNO wish to send me an email he can find my email address pretty easy on the website in my link…
He’s more than welcome to do it :)

Comment by ThomasHansen — October 5, 2008

Thanks Thomas. :)

Comment by ReyBango — October 5, 2008

A little more on topic …. It was a great talk and a even better conference.

I’m going to give a plug, but I think it is relevant. There are a bunch of other libraries out there (also linked to by Ajaxian).

And a few, including my JavaScriptMVC, that try to do things radically different than provide a bunch of widgets and browser / language extractions.

SproutCore and Cappuccino are other good examples of this outside the box thinking.

These libraries are designed for more traditional application development.

Its my hope that as Thin Server Architecture takes off these libraries will also.

Comment by JustinMeyer — October 6, 2008


SmartClient has licensing eerily similar to Ext JS prior to Ext JS version 2.1. That includes a proprietary license on “Assets” (you call it “Component Media”). SmartClient takes it to another level, requiring users agree to the “Software Licensing Agreement” before they may download SmartClient.

Having been down that route, I would recommend you explain clearly that only a portion of SmartClient is LGPL and therefore SmartClient is not truly open source (or you could clean up your licensing/wording on your website material).

On a side note, there are more productive (and respectable) ways to promote your framework than trolling and bashing of competitors on blogs throughout the internet.

Comment by jackslocum — October 6, 2008

The link was cut off:

Comment by jackslocum — October 6, 2008

Ra-Ajax is a joke when i see on the site pages a message saying “you seem to be using a broken browser” using IE 7. It seems more that Ra-Ajax is an insufficient library to handle the most basic purpose of libraries, which is leveling the browser playing field. If you can’t support all the major browsers, and IE is the biggest out there, then don’t bother us with your 1/2 assed library. Ra-Ajax FAIL.

Comment by leptons — October 6, 2008

Wat Ra-Ajax support and what I feel moral obligated to publish of text content at its website are two different things…

Comment by ThomasHansen — October 6, 2008

Jack, I was actually still willing to give you the benefit of the doubt until you dug up an outdated file on our site and tried to claim we had a shady license. Too bad I found this and updated the license to a correct version before a single person fell for your FUD.

Please do read our license. All JavaScript, CSS, and the vast majority of the media – everything produced by Isomorphic – is LGPL. There are a handful of icons that are FREE to use with SmartClient but are not LGPL, and if you want rights to use them outside SmartClient you have to buy SOMEONE ELSE’S license (Icon Experience) – not ours. We’ll never make money from those icons and we’re replacing them with Silk icons anyway (Creative Commons License).

SmartClient is real open source, free for use inside commercial, closed source applications, products and frameworks, no special cases. Please do not defame my company or my product by trying to draw false parallels with your own actions.

If you want to see how committed Isomorphic is to open source, please read our signed public letter here:

Case closed. Don’t sling mud at honest people Jack, it only makes you look worse.

Comment by ckendrick — October 7, 2008

@ckendrick – are you kidding me? You’re accusing Jack Slocum of FUD when it was you who jumped in on this thread to claim that Ext did a “bait and switch”. There’s no such proof of that and to say so is spreading FUD. When Ext switched their license over in April of this year to be dual GPL/Commercial it was in order to fix their currently “broken” license that was the source of a lot of confusion. I’ve never seen so many people attack an individual/company like this before. Their framework is quite simply the best at building enterprise “desktop replacement” applications. If you look at John’s slides toward the end when he talks about UI widgets/components not one of his top 5 open-source, JavaScript only, frameworks provide you with all of the widgets/components needed for entriprise apps. There’s only one framework that does and that’s Ext.

Comment by jratcliff — October 7, 2008

“I’ve never seen so many people attack an individual/company like this before.”

jratcliff – Perhaps he did indeed to a bait and switch. I’m not sure if you are aware of the *entire* history of Ext (its more than a mere fix of broken license as I’m sure they’d like you to believe) or simply blinded by what it is today. Several “attacks” as you put it have valid points but its hard to get credibility when there’s so much emotion. If you would like to understand why most of us consider it a bait and switch, I’d suggest you read this :

Its a very neutral account of Ext’s history. And after reading this if you’re still not convinced, with all due respect, you need to look up the meaning of bait and switch.

Comment by andrewwell — October 7, 2008

Yes, I’m aware of the *entire* history. I’ve been using Ext since the very beginning. So I have to ask you, where’s the “bait and switch”? I don’t see it. I just see a young company that’s trying hard to build the best JavaScript framework available and at the same time trying to figure out all of the licensing/legal issues. Ext never, that I know of, offered a version of their framework under one license, and then changed the license on THAT version. Instead, they waited until a new version to introduce a new license. And why did they make changes? Because they were LISTENING to their users so they could figure out which license they should offer to make their users happy while also protecting their IP. Oh, and they also listen to their users and make changes to their software to meet their users’ needs as well. So, with all due respect, if you and others want to recommend against using Ext because they listen to their users and make changes based off what their users want then that is absolutely ok. However, to say that they did a “bait and switch” is spreading FUD and you shouldn’t do that.

Comment by jratcliff — October 7, 2008

jratcliff – I suppose we just view this differently. And I think its fair to say that many others share the same view as me. I checked out your site and see that you’ve been using Ext for a while so I can understand your sentiments since you might be too wed to Ext to change course at this point regardless of the Ext license.

Ext has had two major versions, 1.x and 2.x in the past year and a half, and they actually did change licenses between minor releases. They when from LGPL-ish license in 2.0.2 to GPL in 2.1. There’s a big difference between the two license. And they did this without notice or a heads up to the community. Infact they did not listen to the community and hence the huge backlash when the switched licenses midstream.

And if they really wanted to fix a broken license, why did they not go with a standard LGPL license. Truth of the matter is that they were
“very sneaky and quite disingenuous”, as John Resig put it. The bait is luring people to use a BSD license, continuing to advocate it was OSS that can be used under LGPL terms by commercial entities in versions 2. – 2.0.2 and once users were highly invested in use of the library, switching to a GPL license in a point release that required them to buy a commercial license for use in a commercial product. That is bait and switch. Libraries like ZK are GPL and have a comparable feature set and look and feel. However they always been GPL with commercial license option without any bait and switch. I hope you try to view the matter as a user not fully committed to Ext and perhaps can understand our perspective.

Comment by andrewwell — October 7, 2008

andrewwell, there was no conceptual license change at any time during the life of Ext JS. Yes, before Ext JS there was a predecessor (yui-ext), on my blog and it was BSD licensed – that was before Ext JS version 1.0 and before there was even a company Ext JS. Commercial licensing has been present since Ext JS version 1.0.

ckendrick, I commend you for moving quickly on the issue. As for me digging up an old file, all I did was go to the website and click on download – I was prompted to register. I clicked register and it had a checkbox requiring me to agree to a software licensing agreement. I clicked the link to the agreement and that is the link I included above. No digging required. It is actually still linked to the same file now, only the text has changed. As for giving me the “benefit of the doubt”, you have already demonstrated repeatedly that you are nothing more than a troll and I prefer to spend my time writing software than debating with a tool. Best of luck.

Comment by jackslocum — October 7, 2008

@andrewwell – well, we’ll just have to agree to disagree then. :) However, I guess I don’t understand why you think “…required them to buy a commercial license…”. That’s FUD talk. These *commercial* entities have choices and weren’t *required* to do anything. They could have 1) stayed at version 2.0.2 or earlier or 2) went ahead and bought a license. It’s just odd that so many seem to think that Ext is not allowed to change their mind ( and on a newer release (point release or not) change their license. It’s not our choice to choose how Ext is run, it’s there’s. What I really take exception to is the FUD that is spread about Ext. Saying they did a “bait and switch” or that they “forced/required users to buy a license”, or that they were “very sneaky and quite disingenuous”. ALL of that is just spreading FUD. In America, you are innocent until proven guilty but in the case of Jack Slocum and Ext, many of you have skipped the trial, made your own assumptions on the evidence, and declared them guilty. And instead of people having discussions how to make the frameworks better we have people spending there time more on whining and complaining that Ext wasn’t licensed the way THEY think it should have. And then, what’s even worse is that you have Jack Slocum having to waste his time defending his good name.

Comment by jratcliff — October 7, 2008

jackslocum – I find this statement and your fickle and nonchalant attitude towards licensing highly disturbing . What does that even mean when you say “conceptually there was no license change” when the license did change several times. There’s no telling what you’ll do next and how you justify it.

Comment by andrewwell — October 7, 2008

The only thing wrong with your explanation is that even the outdated license file you found is not at all similar to Ext pre-2.1, as you erroneously claimed. The primary problem people had with the Ext “LGPL” license was that it placed special restrictions on OEM use. There is nothing of the kind in SmartClient’s license, in any version.

So again, SmartClient is real open source, free for use inside commercial, closed source applications, products and frameworks, no special cases. Please do not defame my company or my product by trying to draw false parallels with your licensing pratices.

PS. “trolling”?? you’re the only one with a misleading statement in this whole thread.

Comment by ckendrick — October 7, 2008

@ckendrick – your post that says: “By the way, you should really read what Resig and others have said about Ext, because you have just profoundly misrepresented Resig’s reasons for omitting Ext from slides, panels, etc. This is not about quibbles over SVN access, but instead about the LGPL -> GPL bait and switch.” is indeed “trolling”.

From Wikipedia: An Internet troll, or simply troll in Internet slang, is someone who posts controversial and irrelevant or off-topic messages in an online community, such as an online discussion forum or chat room, with the intention of provoking other users into an emotional response[1] or to generally disrupt normal on-topic discussion.

As you can see your post is off-topic and controversial. For one, you are speaking for John when John should be speaking for himself. Next, you claim the “bait and switch” when Jack and Ext have already said that is not the case.

As for your claim that your license doesn’t place an special restrictions…well, it did but you fixed it. Good for you since, as Jack has said, he and Ext has been down that path only to discover that wasn’t a good idea. I’m glad you listened to his advise and updated the wording of your license.

Now my hope is that everyone can just move on and let’s focus on the frameworks and let the framework developers continue to make them better.

Comment by jratcliff — October 7, 2008

jratcliff, I recognize you from the Ext.nd forums. You are part of the Ext.nd team (lead?). Stop making stupid arguments like :
‘Next, you claim the “bait and switch” when Jack and Ext have already said that is not the case.’

Jack can say whatever nonsense he wants. It means Jack-sheet to most of us. Not everyone has a mancrush on Jack. Stop typing so quickly trying to come to the rescue of your idol. It makes you look silly.

BTW didn’t you raise concerns about how the Ext “”prohibitive use clause” license change would effect you. Clearly Jack wasn’t listening to you as he didn’t bother responding to your post

And while you’re reading the above thread, see the posts below where justheatingup, an Ext Premium user who has already paid for commecial license and support is furious at the license change and he posts

“Jack I know you to be nothign but cordial. The JQuery posts are a testament to that. That being said, I believe that including a license.txt file saying it’s LGPL, then only to find that in the source code, there is a link to a site that is currently under construction with a different set of terms, is misleading.”

Just another example of the Ext sleaziness.

Comment by viper2k — October 7, 2008

viper2k, the post you quoted above was from before Ext JS 1.0 when we had an open licensing discussion with the community. The license.txt file and website were identical before Ext 1.0 was released. The quote above was referring to, before it was launched and was still under construction. Like usual, you make accusations assuming bad intent when you don’t understand the details or context.

“Sleaziness”, IMO, is how you and your buddies above continue to spread FUD against Ext JS in an effort to promote your own products and libraries. If you instead used that energy to create a library that is more compelling, you might not need to resort to these tactics.

Comment by jackslocum — October 7, 2008

Everyone is avoiding the elephant in the room. jQuery, Prototype, MooTools, etc. are all incompetently written junk and inappropriate for deployment on the public Internet. What sort of Web developer would force their users to download 100K (on average) of browser sniffing, language mangling script, just to use a tiny percentage of the code for some silly effects? A very incompetent, inconsiderate and out of touch Web developer I would say. Seems there are lots of them out there (in and in here.) I need a rubber stamp that says “Fire Everyone Involved.”

Somebody commented that MS is mashing up jQuery with some of their junk. That’s not surprising as they are responsible for ASP.NET, which is also an incompetently designed framework.

All of the “buzz” about these things is the echoing of blithering past. Don’t buy into it. There are no magic pills for cross-browser scripting. And if there were, you couldn’t get them from John Resig. LOL.

Comment by DavidMark — October 7, 2008

“viper2k, the post you quoted above was from before Ext JS 1.0 when we had an open licensing discussion with the community. ”

Oh really, so there was an open licensing discussion way back from the Ext 1.0 days. So great, you came up with a license that was based on user feedback in the early days of Ext. So why then change the license from Ext 1.0 to 2.0 and then again from 2.0 to 2.1 making the license more restrictive each time. That sure sounds like bait ‘n switch.

Conceptually, you’re full of it.

Comment by viper2k — October 7, 2008

viper2K, the post you quoted was regarding Ext 1.0 from 2007. Jack addressed my concerns and resolved that issue within hours. We still use Ext JS to this day and are very happy with the framework.

Comment by justheatingup — October 7, 2008

@viper2k – “stop making stupid arguments”, “say whatever nonsense”, “It means Jack-sheet”, “a mancrush”, “rescue of your idol”, “Ext sleazeness” – wow, what can I say? How old are you, really? I think it is you that looks extremely silly. Those comments sure gave me a good laugh. :)

As for my post that you are referencing back in March of 07, Jack Slocum contacted me directly and we discussed my concerns offline and all was/is good. In fact, that conversation lead to myself and Rich Waters starting Ext.nd. This is just another example where people like yourself just don’t have all of the facts and then start spreading FUD like this.

Comment by jratcliff — October 7, 2008

@jratcliff Your accusation of “troll” is baseless: I did not raise the topic of Ext or why John excluded them, coryn1 did – he/she asked a question that I answered accurately with a correct link to the source.

Re: bait and switch: hundreds of people with no financial connection to any competing product have called Ext’s licensing moves a bait and switch or used equivalent terms. Here’s 400+ pages worth:

The fact that Ext pulled a “bait and switch” is a broadly held, consensus opinion (see above), and it was neither FUD nor even a contentious point for me to mention it.
I am amazed to see you label this outcry – hundreds of people with legitimate grievances – as “FUD”. Nice.
You also make the nonsensical claim that it’s not a bait and switch when the perpetrator says it’s not? Shall we also ask the thief if it’s theft? If you’re going to start insulting people, start by being coherant.

Comment by ckendrick — October 8, 2008

It’s quite amusing how Jack is getting his minions to chime in. Some of them that have a vocabulary that is limited to “FUD”.

Comment by viper2k — October 8, 2008

@ckendrick – the issue I had with you is that the question coryn1 asked was directed at John and you then decided to answer it yourself and in fact, in a later post, you say to rextasy: “ have just profoundly misrepresented Resig’s reasons for omitting Ext from slides, panels, etc. This is not about quibbles over SVN access, but instead about the LGPL -> GPL bait and switch.”. Here, you are now putting words into John’s mouth on why he really omitted Ext from his slides at the conference. You shouldn’t be asserting this and if this is truly the reason why John left Ext out then let him say so. Are we to believe that you know what John’s real intent was when he didn’t include Ext in his slides or that you know what Ext/Jack Slocum’s real intent was when they changed their license. You have the right to to say what YOU believe but don’t go around putting words into other people’s mouth to help validate what you believe. Let them speak for themselves.
As for the “bait and switch” being a consensus. You are totally omitting all of those who are perfectly fine with the license. Besides, just because someone is *accussed* of something doesn’t make them guilty. You and I disagree with the facts and neither of us, despite what you think, can really know the true intentions of what Ext/Jack did since we can’t read minds.
Now, where can we go from here? I propose we stop hi-jacking this thread since we are way off-topic now. Nothing good is coming of this. Just think how people reading this thread will think. Charles (ckendrick), you are the CTO and Chief Architect of Isomorphic Software and the architect behind the SmartClient Ajax platform and ExtJS is your competitor. To jump into this thread and start speaking for John Resig and and Jack Slocum expressing what their intentions on for slides in a conference and a license change to their product just doesn’t look good. Let these guys speak for themselves.

Comment by jratcliff — October 8, 2008

@viper2k – you’re a very funny guy/gal. This is twice now that you have made me laugh. But, to answer your accusation: “No one is getting me to chime in”. I’m just defending what I perceive to be a wrong. Is there something wrong with that? It’s really a no win situation if you think about it. If no one speaks out against the accusations made against Ext then everyone will just say “see, their guilty, they don’t even bother defending themselves”. But if someone does go on the defense then they’re just accused as being a “minion”. Nice.

Comment by jratcliff — October 8, 2008

jratcliff – Aren’t you doing the the same thing. Jumping in and speaking for Ext, when someone from their company should be answering these.

Oh and by the way Jack never replied explaining what he means by “conceptually there was no license change” when it did change. Moving from LGPL -> GPL is not a license change?? Which world does he live in? Just goes to show how the company feels about licensing issues.

Comment by andrewwell — October 8, 2008

@andrewwell – good point. I too shouldn’t speak for someone else so my apologies on the posts that I did. I will say, however, that as far as I know and understand the situation, there was never an intentional “bait and switch” and I’ll go on record as to also say that I (that’s just me talking) don’t see the license change as a bait and switch at all. I think everyone should just agree to disagree and leave it at that.

Comment by jratcliff — October 8, 2008

andrewwell, your quote is incorrect and the change you made completely changes the meaning. What I said was “there was no conceptual license change” – meaning the concept of how we license Ext never changed. Since version 1.0 we had commercial and open source licenses. The open source license changes have ben explained several times, including a long winded explanation on my blog. If you choose to not believe or to ignore those reasons, that is your choice but your ongoing efforts to convince others there was an insidious motive is where you cross the line and become a troll in my book.

As for “bait and switch” being the consensus, that is ridiculous. 10 (or even 100) out of 50,000 registered users (and over 200,000 daily visitors) is not a consensus. And the most vociferous people speaking out against Ext aren’t the people who use it – it is people like you who are our competitors and who hope to spread FUD to benefit themselves.

Comment by jackslocum — October 8, 2008

You rant at length about putting words in John’s mouth or in Jack’s mouth, which would be a great point, except that what I actually did was link to John’s exact words posted elsewhere, making your screed completely irrelevant.
You talk again about innocent before proven guilty, but you don’t seem to understand that this is a wholly unrelated concept that comes from criminal law. People are free to have an opinion and to express it, and they have, using the term “bait and switch” to refer to Ext, all over the web. That’s what I claimed, and it’s true.
What we have here are 3 people – you, me and Jack – with “skin in the game”. I’ve been completely forthright about who I am, referring to “my company” and “my product”, because it’s important that people have a chance to evaluate my possible bias for themselves. For the same reason, I answered direct questions only, with links to sources backing up everything I’ve said.
In contrast, Jack tried to mislead people about SmartClient’s license, and you both inserted name calling into a rational discussion.
Please don’t try to pretend that by merely answering you I have somehow sunk to your level. I’m the guy with his signature on an open letter committing to a consistent LGPL license.
Wow, there’s Jack again. There’s no need to take Jack’s word, my word, or anyone’s word as far as the general opinion on the Ext license change. Do a few quick searches, be aware of people’s affiliations, look for neutral parties, and draw your own conclusion.

Comment by ckendrick — October 8, 2008

@ckendrick – dude, relax already. I never said that the link you linked to wasn’t John’s exact words. The problem is that you are taking these words from John that happened months ago to assert that is why Ext was left off of his slides for his presentation at The Ajax Experience. So that’s the problem I had with your post to rextasy where you say:

By the way, you should really read what Resig and others have said about Ext, because you have just profoundly misrepresented Resig’s reasons for omitting Ext from slides, panels, etc. This is not about quibbles over SVN access, but instead about the LGPL -> GPL bait and switch.

it just comes off as though *John’s* quibbles of not including Ext on his slides are really over a perceived LGPL – GPL bait and switch. But that’s not what John said. That’s what you just said. Also, John, in an earlier post to you, coryn1 and rextasy doesn’t mention anything about a “bait and switch”. So no where in this discussion thread or the responses to the user who had the question of why Ext wasn’t included in the slides does John say that. Only you say that but in a way where someone could take it that John did. So do you get where I’m coming from and why it sounds like you are speaking for John? Now there’s no question that you have a fantastic Ajax/RIA framework and so does Ext. I just prefer Ext and took issue with what sounded like FUD being spread. Understand? If you didn’t mean it as FUD then say so and let everyone know that the comment is your opinion and not John’s. If it’s John’s opinion then let him say so, ok?

Comment by jratcliff — October 8, 2008

@jratcliff You’re right on one thing – John did not actually use the phrase “bait and switch”. What John said is much, much, much harsher.

ExtJS is a giant licensing fail pile masquerading as an open source project in a thinly-veiled attempt to force more people to buy their corporate licenses.

They’re using ‘open source’ as a buzzword selling point to lure companies in, befuddle them with confusing viral licensing, and obligate them (through the obvious balking that the corporate lawyers will do) to get them to buy a full, corporate, license. It’s very sneaky, quite disingenuous, and paints a bad picture for open source development as a whole.


Compared to this, “bait and switch” sounds downright mild, so please don’t tell me I’m misrepresenting what he said, I actually toned it down, if anything.
John’s statements of the past, are, to put it midly, a very plausible reason for him to exclude Ext from slides, and it was valid and informative to refer people to them.
Here now, in this thread, John points to the GPL license as a sufficient reason for Ext to be excluded. But that is not in conflict with, and does not change, what he said in the past, nor does it make it invalid to point to John’s former words, especially as John had not explained himself yet, and I didn’t think he was going to.
This is a perfectly ordinary thing to do. Discussions about technologies and people happen all the time, all over the internet, in which the principals being discussed are unlikely to step in directly, and so people link to their official statements.
You stepped in with a baseless accusation of trolling, clearly false by your own definition, as I did not raise the topic. I do appreciate that you are no longer slinging such terms around, and that you now instead trying to dig into whatever nuance it was you didn’t like. But as a baseline of respect, you should retract your “troll” comment, which just isn’t true.
Side note to John: if your intent was to distance yourself from your more heated comments of the past, then sorry for bringing those up again.

Comment by ckendrick — October 8, 2008

ckendrick, trolling would be every mention of Ext JS on the internet, you are there bashing us. Trolling would be using a licensing discussion of the past (that is no longer valid) and trying to apply it to the present. Trolling would be creating a fake blog attempting to defame Ext JS.
Even more important though, you have nothing to do with Ext JS – you are neither a commercial or an open source developer using Ext JS.
You do not know the history behind Ext JS and you do not know me. I am requesting you stop trying to act like you do and stop trying to make me out to be some villainous character out to rob everyone. If you knew me or even the history of Ext JS in the slightest you would realize you claims are not true. Ext JS never did anything to you other than give you ideas for how to improve your product.
As for us being a closed source company pretending to be open source, Ext JS has been an open source company since day 1. Whether you think so or not, the GPL license is the #1 open source license in use. We are a member of the FSF. We have spent countless hours and resources speaking with open source legal experts (the same guys who consult with open source giants like MySQL) to create an open source offering that is flexible (see our exceptions) while still meeting our quid pro quo philosophy.
On the other side, your company has been a closed source company since 2000. You just recently switched the client-side portion of your product to LGPL (the server is still proprietary) and now you think that makes you an open source expert. Considering history, if anyone is trying to use “open source” as a buzzword to sell a product, it would be your company.
As for continuing this discussion, I am done with it. If you want to continue it further, please let me know of any upcoming conference you will be attending and I would be happy to meet you there.

Comment by jackslocum — October 8, 2008

well well, someone is getting defensive. Jack, your actions past and current paint a pretty clear picture of your character so don’t flatter yourself.

If GPL is the #1 license, why do you have exceptions to allow extensions to be liberally licensed? Worried that Ext will come to a grinding half if all the extensions were also licensed under GPL. Ext is as hypocritical and two-faced as it gets.

And you don’t control who gets to voice an opinion on the Ext shenanigans . It is not limited to Ext users. In your high and mighty mind it may be, but most don’t care a rat about what you think or want.

The facts are plain and simple. Let me jog your memory

Grails founder Graeme Rocher wrote here :

“The news that Ext-JS has, from one release to the next, changed from a modified LGPL to a GPL based license nearly made me fall off my chair. There have been many poor judged, and ill advised decisions made by software companies over the last few years, but this has got to be up there with the stupidist I’ve seen and I’m not even personally an Ext-JS user.

What they have effectively done is built up a community, taking full advantage of the open source model by accepting user contributions and patches and then turned around and kicked their own community up the backside. It is projects like Ext-JS that give open source a bad name.”

John Resig also wrote here :

“Actually, it is (Ext is Slimy) – since the explicit “if this is a piece of JavaScript code, don’t virally infect the server-side code” clause of GPLv3 wasn’t included. This means that if you ever use server-side code to write out a JavaScript method (e.g. “ext.showModal” or some such) then you immediately have to take on the GPL there, as well. This isn’t just my interpretation, it’s Jack Slocum’s (creator of ExtJS) as well. This is being done very intentionally to keep the appearance of being ‘open’ while, at the same time, making it impossible to actually ever use in a non-Open-Source capacity.”

And even Dion expressed his opinions here :

There is no conspiracy theory here. It is not a select group of competitors who are out to get you. Prominent personalities from different spectrums of OSS have all made the same conclusion that you resorted to dirty business. I hope you sleep well with the money you’ve made. The Ext empire is not going to last too long.

Comment by viper2k — October 8, 2008

correction : The link to Greame Rocher’s blog post is

Enjoy the Fall :)

Comment by viper2k — October 8, 2008

What was this post about again?

Comment by anewton — October 8, 2008

@Jack Claiming to be “done with” a conversation after taking several parting shots is a child’s game. Sure, meet me at AjaxWorld if you have something to say, I’m speaking right after day 2’s keynote. In the meantime, I will correct your public lies.
I have not “created a fake blog to defame Ext JS”. I assume you are referring to the ExtIsEvil blog that I linked to earlier, started by “Ext Whistleblower”. Jack, when you see 400+ hits for a search for “ExtJS bait and switch”, don’t you realize there are hundreds if not thousands of people angry enough to create such a blog? If I wanted to speak out against you, I could follow the example of many open source luminaries and prominent bloggers and simply speak my mind, publicly condemning your actions as so many others have, without fear of any backlash.
Now who would bother to instead, conceal their identity? Connect the dots Jack. It’s one of your own users. Like many Ext users caught midway through a project by the Ext license switch, he may strongly deplore your actions, but he has no choice but to continue with Ext for now. And while he does, obviously he wants the benefit of the support he paid for.
If I ever criticize you or your actions, you will see my name on it, I promise you. To decide this blog was mine was simply foolish; to accuse me of it, inexcusable.
The rest of your post was a confused mixture of responding to John Resig’s words as though I had said them; strange attempts to claim that the history of Ext is unknowable when in fact you personally explain it right here (albeit in an unsatisfactory manner); along with an amusing and vague attempt to have the credibility of Linux rub off on Ext because you both use the GPL.
The reality is very simple: SmartClient is real open source, free for use inside commercial, closed source applications, products and frameworks, no special cases.
Ext is not.
See you at AjaxWorld.

Comment by ckendrick — October 9, 2008

ckendrick FTW.

Comment by ericnguyen — October 9, 2008

Just like any other library-type software that provides reusable components to developers, frameworks that have overlapping functionality each have their strengths and weaknesses. So at the end of the day, it all boils down to a business decision. When choosing between, say, jQuery and Prototype, it all boils down to a business decision. However, the current situation in the world of JavaScript development reminds me of C++, where each library has its own set of collection classes, and sometimes even a string class… But this is inevitable when the language runtime is not bundled with an extensive set of APIs like Java or .NET. Even then, there will be replacements for standard libraries that are better at something specific.

What I find a little interesting is using (and developing) libraries that provide specific functionality without imposing a set of design decisions on the developer with regards to any functionality not provided by the library. For example, Lightbox ( provides pop-ups and only pop-ups, without having its own Ajax library and DOM traversal helpers. Scriptaculous ( provides a layer of animation, and while it uses Prototype, you don’t have to… However, the presence of Prototype might cause problems with the “$” function.

Comment by MapDot — October 18, 2008

I recently developed a library called DiXon / JavaScript Client Pages (, which allows you to code client-side pages using the paradigm used on the server side; namely with XHTML markup intertwined with embedded code and/or custom tags.

Example (I don’t know if Ajaxian is going to escape my entities – sorry if this comes out unreadable):

<?js for (var i=0;i<employees.length;i++) { ?>
<li><span class=”name”><?js text(employee.firstName + ‘ ‘ + employee.lastName + ‘ (‘ + employee.title + ‘)’); ?> </span> </li>
<?js } ?>

This can also be done with custom XML tags
<js:forEach collection=”items” item=”item”>
<span class=”name”&gt<js:output value=”employee.firstName + ‘ ‘ + employee.lastName” /<</span>
<js:output value=”employee.title” /<

The library can be grafted onto any framework. What do y’all think of the concept?

Comment by MapDot — October 18, 2008

Leave a comment

You must be logged in to post a comment.