Friday, September 4, 2009

What is the future of Dojo?

Has anyone noticed how the Dojo framework seems to be slipping to a "not so happy place" lately? Dojo is a powerful Ajax framework full of features and it is totally free. I've used it on two projects over the past 4 years and I have been pleased with the results. What I have not been pleased with is the direction the Dojo support community is headed, the volatile nature of the codebase, lack of working examples and very poor documentation.

Dojo support has been reduced to a primitive mailing list that is almost useless and a hidden forum that the developers of Dojo seem reluctant to use. If you post a question to the mailing list, there is a one in ten shot that someone will actually answer it and you're chances are slightly better than that the answer you get will be helpful. If you are looking for a working example of how to do something, good luck, the web is full of examples, but most pre-date the latest versions of Dojo and it takes some work to get them going. The Book of Dojo and API documentation are pretty crude, incomplete and in some cases are just plain wrong. The API search is case sensitive as well, so you better know exactly how the object you are looking for is spelled. Good example, I typed in DropDownSelect earlier and it didn't find it, but I know it is there.

Another issue with Dojo is that the developers don't care much for backward compatibility. Refactoring is a good thing, but when you keep changing the API interfaces on every dot release, you are creating unnecessary work when your users attempt to upgrade. I've upgraded 3 times in 3 years and each time, I had to change code.

A good example of this is in the recent release. The release was changed so that by default text(HTML) in a grid cell is escaped. I upgraded and it broke all of my grids. In a bug report I read they changed it to prevent newcomers from having problems with grids due to errors in data interpretation in grids. It also mentions there is a parameter to switch this behavior on and off, but it is not released. This kind of non-backward compatible code can completely turn someone off wanting to continue to use the framework. It ticked me off something fierce. This isn't an isolated incident either, there are many other examples of rogue development making the framework extremely volatile.

The problem with Dojo examples on the Web is that there has been so many changes to the codebase for Dojo that you have a 1 in 4 shot of getting a correct example. Say you have a particular issue you need to solve, for example, I needed to remove the ability to type into the FilteringSelectBox and make it act more like a true HTML Select Box, but still retain the look and I couldn't find an option in the code or an working example, I did however find another person who was frustrated with the omission of the ability of allowing the user to input data into the Select box. Going back to the examples being correct, if you take into account the constant refactoring that the programmers are doing with Dojo when looking at examples, the examples you find are going to be based on one of 4 versions of Dojo and for the most part, you just have to try them to see if they work. You'll get no apologies from Dojo developers when something is completely changed out from under you either.

Another issue is the options for a component. The Dojo documentation and API is very poor at laying out all of the options. Developers need to know what all the methods, events and properties for a component are. If you go look at the Ext documentation, they really have their stuff together. I rarely ever had a problem with their documentation. It is top notch.

I love the Dojo framework, but were are on the verge of a revolution here. The time is ripe for another open source framework to pull ahead of the game. It's not Extjs thanks to the new stricter licensing scheme some bonehead decided to implement either. I guess I could always embrace Google Web Toolkit or YUI, or maybe just go back to Prototype and Scriptaculous. I've used Dojo with Prototype and Scriptaculous all in the same project before, but I just wasn't using it to it's full potential.

I just hate to see Dojo fall by the wayside due to a lack of proper support. The first few examples that a person writes in a framework usually determine how they will respond to that framework and whether they will accept it or not. If Dojo had the documentation and forum that Ext does, I could gurantee Dojo would be the most popular Ajax framework around, but alas, we are reduced to a pathetic mailing list. The Dojo forum is hidden and can't be found easily and when you do find it, you can't locate anything in it.

I have another issue with the Dojo mailing list. You have about a 1 in 10 shot of getting answer from it and generally that takes days. I noticed a few weeks ago as a user left the mailing list, he first left a scathing email about how it was useless, this generated conversations from almost 50 people, but post a message about a problem you have or a particular thing you are trying to do with the framework and you have a 1 in 10 shot of getting a single individual reply and then the answer may be totally off.

As an experiment, I posted an email proclaiming my dissatisfaction with the mailing list and in the email I mentioned that many people would reply to it, but if it was a technical issue, almost no one would reply. Sure, enough 4 hours later, over 30 people had chimed in to either agree with me or vehemently disagree with me about the viability of the mailing list. I even had one little man tell me to "piss off" and if I didn't like Dojo, then don't use it. Another guy told me that all the developers are volunteers so we shouldn't criticize the support methodologies. I responded simply, "Most firefighters are volunteers as well, but they wouldn't last very long in the court of public opinion if they only responded to 1 out of every 10 calls for help."

The experiment proved my point. Even though I love Dojo, several of the members of the mailing list took it personal as if I was insulting their religion or something. Hello, I just said I love Dojo...I only have a problem with the support community.

I'll give you a great example of how difficult it is to find out how to do something in Dojo. I spent four hours last night trying to find a way to highlight rows in a Dojo grid and make it work. I hit the mailing list with this question last week and someone responded with how to highlight a column. I wanted to highlight the entire row. I appreciated that he responded, but his answer wasn't close enough to the problem to be of any use.

Last night I quested to find and implement how this should work and I finally found someone who was doing it and it worked. It was really a very simple task that should have been easy to find. if it takes 4 hours to find a method to complete such a simple task, most folks would tend to steer clear of the framework all together.

