Tuesday, December 9th, 2008

You Leaked on my JavaScript!

Category: JavaScript

<p>As soon as I read John’s post on JavaScript Language Abstractions I knew that it would draw a lot of chatter and fuzz. John started with:

Pyjamas, GWT, and Objective-J all hinge around a central concept: Abstracting away the authoring of JavaScript-heavy web applications by allowing the developer to program entirely in their natively language (be it Python, Java, or an Objective-C-like-language accordingly).

This is a large abstraction – much more so than what is provided by most JavaScript libraries – you are programming in another language which is outputting JavaScript code. You are likely to never see a DOM object or any pieces of the native JavaScript language.

I worry about large abstractions like this for a number of reasons.

When you use a pure-JavaScript library (such as jQuery, Prototype, Dojo, Yahoo UI, etc.) you are still programming using the JavaScript language. In the case of jQuery a large number of users, who have either never programmed JavaScript before or never programmed before, acquire a good grasp of how to use JavaScript – accented by the use of the library. A pure JavaScript library makes annoying tasks simple, the largest of which being cross-browser support. It does nothing to dilute the quality of the JavaScript-authoring experience. In fact I would argue that JavaScript libraries do much to give JavaScript a particular style and feel. Code written with Prototype feels very different from code written with jQuery – and this is fine since it’s giving the user the option to develop in the JavaScript language how they best see fit.

Charles Jolley of SproutCore came out with support:

I’ve written about this myself on the SproutCore blog before, but I think it bears repeating: The native programming language of the web browser is JavaScript. To write the best software possible, you need to embrace the native tools of the platform you are working on.

Michealangelo said that to him a sculpture already existed within a piece of marble. His job was to simply remove the parts that didn’t belong.

Like any creative endeavor, writing great software is as much about embracing the material you are working with as it is about building something new.

Everybody is writing “abstractions” around JavaScript

That came from Francisco of 280 North / Objective-J in On Leaky Abstractions and Objective-J.

This is a great, very thoughful post that argues that even Ajax libraries are JS abstractions too. He doesn’t just talk about it, he shows jQuery, Prototype, and Dojo code, as well as his own Objective-J to get his point across. He then goes on to talk about why they took the JavaScript++ approach (adding actual syntax), concluding with:

To me what we’ve done with Objective-J and Cappuccino seems inevitable. Even the most conservative major JavaScript libraries can’t get away without adding features to the language, and we’ve simply taken the next logical step with Objective-J. Similarly, Cappuccino is a tool that allows you to stop thinking about web pages and browser incompatibilities, and instead focus on the complex problems presented by the challenge of creating full-on applications on the web. As we’ve said countless times, Cappuccino isn’t for everything. All of this abstraction isn’t necessary if you’re simply trying to add dynamic elements to a site like bankofamerica or digg. Cappuccino is for building rich applications in the browser, a small minority in the web world today. We believe that this is where things are headed, and we designed Cappuccino specifically to get us there.

JavaScript is a malleable language. One that lends itself to the creation of DSLs. This is why Dojo code can look so different to jQuery code. The lack of a class system and an import system means that a lot of libraries reinvent the wheel, in their own way.

Abstractions are an interesting beast. Go with what feels right to you. I personally like the “create a DSL in the language itself and allow me to sneak out” style versus a new language, but that is just me.

Related Content:

60 Comments »

Comments feed TrackBack URI

It’s the old “Bare Metal argument”; as a former real-time FORTH programmer, and one of the first to bring native FORTH to lab and ATE platforms, the assembler guys used to rib me. Now, I knew x86 ASM back in the day, but not like they did! Eventually, I was doing things in FORTH and x86 that they just could not have done in a comparable amount of time.

Comment by awilensky — December 9, 2008

Also along similar lines, anyone that claims the analogy of JavaScript being the modern day assembly is often humorous in many cases. If your language “Compiles down” to JavaScript and ends up 5 times larger than a hand written JavaScript program of the same functionality…who are you kidding?
.
For example, how much code in your favorite language does it take to create this?
function acc(n) function(i) n+=i;
.
(Note that I’m not railing against the concept of cross-language compilers, but more so against those using them as an excuse under false pretenses)

Comment by TNO — December 9, 2008

@TNO: IE doesn’t like your code :)

Seriously though, I don’t think the choice of languages and abstraction layers should be a plot for a drama. In the end, if you’re doing any sort of innovative stuff, there will be things that libraries and abstractions haven’t anticipated, and when you get bugs, you’ll likely have to know the close-to-the-metal stuff.

With that said, programming in other languages do have benefits. One could say that yes, compiling currying from Java will likely spit out bigger code, but can you easily rename a function in a 30,000 line pure js code base? Can you afford to have 20 programmers learn FP (and are they willing to)?

In the end, it’s all a matter of knowing your project requirements, the tools available to you and your team’s expertise and work flow.

Comment by LeoHorie — December 9, 2008

@LeoHorie:
Its an Expression Closure from JavaScript 1.8, so there is no surprise there that our favorite red-headed step child is having issues.

Comment by TNO — December 9, 2008

I think John Resign is a very thoughtful and smart man, but he was a bit off the mark on this one with regards to Objective-J and Cappuccino :)

