Dojo is a modular JavaScript toolkit that makes building richer web UI's much easier.

Dojo builds on a fast, lightweight base that provides a competitive set of features (DOM traversal, AJAX, animations, event handling) at the same size as many of the alternative "lightweight" toolkits.

On top of that base Dojo provides easy access to an extensive collection of optional modules, including a widget framework that focuses on accessibility and internationalization, 2D and 3D charting and vector graphics, advanced math functions, offline capabilities, cryptography, and much much more. It also comes with a build system that collects and minifies your files into layers that you can include in your page as needed to simplify deployment and improve performance.

Journal Entries

No entries yet. Link your entries with 'dojo' to include this project.

Ohloh Analysis Summary

Updated 05 Jul 2008 22:18 UTC


Ratings & Reviews

Community Rating
4.2/5.0

Based on 25 user ratings.

Your Rating

Click to rate this project.

Links

5 links submitted so far. Submit your own links.

News

Edit RSS feeds.

    Alex Russell: LHB: Same Story, Different Tune

    I’m not sure how I missed it for so long, but I’m now reading every word of the Linux Hater’s Blog. It’s beautiful catharsis, and I say that as someone who used to serve as President of a university LUG and who writes open ... [More] source software for a living.

    Like the author of LHB, I’ve written my share of low-level Linux stuff and shudder in horror and how backward the linux desktop still is. X11 is an abomination and configuring sound or wifi or some new-ish device…well, I still have those scars. It wasn’t that long ago that I was hacking together bits of kernel patches to get an early firewire iPod (a gift from Jennifer) working on my SuSE desktop. And I was using SuSE because it usually required the least futzing of the then-available distros. Even when Linux was my desktop OS of choice – I had since climbed down from my brief flirtation with OpenBSD – it was blindingly clear to me that building my own packages was a fool’s game. My time is simply worth more than that. Perhaps the most cogent point I took away from reading the LHB archives is that building professional code for the “Linux Platform” is nearly impossible, not because it can’t be done, but because it costs too damned much to justify the costs. The Linux crowd seems to mis-value the immediate vs. long term costs of choice. By failing to provide a binary-friendly environment, the Linux world creates conditions only friendly to Open Source software, crippling their platform and robbing it of the capital investment that would allow it to truly compete. Many people who suffer through some Linux distro as their desktop environment no doubt see this as a good thing. I, however, need to get some work done. The LHB cogently lays out why everyone else on the planet whose time is worth more than what Amazon charges for a CPU-hour on EC2 similarly dismisses Linux for anything but servers.

    The almost religious belief that choice is good ignores the inability of most people (myself included) to fully judge the long-run costs of any given technology decision. Oddly, the web browser world seems stuck in a similar position. Choice in browsers is promoted like some sort of panacea, when in fact our big problem isn’t choice, it’s that browsers simply can’t natively attempt the feats we need them to accomplish. Smart people don’t replace their browsers, they use what works until it doesn’t any more. No wonder it’s taken Firefox so long to gain market share. Like linux distros, browsers evolve in hodge-podge was, never quite tracing a straight line toward real progress. The refrain of “standards will save us” seems to ignore the reality that, like the LSB, the existing W3C standards are absolutely insufficient to address the problems at-hand. Both CSS3 and HTML5 are nice first-stabs, but they don’t get us “there”. For Linux, the LHB points out that there’s zero reason to not ship “the same bits”, and for the web, the issue is that content can’t tell the browser “no, really, use that renderer”. Interestingly, Microsoft tried to convince the world that we should version our content and the standards zealots just shot them down without really considering the consequences. Instead of making the world safe for a better web, the HTML standards geeks instead did the most powerful thing they could do to prevent it from materializing. In essence, they preserved “choice” at the expense of utility. What a waste. Seriously, if these are the deep thinkers on “our team”, why not go just use Flash to build everything?

    Many people have gotten worked up about Microsoft’s role in killing Netscape (although they tend to minimize Netscape’s role in its own demise), but ISTM that the real long-term harm done here has been to remove the renderer as a profit center. Once Microsoft set the price of the browser at “free” they effectively killed browser evolution as part of anything but an OS-based platform play (in part, to preserve their existing OS-based platform play). Interestingly, then, web-based services have routed around the difficulties of the platform to date to deliver apps that seemed well out of reach of HTML 4.01 as implemented by IE 6, but well, we’re a plucky lot, aren’t we? The most progress being made right now seems to be coming from a large software vendor in Cupertino with an OS-based platform play that absolutely needs the web to sparkle in order to drive adoption of their OS and hardware.

    Like Linux, the web will probably lurch forward this way for the forseeable future. The standards zealots smacked down the IE team so hard on content versioning that I don’t think anyone else will have the testicular fortitude to try again for a good while. It’s down to the whole “vision thing”, and the web standards crowd doesn’t seem to have any. It’s about time someone took the punch bowl away from them once and for all. The open web needs real progress too badly to stall any longer. [Less]

    Alex Russell: Uxebu Hangs Their Shingle

    Several Dojo’s most prolific European contributors have banded together to form Uxebu, a new consultancy centered around Dojo and JavaScript (blog here). SitePen recently expanded to the UK and while we’re doing lots of business in the ... [More] EU, it’s an exciting time to be working with Dojo as the demand is very high. I’m tremendously excited to see that Nikolai, Wolfram, and Tobias are stepping in to help fill the need! Given the quality and quantity of their contributions to Dojo, I expect great things of their new firm.

    Congrats guys! [Less]

    Ben Lowery: A Fresh New Look

    If you’re seeing this in a feed reader, come on by the site and check out the new look. I went for a simple, easy to maintain look with minimal graphics for a fairly speedy page load. I also pulled out a few things that were slowing down the ... [More] site: a plugin that was inadvertently pulling in the YUI library, some supposedly fancy Amazon script that showed previews of products when you hovered over their links, and biggest of all, Google’s Adsense. I’m still pulling in Google Analytics, but it’s the last thing on the page and shouldn’t affect load times too much. I wanted something simple and clean and easy to read, and I think I’ve got that.

    I also spent a fair bit of time trying to get the typography right. Fancy, no?. I really enjoy The Elements of Typographic Style Applied to the Web and I wanted to try my hand at working within their framework. For example, the asides follow the sidenotes section. Getting the vertical rhythm right was more challenging than I expected, especially with photos and other non-text elements that are inherently pixel-sized. I was trying to get everything working on a em-based grid at first, but eventually caved in and ended up with a 50 by 50 pixel grid on which to base the layout. There’s always more things to learn…

    This was my first Wordpress theme from scratch and I was pleasantly surprised by how easy it was to develop. I’m tracking Wordpress’ SVN and the theme using Git. That too has been a fun learning experience; I’m getting much more comfortable with git, git-svn, and git-submodule as a result. If anyone is interested, I can write up a bit on how the whole development process fits together. In the meantime, here’s the code for the theme and my Wordpress mirror with that theme as a submodule.

    Git really scratches an itch I’ve had for a while with SCM systems. I started out with zip files, then Visual Source Safe, then CVS and Perforce, then Subversion. I liked Perforce quite a bit, especially the branch and merge support, and Subversion works just fine, but the branching and merging support in Git is just phenomenal. I’ve built up a little library of reading material on Git if you’re interesting in learning more; I’d start with Git from the bottom up by John Wiegley.

    Going forward, I’d like to extend the blog a bit and add some features using Dojo. It only seems appropriate. Maybe Ajaxy inline-comment loading? Real-time search? Fancy graphs? We’ll see.

    As always, feedback is welcome and the comments are open. [Less]

    Ben Lowery: Dojo’s little gems

    I really enjoyed Mitch’s article on YUI Lang’s little gems and thought it might be handy to see how to do the same things with Dojo. Here’s the translation:

    Trim
    var trimMe = " trim me please ... [More] ";

    //YUI
    var trimmed = YAHOO.lang.trim(trimMe);

    //Dojo
    // - exactly the same
    trimmed = dojo.trim(trimMe);
    Substitute
    var processText = function(key, value) {
    return value.toUpperCase();
    };

    //YUI
    YAHOO.lang.substitute('Hello {world}', { world: 'earth'}, processText);

    // Dojo
    // - Named placeholders are prefaced with a $
    // - No support for extraValues from Mitch's example
    dojo.require("dojo.string"); // not in base distribution
    dojo.string.substitute('Hello ${world}', { world: "earth" }, processText);
    Later
    // YUI
    // - Docs indicate this return type void, which is a timer object?
    YAHOO.lang.later(200, foo, "method", [{ data: "bar" }]);

    // Dojo
    // - No abstraction for timers in Dojo
    // - Can use hitch to set calling scope for function
    setTimeout(dojo.hitch(foo, “method”, { data: “bar” }), 200);
    // or
    setInterval(dojo.hitch(foo, “method”, { data: “bar” }), 200);
    Merge
    var defaults = { color: "red", answer: 42 };
    var config;

    //YUI
    config = YAHOO.lang.merge(defaults, { color: "blue" });

    //Dojo
    // - mixin takes a variable number of arguments
    // - Values are written to the first object, hence passing {}
    // - Later values have precendence
    config = dojo.mixin({}, defaults, { color: "yellow" }); [Less]

    Ben Lowery: Commands

    My contribution to the meme:

    blowery@hermes:~$ history 1000 | awk '{a[$2] }END{for(i in a){print a[i] ” ” i}}’ | sort -rn | head
    170 cd
    78 ls
    55 sudo
    31 svn
    18 scons
    18 nm
    12 less
    9 ... [More] grep
    8 rm
    8 make
    As for why these, here are some rough guesses:

    cd
    obviously we use a lot of directories and I end up moving around quite a bit.
    ls
    implicitly tied to cd usage I think. And I have a lousy memory for what file names in what dirs.
    sudo
    This meme caught me while I was setting up a new working vm instance, hence all the sudo. Normally, I don’t think I use it quite so much.
    svn
    svn is our source control management tool of choice
    scons
    scons is our build tool of choice
    nm
    nm lists the exported symbols in a library. I was tracking down a problem with MySQL and a broken exported symbol during the aforementioned instance install.
    less
    less is my pager of choice
    grep
    handy for finding things
    rm
    handy for removing things. I think this was related to MySQL causing me grief

    make
    everyone else’s built tool of choice and I was installing a lot of everyone else’s stuff [Less]

Read all Dojo articles…


Who uses Dojo?

Anon32 Anon32 Anon32 Anon32 Anon32 Anon32 Anon32 Anon32 Anon32 Anon32 Anon32 Anon32


Where in the world?





Project Cost

This calculator estimates how much it would cost to hire a team to write this project from scratch. More »
Include
Codebase 213,854
Effort (est.) 54 Person Years
Avg. Salary $ year
$ 2,991,795