<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>subvisual &#187; dojo</title>
	<atom:link href="http://subvisual.net/tags/dojo/feed/" rel="self" type="application/rss+xml" />
	<link>http://subvisual.net</link>
	<description>busy days, full head… must write this stuff down.</description>
	<lastBuildDate>Fri, 23 Jul 2010 23:04:34 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
		<item>
		<title>Selecting a framework for JavaScript and Ajax development</title>
		<link>http://subvisual.net/ideas/selecting-a-framework-for-javascript-and-ajax-development/</link>
		<comments>http://subvisual.net/ideas/selecting-a-framework-for-javascript-and-ajax-development/#comments</comments>
		<pubDate>Tue, 20 Oct 2009 22:47:20 +0000</pubDate>
		<dc:creator>adam</dc:creator>
				<category><![CDATA[Ideas]]></category>
		<category><![CDATA[ajax]]></category>
		<category><![CDATA[dojo]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[jquery]]></category>
		<category><![CDATA[mootools]]></category>
		<category><![CDATA[tools]]></category>
		<category><![CDATA[yui]]></category>

		<guid isPermaLink="false">http://subvisual.net/?p=14</guid>
		<description><![CDATA[A dilemma vexes me at the I start of almost every new project: Which JavaScript library should I use this time? Which one will give me a little more help to get the job done faster and make my job &#8230; <a href="http://subvisual.net/ideas/selecting-a-framework-for-javascript-and-ajax-development/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>A dilemma vexes me at the I start of almost every new project: Which JavaScript library should I use this time? Which one will give me a little more help to get the job done faster and make my job easier and more fun? I am motivated sometimes by dissatisfaction and frustrations with my choices on previous projects, and sometimes by curiosity and desire to try something new to see if it is better.<span id="more-14"></span>Whatever the reason, I find myself continually reassessing the tools I am using. This is not altogether a bad thing for a developer to do — the technology and open source libraries all change at a fast pace — and the abilities of one library&#8217;s latest release may just be what suits a specific project. It&#8217;s good to stay abreast of the developments. But one can get caught spending too much time sharpening one&#8217;s axe (or in this case, examining them on the shelf) instead of getting on with the job of cutting down trees.</p>
<p>I&#8217;ve seen Abraham Lincoln&#8217;s quote,  &#8220;<em>If I had six hours to chop down a tree, I&#8217;d spend the first four hours sharpening the axe</em>&#8221; used in the context of software programmers&#8217; obsession with refining their tools instead of getting on with the job, but thinking about it, the tree metaphor doesn&#8217;t really apply, we&#8217;re not cutting down trees, we are building unique structures. The point is, choosing tools can be a distraction, and that remains true.</p>
<p>There is large overlap in features and capabilities across the available JavaScript libraries, and the good ones all perform as well as each other. In other words they can all do the job, so just choose one and get on with it. But despite their similar capabilities, they all work in different ways, so to jump from one to another has the friction of a change in direction or a new learning curve, which can only detract and add strain to the development process.</p>
<p>The only way you are going to get the most out of an open source code library is to use it, and learn about it. Use it some more and get to know it better. Use it a lot and  know it backwards. A JavaScript library is not a drag and drop or copy and paste replacement for coding. It will not make up for your lack of ability or willingness to understand JavaScript programming paradigms.</p>
<p>If there&#8217;s any advice it&#8217;s make a choice and stick to it. You definitely need some help ironing out the differences between browsers and at least standardising your access to the DOM and Events. The light weight of most libraries&#8217; core files make this worthwhile. The rest is subjective. Here are some of the issues I have encountered.</p>
<h3>Administrative or Expressive?</h3>
<p>If there is one major differentiator between the available JavaScript libraries, it&#8217;s whether they ship with a standard set of UI widgets, or at least a standard capability of making widgets and skinning them so they look like they come from the same family. This split seems to reflect the different purposes of libraries, and their possible developer (functional) or designer (visual) bias. So depending on the needs of your project, and the people who will be coding with the library&#8230;</p>
<p>For building the interface to a CMS or other application-type interface, that should follow well established interface design patterns, a good component or widget library is essential. You need your datagrid and tabs and layout and menus to look like they belong together. If this is part of your requirement, limit your selection to <a href="http://developer.yahoo.com/yui" target="_blank">YUI</a>, <a href="http://www.dojotoolkit.org" target="_blank">Dojo</a> or <a href="http://www.extjs.com" target="_blank">ExtJS</a>. Application developers and programmers from a more structured server-side background may feel more at home with these.</p>
<p>If your use is less administrative, and you are looking for a library to support a tactile and dynamic user experience, within the context of a branded or expressively designed site that doesn&#8217;t use standard UI widgets, consider <a href="http://mootools.net/" target="_blank">MooTools</a> or <a href="http://jquery.com/" target="_blank">JQuery</a>. The learning curve on these is not as steep, and implementation is often simpler. These libraries have more traction in visual design communities, and in my experience, visual designers who are willing to code, and client side web developers will be comfortable and familiar with these.</p>
<h3>Open source?</h3>
<p>Licensing can be an issue. As far as I know, all bar one of the libraries I mentioned above have a liberal open source license, which mean you can use it freely wherever you like. ExtJS is more restrictive. You can use it for free under GPL, which means the project you use it for must also be GPL. If licensing their bespoke CMS as open source winds your client up the wrong way, and you still want to use ExtJS, there is a paid option.</p>
<h3>Personality</h3>
<p>A little personality goes a long way, and this may be the deciding factor for you. Do you feel in your heart you can get along with this library or that one. Have you fallen in love yet? A library&#8217;s community, its inventors or corporate connections have a huge sway in the emotional connection you as a developer/person will make. And lets face it, you&#8217;re going to be spending a lot of hours together.  Each library has its community of developers that hang around the forums to help others and sing the praises of their choice in JavaScript library. Sometimes the praise is evangelical, sometimes it is dismissive and arrogant. But the technical help among these communities is almost always useful. Some libraries are organisationally structured to allow more direct community contribution to the project codebase, and embrace the <a href="http://en.wikipedia.org/wiki/The_Cathedral_and_the_Bazaar" target="_blank">Bazaar more than the Cathedral</a>. The others, while releasing code as open source and accepting community input, are structured more centrally around a single person/genius inventor or an internal team.</p>
<h3>And the winner is&#8230;</h3>
<p>The developer. You can only win with the choices you have out there. In case you are wondering why I have not mentioned <a href="http://www.prototypejs.org/" target="_blank">Prototype</a>, or any other popular libraries here. That&#8217;s because I&#8217;ve never used them, or if I did, I didn&#8217;t get on with them well enough to comment.</p>
]]></content:encoded>
			<wfw:commentRss>http://subvisual.net/ideas/selecting-a-framework-for-javascript-and-ajax-development/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>