Objective-J is getting a bad wrap in all of this. As many of the Objective-J/Cappuccino folks pointed on on Resig’s blog, Objective-J is a strict superset of javascript and allows the use of regular Javascript objects interspersed at any point in the objective-j code.

Objective-J isn’t an abstraction to Javascript, it’s an addition to Javascript.

resig said: “You are likely to never see a DOM object or any pieces of the native JavaScript language.”

You won’t see DOM in Cappuccino (the OpenStep-like objective-j platform) but then again that’s the central point of Cappuccino and I don’t believe Resig’s criticism stands up:

You don’t learn the unending utility of Javascript?:
Try using objective-j without knowing javascript.

There will be a leak in the abstraction at some point and you will be left alone, up a creek and helpless?:
Name a platform/language/library where this doesn’t happen at some point.

Comment by idio — December 9, 2008

The objective-j/cappuccino team has a very thoughtful response that clarifies what their platform is all about:

http://cappuccino.org/discuss/2008/12/08/on-leaky-abstractions-and-objective-j/

Comment by idio — December 9, 2008

When you use a pure-JavaScript library (such as jQuery, Prototype, Dojo, Yahoo UI, etc.) you are still programming using the JavaScript language. In the case of jQuery a large number of users, who have either never programmed JavaScript before or never programmed before, acquire a good grasp of how to use JavaScript – accented by the use of the library. A pure JavaScript library makes annoying tasks simple, the largest of which being cross-browser support. It does nothing to dilute the quality of the JavaScript-authoring experience. In fact I would argue that JavaScript libraries do much to give JavaScript a particular style and feel. Code written with Prototype feels very different from code written with jQuery – and this is fine since it’s giving the user the option to develop in the JavaScript language how they best see fit.

As anyone who has tried to recruit skilled javascript programmers knows, the claim that using jquery helps you learn javascript is somewhat optimistic. It is more likely that an individual will *only* know jquery, *believe* they are a javascript coder, but ultimately *fail* real tests of their js knowledge. The simple fact is that not only is the learning of “these people” stunted (irreperably?) at birth — developing your *own* style is how you learn — but their ability to understand the actual language and its intricacies is severely hampered by the “lie” of jquery (hiding the hard parts means you don’t learn how to solve the hard problems). Or perhaps a better way to put it is this: jquery helps you do some UI things that are too trivial to justify developer cost. That is why it has so much value. However, it is also creating the dull class of coder (think offshore) who is cheap and uninterested, which is good to oil the gears of capitalism, but does little to advance the art. A simple test is finding some highly successful new pieces of software which would not have succeeded had they not used jquery (or other framework). Then find some that would have not succeeded if they had not been built using javascript. In there you will find the truth — you can’t claim to be advancing the art of housebuilding by creating plywood: you’ve simply made it cheaper. And please note: I love frameworks. It lets me hire cheap coders to work with designers and quickly prototype their designs. This is an incredibly valuable fact.

Comment by nataxia — December 9, 2008

@John
“I worry about large abstractions like this for a number of reasons.”…
.
Well, *I* worry about your intentions of saying such a thing. JavaScript is the *ASSEMBLY-language* of the 21st Century and you’re yesterdays news dude…!
.
Wake up dude, maybe you’ve still got time before the *rest* of the world (including your hordes of fans) wakes up and puts you into the History books – at an age of 30…!
.
I realize you’ve got tons of investments in JS, but sorry – JS is yesterdays news…
Frameworks like GWT, Ra-Ajax, Cappuccino and so on have proved this…!
.
PS!
In regards to Fransisco’s comment about;
“Cappuccino isn’t for everything” – I hope you realize that this is NOT true for ALL Managed Ajax Frameworks (as in his “don’t use it at digg” comment)
.
Most Managed Ajax Frameworks are constructed to mainly create applications, but as I have proved in http://stacked.ra-ajax.org/ this is not true for Ra-Ajax for instance…
Some Managed Ajax Frameworks can be used BOTH as Application Frameworks AND as “content websites” Ajax Frameworks…

Comment by ThomasHansen — December 9, 2008

Charles’ statement is disingenuous at best:

“The native programming language of the web browser is JavaScript. To write the best software possible, you need to embrace the native tools of the platform you are working on.”

As the comments on his blog point out, if this were ultimately true, people would be writing Desktop software in assembly, or at best C. Languages evolve.

Perhaps even more relevant, SproutCore does in fact extend JavaScript. It must be “compiled” by the build tool before it will run. This is because of the introduction of at least one new keyword, sc_super. Of course, this isn’t surprising, because a good portion of your work in SproutCore is spent writing a ruby/html hybrid which must also be translated into the appropriate html by the build process.

I don’t believe this is a bad architecture, but its hypocritical to talk down at others for taking this approach further.

Comment by rboucher — December 9, 2008

Objective-J looks cool to me. Here are the things that have stopped me from looking at it.
.
1) Extra time.
2) I’m not sure what problems it solves for me. I’d probably have to immerse myself in Objective-J before I saw how it could make my life easier. Perhaps if I knew Objective-C, I would know But I was always able to write the code I needed in straight C. There are so many easy ways to do things in JavaScript that I don’t even try to bolt on classes any more. I just use objects.