Of course most of you are going to say, "why didn't you just write it yourself, instead of taking 4 hours to find an example." I take a very pragmatic approach to this. I do not reinvent the wheel. If someone out there is already doing it and I find a working example, then I would rather do that and same myself the time if I can. A lot of times common examples make their way into the framework itself anyway. A lot of times, I do however write my write out of these situations and resubmit the method to the framework itself and it makes it in.

My point to all of this is that I really like using Dojo and I want it to survive. I'll even help and volunteer to assist in completing a cookbook and some better documentation if that is what it takes. We also need to get a good community forum going again.

Let's get involved, but someone involved with the Dojo development needs to get on the mailing list and start answering questions or get us started by creating the forum and inviting people to get involved. A unified, centralized documentation effort is in order here. Get the codebase stable, document the heck out of it, post tons of examples based on the release and clean the Dojo sites and the Web of the old examples based on the old codebases. A Dojo cookbook based on the a late stable release would be great. I'll even volunteer to write it if Oreilly doesn't already have someone on it. I would really like to see Dojo be the king of the mountain in the framework wars.

NOTE to DOJO Developers and Zealots: My point of view is an opinion and not necessarily fact. The fact is that I use Dojo, I want to continue using it. Criticisms are a part of life. Personal comments about me will not be published as comments. Comments presenting a pleasant tone and providing sound arguments will be published. Comments degrading anyone who does not share your point of view will not. If I reject your comment, please review it for tone and resubmit and I will be happy to publish your views. Thanks.

15 comments:

Giorgio said...

Lack of support is a real plague in Dojo... I am subscribed to the mailing list and tried many times to participate but the framework is so big (particularly dojox namespace, the most interesting part) that it's very difficult for me to respond meaningfully to most of the questions...

Anonymous said...

Sproutcore?

Anonymous said...

Take a look at YUI3 ... pretty nice overview video here, and the mailing lists have been pretty useful:

http://www.robertames.com/blog.cgi/entries/yui-3-overview-video.html

--Robert

Anonymous said...

I've had decent luck on the IRC channel...you ever try there?

Anonymous said...

I am not sure wht jquery does not come into picture here ?

Doug said...

Documentation in Dojo is really a pain here. I always try to find a reason to use Dojo because I think the fw is great. Just that its support and documentation suck too bad.

Anonymous said...

Though I don't disagree with you that the licensing for ExtJS SUCKS, it was worth $300.00 or my money to pay for a license for the framework. It has saved me countless hours of interface development time that.

Peter Svensson said...

There need to be a proper forum up and running. I know people are trying to solve this and divert resources to it as we speak. Meanwhile the Dojo Campus is really good (http://dojocampus.org/) in providing documentation and examples for most, if not all parts of Dojo.

This is not a substitution for help with thorny problems, but at least something.

I hope that we, the Dojo community will be able to provide a working forum very soon.

Cheers,
PS

Anonymous said...

Chris,

There is much truth in what you are saying. In the past I have said similar things - but only to the dojo developers.

Something that I believe will help - a programming model. If there are consistent construction and wire-up methodologies then folks can know how to build and render their widgets. I believe this is critical, specially with remote developers. Basically a programming model is a meta-model which describes and informs stakeholders on - what a dojo widget is, how it is constructed, how it attaches to other widgets and how it can be extended.

Folks think they have this in dojo but they do not. But this is not unique. Such a metamodel evolves over time from concrete experience. It is implicit in every test that dojo has. I hope to post such a meta-model to the mailing list. Perhaps that will also help.

Another thing that might help is a dojo user group. I think dojo users need to form a group so that we can help each other. That way we can share our experiences and solutions.

In the meantime, your observations are valid, but don't give up on dojo. The folks mean well, they work hard and there are some real jewels in toolkit.

In the end - some of our frustration boils down to governance - and that is always tricky, especially in a distributed development environment.

Best,

John

Dylan said...

Chris,

I understand your frustrations, and I share them. For example, we removed the forums not because we didn't want forums, but because questions weren't getting answered because focus was split. But the problem of not being able to meet community demand for answers is still the primary issue (and the terrible forum software we had in place that was getting bombarded with spam was the secondary issue).

The biggest problem is that we are understaffed... people that contribute to Dojo are more busy with their jobs than ever before, especially as the economy has weakened. We really, truly, badly need as much help as we can get to make things better.

Unlike Ext, we don't have a single corporate entity in charge of Dojo... as you've noted in other posts, this has trade-offs with regard to direction and focus.

Obviously there are commercial support options for Dojo (SitePen, Uxebu, Zaffra, others), but that shouldn't be the only way to get help.

If you're interested in getting involved and helping put your obviously much needed suggestions to work, send me an email. I'm easy to find.

-Dylan
Co-founder, Dojo Toolkit

Chris Hardin said...

Dylan,

Please contact me at my gmail address. I will volunteer as much time as I can to help out. I am serious about writing a cookbook. Also, I am dedicating every post on my blog this week to working Dojo examples. Thank you for your response.

Chris Hardin said...

John,

Thank you for your response as well.

zalun said...

Just a question - you were searching to find an example for 4 hours. How long you wanted to search for it before you'd start to write your own?

Chris Hardin said...

I've already answered your question in the post itself, just read the part where I say that someone is going to ask me why didn't I write it myself. :)

bits.of.info said...

I can see the authors frustrations with the forums, many projects have similar problems. Especially if the folks running the forums start getting an attitude towards anyone who brings up a complaint! Just my two cents.

Post a Comment