I've spent a good amount of time trying to teach myself
Dojo and
Django. Django is fabulous; an application server written in
Python, and my only major complaint about it is that the SQL comparators are surreal. The surrealness leads to a laziness that make SQL operations much more efficient than
RailsOn the other hand, Dojo has been a nightmare to learn. I have two major complaints about Dojo: first, and least, is that it uses a kind of browser exploit to do its "include" and "require" operations. I have to wonder why they just couldn't tell us the library requirements ahead of time, the way
Ext-JS does (although I don't use Ext-JS outside of work because of the licensing queasiness), and let us live with the overhead demands. I understand that in some ways the objective was to reduce overhead to just what you needed, but it obscures a lot of what's going on inside Dojo.
The more serious complaint I have about Dojo is that the downloads page contains no links to the source code. The current release, 1.2.3, comes in an obfuscated, compressed form designed for easy over-the-wire transmission. But I have to wonder if the download is the real heavyweight of the javascript operation.
The
only way to get the source-level documentation and actually learn what's going on inside Dojo, to develop and understanding of what you're getting into, is to get the release source via subversion:
svn co http://svn.dojotoolkit.org/src/tags/release-1.2.3 dojo123
Once I got it and started reading the source, it made a lot more sense to me, but until that, I was more or less following recipes in the O'Reilly Dojo book without understanding what the heck I was doing. I can't stand development tools that obscure what you're doing, especially not on something as advanced, and as fraught with fragility, as Javascript programming.
My favorite essay on the subject is
Ellen Ullman's The Dumbing Down of Programming, in which she writes of Microsoft's Visual Studio suite:
In this programming world, the writing of my code has moved away from being the central task to become a set of appendages to the entire Microsoft system structure. I'm a scrivener here, a filler-in of forms, a setter of properties. Why study all that other stuff, since it already works anyway? Since my deadline is pressing. Since the marketplace is not interested in programs that do not work well in the entire Microsoft structure, which AppWizard has so conveniently prebuilt for me.
This not-knowing is a seduction. I feel myself drifting up, away from the core of what I've known programming to be: text that talks to the system and its other software, talk that depends on knowing the system as deeply as possible. These icons and wizards, these prebuilt components that look like little pictures, are obscuring the view that what lies under all these cascading windows is only text talking to machine, and underneath it all is something still looking for a BASIC interpreter. But the view the wizards offer is pleasant and easy. The temptation never to know what underlies that ease is overwhelming. It is like the relaxing passivity of television, the calming blankness when a theater goes dark: It is the sweet allure of using.
Yeah, it's like that. The last thing I want is for open source projects to start doing the same thing to me, "protecting" me from the details.