Comment by Nosredna — December 9, 2008

@Thomas: “I realize you’ve got tons of investments in JS, but sorry – JS is yesterdays news…”

Basically what you’re saying is that the work that the Dojo, jQuery, MooTools, Prototype, Ext & JavaScriptMVC (among many others) teams are doing is pointless and archaic. That’s a pretty silly statement don’t you think?

Is putting down the work of others the only way that you can promote your library, Thomas? You rarely seem to have anything positive to say and when you do say something, it’s always a basis for a mini-advertisement for your framework.

Seriously, focus on your own work and try to offer some productive comments to Ajaxian.

Comment by Rey Bango — December 9, 2008

@Thomas – I don’t want to gang up on you, but I have to agree with Rey. There are probably more constructive ways to express your self (though a personal blog perhaps). You seem to have put a lot of work into your projects and it would be a shame to jeopardize all that hard work, because of some off putting comments.

Comment by jdalton — December 9, 2008

Yah, let’s all calm down and have a productive conversation.

Instead of putting down someone, lift yourself up and talk about technical items of your framework that do something interesting for example.

Comment by Dion Almaer — December 9, 2008

@Rey Bango
I didn’t *start* this!
John have been bashing at Managed Ajax for a LONG time now! And John is in such a position that everything he says will be heard – by a LOT of people – and they WILL believe it!
.
Sure he says “abstracting away JavaScript is worrying me”. What people are hearing is that “Managed Ajax sucks and John doesn’t like it – therefore it must be bad”.
.
Whatever John says will be picked up by the masses, and when someone with the name “John Resig” says something which is so *insanely wrong* he MUST be corrected!
.
I just gave back what was given Rey…
I realize you’re not in a position to understand that, I also realize you don’t really like me nor the work I am doing, but to try to throw every JavaScript developer on the planet after me in a “divide and conquer” strategy probably won’t work…!
.
There are lots of problems that Ra-Ajax, GWT and Cappuccino does not solve, just like there (even still today) are for “non-Assembly-based” programming languages where you need to resort to assembly programming (hint; game programming and media codecs etc)
.
For instance I don’t know about any server-side Ajax Framework which can make Super Mario bros like I’ve seen links to here at Ajaxian. However that does NOT mean John has the “right to worry” and *definitely* not SAY he “worries”…
.
JOHN IS WRONG!!!

Comment by ThomasHansen — December 9, 2008

@Dion and jdalton
I didn’t see your comments before posting my last one, OK I will take a chill pill. Lies just make me *very* angry… ;)

Comment by ThomasHansen — December 9, 2008

@Thomas: “Divide & Conquer”? Are you serious? You said “JS is yesterdays news…”. This is a direct quote from your comment and it involves everyone in the JS community, not just John. If you’re upset about a specific topic, then you should think prior to posting statements like that because you *are* essentially saying that the technology used by tons of developers daily is passe & that’s just wrong.

As for my feelings towards you or your work, I’m fairly indifferent. I’m actually over your aggressive & nonsensical comments here on Ajaxian and I feel they add zero value to readers. You seem unable to articulate your thoughts without being in someone’s face. And to be direct, you’ve been emailed about this behavior before & you’ve promised to tone it down. This isn’t something new. Unfortunately, you seem unable to control yourself. So there’s no dislike of you, Thomas, just your pattern of aggressive posting which I think is unnecessary.

Comment by Rey Bango — December 9, 2008

@Rey
Who’s your employer these days…?
Are you back in the Evangelizer position at jQuery LLC…?
.
Just want to make sure I know who I’m talking with…
.
Your comments makes perfect sense if so, and I truly understand your need to “run to the rescue” for jQuery and its founder when saying something stupid like this.
.
Regarding this; “I’m fairly indifferent”.
If you’re so “indifferent” why did you answer my comment then…?
(Hint; Don’t answer that… I think I just did ;)

Comment by ThomasHansen — December 9, 2008

BTW, regarding this;
“Basically what you’re saying is that the work that the Dojo, jQuery, MooTools, Prototype, Ext & JavaScriptMVC”
.
I just realized that I never answered this one and I want to make sure everyone understands my viewpoint of this…
.
When I did Gaia I *built on top* of Prototype.js and the work done by Sam Stephenson (which BTW was WAY earlier then JR and deserves the “creds” JR have a *millions* times more – only JR (John Resig) and Mozilla had higher evangelizer budgets then 37signals, so JR ended up becoming the “JavaScript God” of the 21st Century instead of the guy *deserving* it – Sam Stephenson)
.
Also literally *everything* I’ve learned when building Ra, some “JS Guru” (including work done by jQuery too in fact) have done *before* me.
Like for instance our MouseLeave/Enter functionality was inspired by MooTools, our JS inheritence (Ra.extend) which saves us for literally thousands of lines of code I learned from Sam Stephenson and Prototype. The Comet implementation in Ra-Ajax was inspired by DojoToolkit and the blog of Alex. Etc, etc, etc…
.
Also a lot of problems are still NOT solved by Managed Ajax libraries like GWT etc and probably will not be solved in foreseeable future, one example is Canvas and Game Programming where one probably should use jQuery, MooTools or something in combination with something else.
.
So *NOOOO!!* I do NOT “disregard” the works of the JavaScript gurus like JR, SS, Alex etc. I just don’t think that 99% of the applications (or websites) in this world are better of built with jQuery then choosing some Managed Ajax library…
.
But more importantly I don’t like it when arrogant and ignorant people makes ignorant remarks about technologies they don’t know *anything* about…! [JR]

