Login Register

Dojo 0.9 lands softly.

We're excited. Very excited.

The Dojo Foundation is proud to release version 0.9beta of The Dojo Toolkit. Though still in Beta, 0.9 is a better, faster, and more cohesive way to incrementally upgrade the Open Web and make your applications shine.

The Toolkit has undergone a massive transition: countless numbers of community man-hours, seemingly endless questioning of sacred cows and assumptions, and hard work towards a unified goal have gone into producing this milestone release. There are warts in this beta, and you can help us even them out by filing patches and bugs, add comments and content to the Porting Guide, and start pushing the components to the edge.

While the 0.4.x branch helped us build great applications and learn a lot, 0.9 is a fresh start. Over the next couple of weeks we'll be talking more about what decisions went into 0.9 and why we feel it's the best Dojo ever, but some points bear emphasis:

SPEED: Stripped of all 'excessive', redundant, and backwards-compatible code, the new Dojo core is a speed-demon. It consists of a streamlined, compact Base (aka: dojo.js) which provides a plethora of reliable features for you and your application to expand upon. Our goal was to keep the new Base under 50K on disk and we're happy to say that even with the many improvements to it since M2, Dojo Base still clocks in under the wire and gzipped it's even smaller: 24K. The base of the new widget system (dijit.js) is even lighter, weighing in at 21K on disk and 11K on the wire.

Accessibility: one of the main goals of Dojo's 1.0 release is accessibility. We want to put the power to build great web applications in everyone's hands, and that means applications that are also great for everyone. Dijit (the dojo widget system) is striving to make all aspects of the Dojo Toolkit accessible via keyboard navigation, accommodate screen readers, and work in high-contrast mode for visually impared users, while still maintaining its elegant and customizable structure. Much of that work is already done as of Beta and it shows. Try tabbing around the examples on IE or FF and you'll see how a focus on a11y makes the components we provide better. Again, our heartfelt thanks to Mozilla and IBM as well as David, Simon and Becka11y (the a11y team) for their continued efforts on everyone's behalf.

Theming: Dijit is entirely customizable. Shipping with a default theme named 'Tundra', a structure has been established with which to create your own personalized sytle of Dojo, on a per-page or per-node or per-widget basis. All dijit look and feel is CSS-based, and easily extendable. Look at any of the Dijit examples and you'll see that there's no magic about how the CSS gets loaded or applied. Want to provide your own theme? Just create an allegory to tundra.css and you're off to the races!

Documentation: a new version of our venerable web-based/html API tool is is in the works. Following a strict style guide, and documentation standards, we're working hard to make Toolkit code nearly self-explanitory. Where it's not, the new API system supports in-place updates of the documentation via the web interface and comments on any node so that you can share your experiences, common usage patterns, and frustrations about any API with yourself and your fellow Dojo developers. We expect this new tool to be integrated with the main Dojotoolkit.org site very soon.

While a few of the public API's may change before 1.0, those changes will be minimal, and we are confident Dojo is stable enough to being building apps with. And though we've been working hard these last months, like any open source project, it is almost entirely community supported. We need your help and feedback to pick out all of the world problems that occur. Whether you file bugs, contribute to the book, help flesh out the porting guide, or answer questions in the forums, everything you contribute helps and is greatly appreciated.

We would like to thank everyone involved in making this milestone beta release a reality. Without tremendous personal effort and organizational fortitude and support, 0.9 would not be happening. We've taken a great risk and it has only come this far because the Dojo Team pushed it this hard. In particular, Eugene, Adam, Scott, Owen, Becky, Craig, Bill, Tom, Torrey, Doug, Jared, the rest of the new committers, and the old hands who have so deftly guided the process all deserve hearty, well-earned thanks. Salud.

Great job!

Great job, folks; I can't wait to try it out. Two questions:

1) We're planning our releases over the next few months; is there any estimate for how long it will take 0.9 to go to release?
2) I don't see the Grid widget in 0.9; does this mean it's out as a feature for 0.9?

Thanks so much for all your work; you all are amazing.

Hey Xander76, We're

Hey Xander76,

We're expecting 0.9 final sometime in late July, but that might slip. The gird is definantly still in scope, but we're not sure what form it will be in for 0.9 final.

--
Project Lead, The Dojo Toolkit 
President, The Dojo Foundation

Thanks, Alex

Thanks, and good luck with the grid.

tab container

foa, great indeed, am shocked to see the results :)

currently i am developing some serious web application and using the tabcontainer widget on critical places.( dojo 0.43)
i could not locate the tab container tester on the link you provided.. any bad news for me ?

