This time I'm working on a project that would normally become a GUI application. Fat client-style. But I'm still wanting to make it a web application because I wouldn't like to force the dozens of users to install updates frequently. And I'm also a newbie regarding UI toolkits like Qt or Gtk. So I thought I give ExtJS another try.
You can't hurry love
ExtJS takes some learning. And with the limited literature on the web dealing with programming applications in ExtJS I felt pretty alone. Many tutorials that I found on the web that deal with what I wanted to know only used version 1.x. And 2.x works differently. So I needed support from #extjs (IRC channel on freenode), read parts of the API documentation and the ExtJS forums (why oh why can't it just have a simple mailing list - web forums stink). With jQuery you will get results quickly. But ExtJS isn't just giving you a few JS commands and classes to simplify your life. It's a whole new paradigm really. It's like you code a GUI application that works on the web. If you use layouts and panels and not just simple DOM-manipulating operations then you may need to take your time before you get something done that actually works. The API documentation is very complete. But the classes are wired together and subclassed in a way that you sometimes have to guess which documentation page describes certain attributes. (Where the heck are the items documented in tree panels again?)
Recently ExtJS turned around the licensing terms a little thus annoying many developers in the community. And I must say that I was close to not even considering ExtJS again because they frightened me with their "commercial license". I'm (fortunately) not a lawyer but I'm pretty sure that the only case where you would need to pay for ExtJS is when you write applications using ExtJS that you use publicly and do NOT want to put your application/web site under the GPL. The important result for me was: as it's an intranet application within our organisation we do not need to share the source or put the application under GPL. And for any other cases I usually put my projects under an open-source license anyway. Of course life would be easier for everyone if ExtJS just used the MIT license. But the library is of very high quality and very capable. From what I have seen so far I would happily write commercial applications that depended on ExtJS (then paying for the license and support of course). My point is: if you like ExtJS (perhaps even from just enjoying their programming samples) then see if you really need the commercial license.
What ExtJS isn't useful for
The spectrum of applications where ExtJS is a good catch is a little limited. For example I wouldn't make a customer web site using Ext unless they need a kind of GUI-style application. For effects and a little AJAX jQuery is much easier to understand and use and it's MIT-licensed so I wouldn't really have to worry about legal stuff. And the design is fixed. You would easily spot an ExtJS-based web site because you usually don't style the widgets. The icons and widgets come in three different colors but that's it. I wouldn't want to start playing with a few hundred lines of CSS that ExtJS comes with unless I really have to. It doesn't even play nicely with my existing style sheets because there's little they don't redefine for their own purposes. For example don't expect LI tags to produce list items with dots in front any more.
Validation done twice
Definition versus instantiation
Does half a megabyte of JS make things fast?
May the source be with you
Stay tuned for maybe more experiences once I finish my appliation. I hope I keep the patience because it took me three days of readig, trying, understanding, err'ing and programming to finally have a border layout with a tree view, a panel view and a click handler. What helped me a lot was reading the well-documented source from ExtJS' layout browser and Saki's web site. And my personal favorite useless but amazing loading effect can be seen here. :)