Comment by ThomasHansen — December 9, 2008

The language of Unix is C, therefore anyone who doesn’t use C on Unix can’t write the best software possible.

30 years of language flamewars still hasn’t taught language zealots their lessons. Folks, it’s all aesthetics and personal preference. There is no magical quality of Javascript that makes it the most optimal language for DOM manipulation or event handling, in fact, we know it’s not since CSS selector libraries were invented to cover this lack of first class DOM manipulation support.

What we have is a case of people who love the language they have, are heavily invested in it, and are playing missionary seeking memetic conversion. For the last 500 years, European missionaries landed on far away shores with news of Jesus. Today, missions of a different sort are landing in each others camps with news of their messiah.

It’s all perfectly natural, because of the Metcalf’s law, one wishes to have as many speakers of a language as possible. But those engaging in language flamewars should be more self-aware of why they are being so zealous.

Comment by cromwellian — December 9, 2008

As an aside, I would counter Dion’s comment by saying that Javascript actually isn’t that malleable a language. Compared to what can be done in Scala, Scheme, Haskell, Factor, Ruby, SmallTalk, even Java7 BGGA closures, et al with respect to DSLs. For example, there’s no getting around the function() {} boilerplate for passing code blocks around, there’s no operator overloading, etc.

Treating say, chained calling conventions, as a Domain Specific Language is somewhat an abuse of the term. To me, Regular Expressions are a domain specific language. SQL is a domain specific language. XPath and CSS selectors are domain specific languages. Excel formulas are DSL. The key commonality being the introduction of a new grammar with syntax optimal for the problem at hand.

Javascript still does impose a certain amount of boilerplate which cannot be abstracted away behind new syntax, unless one wants to invoke Greenspun’s Tenth Law, which is that any sufficiently advanced program (then C, but applies here as well) will include an ad hoc version of common lisp. And this would rear its head by people abusing eval and string manipulation to build DSLs with new grammar in JS, which at that point, would be committing the same “evil” as Objective-J.

Comment by cromwellian — December 9, 2008

Mozilla had higher evangelizer budgets then 37signals, so JR ended up becoming the “JavaScript God” of the 21st Century instead of the guy *deserving* it – Sam Stephenson

Sam just isn’t that outspoken, if he wanted to have the same kind of influence as John he could, this has nothing to do with budgets.

Comment by lovejs — December 9, 2008

@Thomas: I know you’d like to spin it to seem as this is some sort of jQuery thing but in reality, it’s totally about *you* & your inability to verbalize your thoughts without being condescending or aggressive. And to reiterate, this type of behavior was brought to your attention via email several times so this is nothing new. Do you not remember Dion and I asking you to tone down your comments on Ajaxian?

Along with that, there have been many instances where Ajaxian readers themselves have asked you to tone it down AND to stop pimping your library in the comments. You need to look no further than this post where John Dalton was in agreement with me. You have no filter Thomas. You think something and you just type without thinking past the keyboard.

And yes, I am indifferent about you or your work. Remember, “indifferent” means “uninterested” and yes, *your behavior* has made me “uninterested” in anything you may work on. Unfortunately, when you continue to be rude and aggressive, even after promising both Dion & I that you would tone it down (should I pull up the emails?), I need to address it.

Again, this is all about you and your behavior Thomas. Don’t try to spin it into something its not. When you’re upset about something, you seem to have no way to filter your thoughts and articulate them in a way that isn’t aggressive.

Comment by Rey Bango — December 9, 2008

@lovejs: Yep, you hit it right on the head. There are a ton of very smart JS developers out there. Guys like Sam Stephenson, Alex Russel, Dean Edwards, PPK, Dylan Schiemann & others are amazingly bright & I wish I could personally work with all of them. What a learning experience.
John, though, is equally talented & goes to great lengths to publish his thoughts and interact with the community. And if you don’t agree with something he said, there are very productive ways of expressing that.

Comment by Rey Bango — December 9, 2008

I like to see people promote their work. But it shouldn’t be done by tearing down other solutions–that just loses potential converts because people may be happy with using the library you’re ragging on, and you’re effectively calling them fools.
.
Just pitch it this way, “I think my solutions is better because…” and then let us decide.
.
But by all means, don’t give up promoting yourself in the comments I want you solutions developers to be passionate.

Comment by Nosredna — December 9, 2008

I had meant to talk about the framework architectural issues the Johns original post kind of skirted around, but it seems I came kind of late to the wet-high-heels contest wearing a tutu. I’ll just go and get a beer (too).

Have a nice day all y’all :)

Comment by psvensson — December 9, 2008