see

see http://download.dojotoolkit.org/release-0.9.0beta/dojo-0.9.0beta/dijit/tests/layout/test_TabContainer.html

In 0.9, many of the dijit widgets live in the layout/ and form/ directories to denote their purpose more clearly.

--
Project Lead, The Dojo Toolkit 
President, The Dojo Foundation

comment after some sleep.

thanks alex, its 04:09 AM here, i think i should get some sleep.

re

Its a great news that version 0.9beta is released i think i will write about it on my blog btw. Thanks Alex for the link it helps me alot.

My blog: Tom

Wouhou !!

You did such a great job guys ! Thank you for all your work !

TaskBar

I am studying the new cool 0.9 version, but I don't see the TaskBar widget.
Maybe now does it have a different name ?

Widget Porting Guide

as an added bonus, our Porting Guide 0.4 → 0.9 will explain all the new locations and usage of each widget individually.

preview: TaskBar won't be back in dijit. A Basic 'dock' system will land in Dojox soon, but is marked experimental. There is no FloatingPane in dijit, however there is a usable one in dojox/layout [again, experimental] ...

windowing system inside a browser

I am very worry about this:

" However, there is no taskbar, no minimize/maximize/restore functionality, and no resize functionality. These features won't be ported because Dijit isn't interested in implementing a windowing system inside a browser."

For my applications the windows are very important, so maybe i don't need of TaskBar widget but the
FloatingPane widget is basic. I saw a FloatingPane widget in dojox but if the dojox modules could potentially disappear entirely my work becomes too RANDOM.

Where do you see anything

Where do you see anything that says dojox could disappear entirely? That sounds more like a rumor you are trying to start, which is completely not the case. DojoX is just like Dijit, a dojo project that IS NOT going away.

-Karl

here

I read "dojox modules could potentially disappear entirely" here http://dojotoolkit.org/book/dojo-book-0-9/part-5-dojox-extensions-dojo-0, but I am very happy that it isn't true :-)

both right

karl is: dojox is a project, not going anywhere.

salvatore is: each individual project in dojox could potentially go away, but is very unlikely. [it's just a way to keep devs maintaining their code, and not have dojox turn into a wasteland of unfinished unusable projects] ...

the guide is right, it's just a 'disclaimer' ultimately.

Dijit vs. DojoX

Unlike past versions of Dojo, going forward, core and dijit have very focused goals and promises. What we mean by this is that we promise to our users that anything in core or dijit by the 1.0 release is stable, well tested, thoroughly documented, has accessibility support (dijit only for that of course), has a clean, consistent API, is themeable, etc.

Anything that is not guaranteed to meet these criteria is eligible for inclusion in DojoX. If there is a widget in 0.4 that is missing from 0.9 that you would like to see, we strongly encourage you to file a trac ticket for the following: Port the widget from 0.4 to the 0.9, put it in the dojox namespace, and follow the straightforward conventions of dijit.

Even faster would be if you want to do the same thing, and add a patch in trac (along with a cla if you don't have one already).

As far as disappearing, we don't expect things to just disappear, though it is nobody's best interest for DojoX to be a wasteland of forgotten toys and scripts either :)

reworded

perhaps rewording it to "dojox modules could potentially become abandoned and unsupported" would make it less random? karl is correct, "dojox isn't going anywhere", but each module has it's own owner and goals and state of development. There is NOTHING stopping you from using "abandoned" code [a term that may appear in ttrenka's 'manifesto of dojox'] ... and frankly, if you look at the code required to convert a TitlePane to a FloatingPane with extended features, you would laugh. That's the 'security of dijit' ... small, reliable, fast, documented. so FloatingPane for example: It is there, use it. The more people that use it, the less likely it will be to become 'abandoned' [not that i intend to anyway, but on the other hand, I have a mini calculator widget that has almost zero usefulness, so am not going to bother making it a part of dojox at all]

The true color of Dojox will become apparent soon enough ...

FloatingPane

Very well done, it feels much cleaner and faster than 0.4.x
But i would also like to see a working FloatingPane with a resizing functionality.
This is very important for my apps using dojo 0.4.x.
Maybe the dialog could be used for that in the future?

FloatingPane

... well, off the bat, it sounds like FloatingPane is something that is going to get a lot of attention. I have already ported some aspects of a FloatingPane / docking [as i call it] system, and am currently working on the resizable aspect.

