I’ve been a big fan of Sencha’s ExtJS since I started using it several years ago. When I was first exposed to the framework in its v2.0 days, it was a breath of fresh air compared to anything else out there. It had a well-documented, powerful framework and a comprehensive set of widgets. The grid widget alone scratched enough itches that the rest of the framework was gravy.
I haven’t been able to use it on any projects, though, for a couple years, but I have tried to stay up to date on the releases. Unfortunately for Sencha, in the intervening years, the internet has started to catch up and I’ve been taking a much more critical eye to ExtJS. There are still several good parts to ExtJS, but there are also a lot of bad things that will limit its suitability for any future projects.
The Good Parts
- The Documentation : The guys at Sencha have continued to do an excellent job at creating documentation for ExtJS. As a Java developer, I found the API documentation pretty similar to JavaDoc, and thus instantly appealing. The documentation has continued to improve and now includes extensive sample code and even videos. This is an area where ExtJS leads the industry.
- The Support : The support forums for ExtJS are first rate. Questions get answered quickly and the Sencha team does a good job staying on top of them. Sencha also offers commercial support and training, which is critical for enterprises where developer skillsets are hit and miss.
The Bad Parts
- Outdated Theme : This is the biggest area where Sencha has been caught with their pants down. When I started using ExtJS, everyone was trying to web-enable desktop applications. Sencha provided the typical desktop look-and-feel in HTML widgets which made it perfect for implementing intranet applications to ween users off of Visual Basic. Today, the objectives have completely flipped. Even Microsoft is working to desktop-enable web applications. Clean, modern web applications have set the standard for user interfaces and the theme for ExtJS still looks like Visual Basic for the web.
- (Un)Resonsive Design : The ExtJS library is designed for desktop browsers. But the world is moving to a post-PC world with BYOD Tablets and Smartphones. Just try viewing the Feed Viewer demo application on an iPad to understand how badly ExtJS is being left behind in the area of responsive design. Yes, Sencha has a mobile framework, but we’re moving to a world of responsive designs that we expect to scale satisfactorily to an device.
- The Competition : While the ExtJS MVC framework is still at the top of the heap, the competition is climbing fast. Frameworks like EmberJS, AngularJS and Backbone continue to close the gap, and due to their open source nature, there is a good chance they will overtake ExtJS in the near future.
- Monolithic vs Micro : ExtJS is a monolithic framework. It has an answer for every problem and you need to embrace the complete paradigm. Using ExtJS means you don’t want to play nice with others. The web world has swung the other direction towards micro frameworks, or pulling together only the small, best-of-breed libraries you need. JQuery is usually the base, and then you pile other things on top it like RequireJS for code structure, Twitter Bootstrap for the user interface and LESS or Compass for CSS.
- Learning Curve : ExtJS is not a casual framework. Learning the framework requires a lot of work and it is not something you decide to use for a small project every now and then. You would pull your hair out going through perpetual ramp-up. In some ways, ExtJS has become the PowerBuilder of web development. It is an extremely powerful framework that people build careers around, but is way too complex for a casual user. The high learning curve can make it extremely difficult to staff a qualified team for a large project.
- Bad Blood : I do not fall in to this camp, but it still amazes me to this day how much bad blood there is in the developer world over the ExtJS licensing fiasco from a few years ago. A lot of developers I know who are familiar with ExtJS will literally start frothing at the mouth if the name comes up.
- Uncertainty : Sencha is still a VC-funded startup that is going to have to get bought by someone for the vultures to get their pound of flesh back. As the web evolves, it is going to be increasingly difficult for them to find a suitor. Would anyone still have as much enthusiasm for ExtJS if it were owned by SAP or Oracle?
The Sweet Spot
ExtJS really only has one sweet spot today: developing data-centric intranet applications that users will spend all day in front of. These are scenarios where you would have used a VB or WinForms application. Nothing comes close to ExtJS in solving this problem.
That sweet spot is shrinking. Users are expecting their work world to mimic their private worlds. They like the clean designs of Facebook, Twitter, Google+, etc… and are increasingly expecting even in house applications to function and look like what they’re accustomed to. ExtJS does not fit the bill for this future.
What to Do
If I were Sencha, I would be hiring some top UX talent and coming up with a cleaner, more internet ready theme for ExtJS while it still has a chance for relevancy. The theming framework also needs the equivalent of ThemeRoller and several pre-built, high-quality themes distributed with the framework. The theme also needs to be responsive. You can’t just steer people to Sencha Touch to solve the tablet problem.
If I was already invested in ExtJS, I wouldn’t change anything right away for existing applications but I would carefully think through using it for anything new. I would ensure I stayed current with the versions to ensure my teams could take advantage of the awesome MVC framework, but I would be keeping an eye to a future without ExtJS.
If I were building a new internet facing application, I wouldn’t touch ExtJS with a ten-foot pole. The outdated look-and-feel, and the difficulty in themeing it, is an absolute deal killer. I would start with a solid micro framework like AngularJS and layer it on top of Bootstrap and LESS.
I don’t want to be too harsh on the Sencha guys. I’ve met a lot of them, and I think they’re great and can absolutely rebound from their problems. But similar to an alcoholic, the first step is acknowledging you have a problem. And that problem for Sencha is that ExtJS is no longer ready for today’s internet. Sencha has to resolve this, because even if they only want to focus on enterprise intranets, that world is changing too.