@cromwellian (regarding missionary post)
Amen…!! ;)
.
@jovejs
You’re probably right about Sam…
.
@nosredna
I agree…
I think at the minimum when someone says something (good or bad) about a technology they should know what it’s about. The problem is that some people on this planet have such a huge reach and such extreme masses listening to them that when they say something it’s not really “their opinions” anymore – it’s considered “facts” and “the truth”. And also very often these same people also becomes affected by their own reach which makes them think they “know it all” and that they “don’t have to check up” the technology behind or they checked up a “similar technology years ago” etc, etc, etc…
.
This creates a down-dumbening of the entire world since one guy with “one success” can effectively *STOP* the entire evolution to a complete stand-still and is probably a lot of the reasons why we still haven’t gotten to those flying cars…
.
Ideas are ideas, and some ideas are great and have a lifespan of 50 years or more. But they ALL die. And they ALL die WAY too late. 300 years after we KNEW they world was not flat, 98% of the world still believed so… :|

Comment by ThomasHansen — December 9, 2008

haha. Gotta love the “Open Web.” Tone down, filter, .. -> love the “Open Web”.

/me Sits back with some popcorn.

Comment by ibolmo — December 9, 2008

@ibolmo: Hand me some popcorn and grab me some Excedrin while you’re at it. My head hurts because of the Open Web. :P

@Thomas: “I think at the minimum when someone says something (good or bad) about a technology they should know what it’s about.”

I’m 100% in agreement with you on this. If John (or anyone for that matter) is wrong, please stand up and say something. Just be cool in the way you say it. Follow Aaron Newton’s lead (of MooTools). He frequently posts some very well written pro/con type of postings which are generally balanced & objective (http://www.clientcide.com).

Comment by Rey Bango — December 9, 2008

@Rey
I will take your “link bait” and do it … ;)
.
(I guess http://ejohn.org can’t possible be anymore link baited anyway though so it doesn’t really matter anyway … ;)

Comment by ThomasHansen — December 9, 2008

@rboucher: I don’t think its disingenuous. The sc_super keyword is a tiny bit of syntactic sugar that saves you have having to remember the JavaScript-native method of calling super() in SproutCore. If you chose not to use this convenience method, it wouldn’t impact your SproutCore code at all.

That is a far cry from inventing a whole new language or trying to abstract JavaScript completely out of the picture.

I don’t have a problem with using build tools to optimize your code/make yourself more productive; in fact I think it is quite useful. I do think the code you write needs to be recognizable when you are debugging in Firebug or Webkit.

Comment by charlesjolley — December 9, 2008

@charlesjolley Ok, but in that case, Objective-J syntax is a tiny bit of sugar that saves you needing to type things like objj_msgSend and objj_allocateClassPair. You can still use the Objective-J runtime without needing to use the syntax at all. The syntax is a strict (and optional) superset to the JavaScript standard, not some completely different language; and the new syntax makes up a fraction of the overall code. This is a far cry from abstracting JavaScript completely out of the picture :).

At what point are build tools optimizing code versus actually generating code/changing the way you work? One syntax transformation is ok, but not two? How about rhtml? Is it fair to use that abstraction around html without saying that you no longer “embrace the native platform”? The HTML you see in Firebug from an rhtml template is less recognizable than the JavaScript you get from the Objective-J preprocessor in my opinion.

Of course im not critizing sproutcore’s use these abstractions since I clearly also think theyre a good thing, but I think it’s clear that Objective-J and Cappuccino “embrace” the native platform as much as SproutCore does.

Comment by rboucher — December 9, 2008

FWIW, I thought it might be helpful if I added a few comments on the underlying goals and philosophy of GWT, and why I think it’s a fruitful approach to web development here:
http://gwt-unofficial.blogspot.com/2008/12/gwt-javascript-and-correct-level-of.html

Comment by jgw — December 9, 2008

Here’s my response to John Resig about his rants about Managed Ajax Frameworks; http://ra-ajax.org/john-resig-is-wrong-dead-fucking-wrong.blog
.
OMG am I glad I do NOT have comments on my blog today…!
.
(Thomas running for cover now…!)

Comment by ThomasHansen — December 9, 2008

I don’t know that it’s helping to convince John or anyone else by going hyperbolic. I think reasonable people can disagree on issues like coding native or to the metal. It’s been going on for decades, like debates over whether a mixed economy is better than pure capitalism or pure communism. The extremes never convince one another.

Comment by cromwellian — December 9, 2008

Thank you Thomas, I am officially dumber for reading your blog post….

Comment by TNO — December 9, 2008

A jealous rant, something must have snapped.

Comment by lovejs — December 9, 2008

@Thomas
.
You ranting is not helping the rest of the members on ra-ajax. If I were to show a client the site for the Ajax framework and they saw that post, the deal would be off. I am surprised your the other members of ra-ajax put up with it.
.
The reason why you are not getting good publicity here on Ajaxian is because you keep ranting and raving in the wrong places. You have to get off the defensive and move to the offensive. Make you library do the talking for you. Right now the examples are slow, they lack features, and it is not that accessible.
.
I was glad to see ra-ajax hit the .NET market since the Ajax toolkit was sub par. With all your ranting it has turned me away from it along with many other developers.

Comment by epascarello — December 9, 2008