As far as Dojox goes, the esteemed owner (ttrenka) has yet to officially set forth the "terms and conditions" of the dojox namespace. Dylan's comment above should put your mind at ease some though. Nothing will "disappear" per-se ... Think of Dojox as a gestation period for experimental / developmental code. _ALL_ of dojo and dijit adhere to strict development style guidelines, from which Dojox is partially exempt. It's like a disclaimer. The code is _there_, and "part" of the Dojo Toolkit, but under no circumstances guaranteed to work, at all. Or the API is subject to change. [for example: my most recent changes to the small FloatingPane now crash Safari. imagine that?] ... But, under the right circumstances, eg: fully documented, tested, a11y accessible, the dojox FloatingPane could be "accepted" into Dijit.

Additionally, projects in dojox are each tagged by their development state. Roughly: prototype, experimental, beta, and stable. It is your discretion to use or ignore each project, as each project will be entirely self-contained. each project has a README explaining it's intended role and developmental progress. Each project [or project part] will be 'credited' to an author, who will act as maintainer for their own work. Should an author abandon code, it doesn't mean the code isn't usable, nor does it mean it is unpopular. Someone else can step up and maintain the code, anyone can contribute ideas and [with a CLA] patches ...

Long story short: dojo + dijit are _safe_ ... supported, documented. Dojox is ALLLLLL the rest of everything you ever hoped the toolkit to be, and home to all the cutting edge [hehe browser crashing] modules. And the more popular / stable code from dojox [as the devs + community will obviously see] may end up migrating to dojo / dijit. [again, the "it may disappear" disclaimer comes into play. if it jumps namespaces, it's not there now is it?]

Where's dojo.event.*?

While I appreciate that this is not finalized, shouldn't dojo.event.* be included in the beta?

dojo.connect

dojo.event.connect [as per the porting guide link on the left should say] is now just dojo.connect()

it returns a handle to the connection, so you can disconnect it at any time via:

var handle = dojo.connect(this,'onclick',"functionName");
dojo.disconnect(handle);

i'll writeup some little porting notes for the new dojo.connect() stuff ...

Ah, excellent

Okay, so it appears most of dojo.event.* (if not all) got rolled up into dojo.*.

Thanks much for the pointer...

Pop-up Calendar widget

Ok, where's the pop-up calendar widget? Or am I going to have to roll my own with the new calendar widget and a textbox?

it's there.

please use the "porting guide 0.4.x to 0.9" ...

_Calendar is private, intended to be used by other widgets [like you describe] ...

dijit.form.DatePicker [i think] uses a _Calendar ...

Very cool - documentation?

Hi all,

Congratulations on 0.9beta!! It's obvious this has been a serious effort, and best of luck with an end-of-July final release date.

Coming to Dojo fresh (no 0.43 experience), where's my best starting point for getting the basics working? I tried the Dojo 0.9 Book, but I think it's out of date -- the initial examples don't work (the tax form thing) and appear to be looking for things that don't exist. (Perhaps looking in old locations? It looks for dijit/util/parser.js, for instance, which isn't there but I note a dojo/parser.js file...but changing the require statement doesn't get it working although it gets rid of the download error.) Unless I'm completely misreading it...

Thanks again for all your work,
--
T.J. Crowder
tj at crowdersoftware dot com

documentation

documentation is the major goal before a 1.0 release. there was a big rush to 'get everything the way we wanted it' before the first public beta release, of which the result was some major changes from M1 ... parser IS now part of dojo [rather than dijit] and to get implicit page parsing on load, you must specify parseOnLoad: true in your djConfig. otherwise, you can just use it to parse nodes for widgets.

the porting guide is a more reliable source of information at this moment, though it is still a work in progress [as is everything] ... the book will follow suit. Thanks for pointing out the tax form thing, things get written and work at a point, then something minimal changes, and b0rks the whole mess. [logistics nightmare to remember where every reference to dijit.util.parser was and replace it with dojo.parser] ... But rest assured that major api changes like that will be minimal to none from this point on [at least in dijit and dojo, dojox is a whole other story]

documentation

Thanks Dante -- good luck with it! (I see you -- or someone -- has changed the dojo.parser references. There's still issues with that walk-through, but I'm sure they'll get to them. I'll note the ones I know about over there, since I can't edit it directly.)

Thanks again, all, for the work that went into the new Dojo -- looking forward to using it.
--
T.J. Crowder
tj at crowdersoftware dot com

yeah

yes, please post specific errors on the page you see them, and someone who can edit it [namely the author who gets alerted to a new comment] will more than likely fix it up pretty quickly.

and, enjoy your time working with Dojo. it's a treat.