The argument over libraries reminds me of the fight over DreamWeaver VS Notepad VS TextMate VS Visual Studio VS vi. Everyone has a favorite for one reason or another. Some love auto complete, some love drag and drop, some like never using a mouse at all.
.
With libraries you can get your hands dirty at any level from hard core JavaScript to writing Java to spit out the code.
.
One choice I always say to people asking questions is: If it breaks can you fix it or do you have to wait on a patch? Will a bug be corrected in a quick turn around? Is there a good community built around the framework?
.
As the market keeps on maturing, I would not be surprised to see more and more partnerships between libraries. Some of these library wars remind me of the Netscape/ IE wars. Look where it got us today. :)

Comment by epascarello — December 9, 2008

@ThomasHansen:

1. Who I am. No one. Just a developer. I haven’t created any Javascript libraries or abstractions. I have otoh used at least a couple of both.

2. Who you are. I don’t really know much. Just that you have created or collaborated in creating at least one such abstraction.

3. Who you seem to be. No offense meant. But reading your comments here and your linked blog post you appear as: angry, slightly deranged, jealous. The post comes as nothing more than a rant. For the first half of it you get on a personal level with some insults and no reasoned argument at all about the topic at hand. In the second half you seem to actually go on to discuss John Resig’s arguments but actually end up either answering things he is not saying (not even in the quotes you cite, e.g. You quote him as saying that the most annoying thing Js libraries try to make simple is cross-browser support and then you try to argue that No! AJAX is not the most annoying!) or simply taking the “Bullshit!” and “My abstraction is so much better than you!” approach. (which is not giving reasons or arguments or even, I would say, an opinion).

4. Why I write this. It’s been a long time since I commented on Ajaxian. It’s also been a long time since I got the feeling that I was falling for the “someone is wrong on the interwebs!” trap. But I made the effort of remembering my password just to give you one piece of advice: I don’t care if you are actually right on this topic or not. Really I don’t care. Reading you actually makes me even more uninterested in your opinion on the matter. And if you want to make me care, if you want to get the attention that you think you deserve, learn to write. And I mean leanr to write to actually express an opinion in a reasoned and structured way. Maybe you shouldn’t write while you are angry. Maybe you should just throw away what you write in that state and rerwrite it again when you’re calm. Avoid ranting and insulting and personal attacks, focus on reasoned argumentation. Make a draft or at least a guide of what you are about to write on paper and then follow that. Feel free to just throw away all you’ve written and start again if you think you may be drifting into a rant.

Note: I hope you do not take this as offensive. I sincerely look forward to reading your opinions if you do manage to write them in a reasoned fashion, and that’s the only reason for telling you all this. But right now you do not get any attention because you do not make it compelling at all to read you.

Comment by Venkman — December 10, 2008

This argument reminds me of when hans reiser was arguing on the linux kernel mailing lists why reiserfs was a superior fs. Technically, he was often right, but the way he argued his point, with insults and accusations, made people very unwilling to give him the light of day. I’m going to have to agree with the group here that if someone’s argument about why their development tool is superior involves calling other people names, I’m just not interested in their tool, even if it is better.
.
Back on topic, I’m left to wonder whether the abstraction debate actually matters. The discussion of more or less abstract is a lot like vi vs. emacs. Which is better depends on your definition of “better”, which for most people includes personal taste and a lot of other “fuzzy” factors, including how well you can use it (personal skill set). What you see in the real world is that vi users and emacs users get as much done by the end of the day. And I suspect the same is true for the javascript abstraction debate. I suspect that jquery fans and ra-ajax fans get as much work done by the end of the day.

Comment by Joeri — December 10, 2008

@Venkman
Thank you for a pretty mature comment about my ranting (yes it was an emtional rant, and I admit that)
.
The problem is that when I try to be “reasonable and mature” nobody reads my stuff – - which *is* making me quite angry and jealous – yes I know. The problem is that I *know* I am right, and most *others-know-too*. At least those with skills and knowledge to check up my claims.
But the wrong guys are getting all the attention for the wrong technologies because it fits some journalist’s agenda, or some corporation’s agenda or because some guy with a blog have invested in the technology etc…
.
It’s very similar in fact to what happened to the music industry about 30 years ago. When the quality of main stream music dropped like a rock in the sea…
.
Hence the Britney Spears association…
.
And when it comes to something as important as the Open Web – which is our ability to actually remove lock-ins we’ve had on our necks as developers for soon to become 30 years, then giving the wrong solutions attention is wrong. And helps jeopardize this opportunity we now have…
.
I don’t really want to have this attention, but fact is unless Managed Ajax “wins” Open Web loose…! Microsoft has proven this themselves with their latest “Embrace jQuery strategy” – and then Silverlight and ActiveX “wins”… And that is a BAD thing, a REALLY bad thing…
.
You say I shouldn’t write when I’m angry, in fact I didn’t write that blog when I was angry. I consciously took two hours of walking my dog before I wrote it. I did it as a social experiment. And I succeeded – at least so far. You read it, right…?
I got your attention…?
And if that’s what it takes to have your attention, then I am willing to do it that way. Not because I want to, but because the Open Web needs it to prevail…
.
It worked for Bill Hicks, right…?
And I am willing to test it to see if it works for Managed Ajax too…
.
Anyway, thanx for reading and thanx for giving me great feedback…
.
PS!
If you want to see my “mature writings” all you need to do is click “backwards” at that blog, but none of that stuff gets the attention it deserves… :(

Comment by ThomasHansen — December 10, 2008

@ThomasHansen, what makes “Managed Ajax” and Open Web have do with each other ? what does MS wanting to use JQuery have to do with any of this…
“but fact is unless Managed Ajax “wins” Open Web loose…!” … how???
U have yet to come up with any argument to your favor in this discussion that makes any sense at all.
“…And I succeeded – at least so far. You read it, right…?” so what did u succeed in? other than make a bunch of Ajaxian’s roll there eyes at your comments. (and NO u did not make me wanna read your blog since u act like spoiled child).

Comment by ReneKoch — December 10, 2008

@ThomasHansen: “I got your attention…?
And if that’s what it takes to have your attention, then I am willing to do it that way.”

Then you’ve completely failed. You got my “slightly prejudiced attention”. And you only got it this once. The fact that you write that way, added to the fact that you confess you’re willing to write that way just to get my attention, completely destroys any interest I might have in reading you. Sorry, but that’s just the way that it is.

Comment by Venkman — December 10, 2008

Me: Just a Web Developer/Designer

About 4 years (before YUI, GWT, when Dojo was very young and tibco GI cost $$$$) I wrote an entire GUI/Widget toolkit in JS – why? Because as the company I work for needed to build rich web apps but the (Java/C) developers didn’t want to learn web technologies… about a year later they binned my toolkit and went with Echo2 so they could just write Java.

It “felt” wrong then, it feels wrong now… the developers (where I work) would choke at the suggestion that they should write C and cross compile to Java or visa-versa… they would rather spend their time learning and understanding the required language…

For what it’s worth… @ThomasHansen: I read Ajaxian daily and have come accross your posts before. From what I recall they mostly consist of pluging your framework and/or abusing others in the industry – IMHO, and considering I’m a “consumer” of such frameworks, not the best way to market your product or build a brand…

Comment by wukfit — December 10, 2008

@Rene
Regarding; “U have yet to come up with any argument to your favor in this discussion that makes any sense at all.”
.
Because when people discovers the fact that it’s virtually impossible to build anything slightly more advanced then digg2-0.com in jQuery – say like for instance an accounting system or a CRM system then they will turn away from Ajax and go with ActiveX2.0 technology like Silverlight or Flex – since they feel that “Ajax is broken”…
.
@Joeri
These argument are not like the ones going back and forth between Vi and Emacs. A better comparison would be to use Assembly versus C or C versus C++ or C++ versus Java…
.
@espascarello
“Right now the examples are slow”
I have written about that here; http://ra-ajax.org/why-is-ra-ajax-so-slow.blog

Comment by ThomasHansen — December 10, 2008

“This argument reminds me of when hans reiser was arguing on the linux kernel mailing lists why reiserfs was a superior fs. Technically, he was often right, but the way he argued his point, with insults and accusations, made people very unwilling to give him the light of day”

It could be worse. He could have killed you.

What, too soon??

(sorry, I know it’s not in especially good taste, but sometimes a joke is just sitting there like a big-ass pinata that just HAS to be wacked)

Comment by fzammetti — December 10, 2008

Flightless bird.

Comment by psvensson — December 10, 2008

“Because when people discovers the fact that it’s virtually impossible to build anything slightly more advanced then digg2-0.com in jQuery – say like for instance an accounting system or a CRM system then they will turn away from Ajax and go with ActiveX2.0 technology like Silverlight or Flex – since they feel that “Ajax is broken”…”

Try this on for size:

“With ra-ajax, there’s no need to switch to proprietary frameworks like silverlight or flex when your business requirements become more complex. Application scalability is important to us, so with our technology you can very rapidly create the simplest of sites, or the most complex multifaceted dynamic applications, all while leveraging the skills you already have. How is this possible you ask? well…

*feature x means you don’t have to foo any of your bars, just to lex your cross browser parsers
* our dynamic recompilation engine increases the efficiency of your application without having to refactor your existing codebase
* The compact syntax of your rollybar content system means that you can get your business goals expressed on the web, faster, without having to write a single line of html, or worry about IE6″

It is very possible to associate your framework with many positive things, and get attention, without having emotional and publically embarassing explosions. Focus on why your framework is better. If stating the facts about it isn’t good enough, then maybe that should tell you something.

Comment by Breton — December 10, 2008

@psvensson: That is quite possibly the most clever way I’ve ever been insulted :)

Comment by fzammetti — December 11, 2008

@Breton
That is probably among the most beautiful things I’ve ever read :)
I assume it’s OK I copy it…?
.
That sentence actually got to me to such an extend that I followed your link and saw your “Web School Awesome” articles – really great work…!
.
Listen, I *think* we have some overlapping goals after reading your blogs and seeing your comment, if you send me an email to thomas@ra-ajax.org I would appreciate having some email conversations exchanging some thoughts with you…
A nice start would be if you could let me know why you did those HTML articles…

Comment by ThomasHansen — December 11, 2008

@Thomas,
I think you may get some enlightenment from this presentation. It sums up decently well some reasons why there is a resistance to your line of thinking with a significant group of people:
.
http://docs.google.com/Presentation?id=dfxgjqrf_196fr6ct4f2
.
Not that I use Dojo or anything, but the Thin Server Architecture crowd I do subscribe to. Maybe you can see where a few of us are coming from.

Comment by TNO — December 11, 2008

@TNO: I would have to agree. I develop a suite of business apps (php). A common theme is that our performance bottlenecks are often related to server capacity or client-server network capacity. Latency especially can really obliterate a typical ajax app, due to the excessive roundtripping you get when ui state is spread across the client and server.
.
We’re moving to a thin server architecture out of necessity. We need to grow our app capability-wise, but we can’t get more server hardware to throw at the problem. Also, we need to give reasonable performance over high-latency connections, so an architecture that’s based on lots of rpc calls is out of the question. In practice, the only thing that works for me is to treat the server as evil, only to be contacted when it can no longer be avoided.

Comment by Joeri — December 11, 2008

@TNO
http://ra-ajax.org/killing-the-myths-of-managed-ajax-frameworks.blog
.
Here’s my answer to that presentation, taking one point at the time … ;)

Comment by ThomasHansen — December 12, 2008

@Thomas:
It would be nice if you allowed comments on your blog. Would it be to much trouble to allow it especially for this topic? (plus it would help steer me away from trying to follow the same discussion in 2 places)

Comment by TNO — December 12, 2008

@TNO
Perfect link. Encapsulates for me exactly why I wouldn’t ever use Ra-Ajax. Thanks

Comment by paulhan — December 12, 2008

@paulhan
I’m not really sure if you realize this, but I think I pretty effectively proved every single point in that presentation to be roughly 110% *wrong*…!
(That is in *my* link)
.
[flamebait]
But I guess I can’t get you all, the top 5% smartest among you is enough… ;)
[/flamebait]
.
Seriously, if you prefer PHP (yes, I followed your link) then why don’t you *say* so…
Ra-Ajax is (probably) only, at least *mostly* for people on .Net / Mono from *before*…
I’m to threat to YOU…!

Comment by ThomasHansen — December 12, 2008

@TNO
Yes, I think we will soon…
Lot’s of people have been asking for “commenting support”, in fact enough to make it worthwhile… ;)

Comment by ThomasHansen — December 12, 2008

@Thomas,
OK, so I’m going to bite again.
I notice you studiously avoided the issue I raised on John Resig’s blog and in your own denial of the link provided by TNO. That is, that people will not put up with a half second+ delay every time they click something.
And there’s more:
Where’s the documentation.
How do I integrate widgets that you haven’t provided, like a treetable, or a toolbar for instance
Can I be assured that if the four developers go on holiday, that someone will be there to answer my queries.
Can I be assured that if I ask what seems to be a dumb question to you. that I won’t be compared to Britney Spears,
And that is the real reason I’ve bitten, to register my disgust at your depiction of John Resig. People who do that to anyone are lower than a snake’s belly IMV.
You;ve flown in on a very interesting thread, well reasoned by everyone, made a lot of noise and shit all over the place like a seagull.
I’ve made my points. I will never again give you the oxygen of a reply.
Paul.

Comment by paulhan — December 13, 2008

@Thomas:
Due to the length of my response to your blog post, I’ll wait for you to open your comment system to reply.

Comment by TNO — December 13, 2008

@paulhan
What issues…?
Unless you “read something else then what I wrote”, I think I made it really fucking perfectly clear for you…
Documentation is there, it’s not even very well hidden, though if you’re so interested in PHP as you obviously are – why do you care…?
This is .Net or ASP.NET, which for you (probably) means that learning ASP.NET would be a gazillion times more important then reading the Ra-Ajax docs…?
.
Regarding “holidays”, what guarantees do you have in that John doesn’t figure out he’ll spend the “next year” in China or something studying Buddhism…?
.
About me calling you Britney Spears – unless you say something really stupid like “all Managed Ajax libraries sucks” like John did I think you should be relatively safe … ;)
.
Now whether or not I’m “lower then a snake’s belly” or not, that doesn’t really matter since people like me and the guys behind GWT etc will anyway prove to deliver libraries able to put the “DHTML guys” *out-of-business*…!
.
So in one year from now you’ll either be doing Windows or Apache sys-admin works unless you “bite” on the Managed Ajax parts. And in case you still haven’t understood why – the “Managed Ajax guys” can deliver a *gazillion* times the functionality in a *gazillion’th the time* the time frame…
.
You’re trying to make this about me, but really it’s about YOU…!
Either you “bite” or you’re *fucking-history*, there’s nothing *I* can do about that except trying to show you “the light”.
And if I was an asshole, I wouldn’t really care, right…?
Though my problem is that I *do* care…!
.
“Pearls for swines” is an old biblical saying, I am not really sure if it fits here, but it truly feels like it…
.
But keep to jQuery by all means, it probably is the “middle of the road” for at least a year or so more. Though *when* (1-2 years) you end up becoming the “sysadmin” of people doing *real* web applications development, then don’t blame me…
I tried…!!!

Comment by ThomasHansen — December 13, 2008

Leave a comment

You must be logged in to post a comment.