PDA

View Full Version : ExtJs 4 - Initial Thoughts



CasualNetworks
22 Feb 2011, 6:18 PM
Background
We are a small scalable startup, in which I am the lead developer. Currently I am the only person directly developing our front-end client framework, which integrates heavily with Ext JS. I have used Ext JS 2.x/3.x for around 3 years in open source and non-profit work.

Our initial testing has been only on low level client architecture, so we cannot yet comment on much of the Component or Widget level features. These also seem to be in flux given the nature of the developer preview and forum activity. Basically we took some small Ext JS 3.x modules needing refactoring and tested that using Ext JS 4.x.

In summary, we were very impressed and encouraged with the results of our development. While we have patiently waited for Ext JS 4.x, now that we are able to work with the initial preview it reinforces our desire to invest in using Ext JS on our commercial solutions. So, marketing aside, here was our review and perspective of working with Ext JS 4.0-pr1...


What we love



The Class System
Clean. Understandable Architecture. DRY code. Agile (...enough for reacting to inevitable scope creep)

"Ext.define" to the rescue... After having to change our mindset from 3.x style of OOP and learn the new system, the speed at which I could write and decouple code went through the roof. It actually helped us find areas to further dry up our code beyond the scope of refactoring each module was.

This transition was very easy for us because we already coded in a similar style, this just took it one step further, which resulted in very clean and easy to read code.

Hints...
- Classes are Objects, Literally (pun intended)... So use that to your advantage.
- DRY up code, mixin, extend. Even *if* performance becomes an issue, you can use the relationships established during your build/deploy process to inject the code.
- We can make the educated guess that with all that venture capital invested(lookup VC due diligence...:o) ), Sencha has some smart people working for them... Don't Reinvent The Wheel!

The Loader
What little bit we are using already show it's value. Event the little hint's that are provided through Firebug of "you should place this before Ext.onReady..." makes for a pleasant coding experience. Auto loading the files in development is a huge time saver. I look forward to seeing how this evolves and how it might be extended to address other common issues with developing a RIA.

Stores, Models, Proxies, Oh My!
... or at least that was what I said with Ext JS 3.x... (minus the models...haha)

We use both Rails/Ruby or Java in most of our projects. Both of these have solutions can have Models play a key part to your software architecture. Even though we can 'never trust the client', just being able to interact with the user on a similar level and design makes life so much easier. Using this just at a low level client framework makes it easier to work directly with the stores and their data.

The simplifying of Proxies and Stores were a hidden surprise for me. I must have skipped over the blogs/talks... By having the AbstractStore and AbstractProxy classes, this helped us clean up one internal module and again DRY up our code. Overall working with complex data or even simple queue data was a lot easier than with 3.x. Since our designs take advantage of stores, both offline and online, we were very happy with the changes. Just another +1 for Sencha.

Components
What little bit of the redesigned components that we played with went well. Sure there are some small issues, but given the release state of Ext JS, it's very early. Seeing how many items have already been fixed in the forums, pending the next release, we plan to look closer at this then.

One quick note, the fact that the Components are based on the new class system really opens the door to what is possible and that speaks volumes to the value that Ext JS brings to the table. We will have to wait to see how some of the major areas for us like forms, trees, and grids convert to Ext JS 4, but I have faith given what I have see so far.


What we dislike



The (new) API Docs Interface (and dead links)
For me personally, this has always been an area where I felt Sencha has prided themselves on. In Ext JS 4.x, the API Docs feels rushed and a move backwards from what developers need. Closest thing that I can relate it to is Microsoft's CHM help files...

I know that this is a developer preview, not even the marketed 'Beta' term we have been waiting to see. Even so, it was sad to see so many dead links, missing docs, and lack of examples. I found myself having to scan the source files for keywords to find my answer one to many times. On a good note, the fact that I found it, shows that this really is only a temporary issue, just really distracted from the overall Ext JS4 evaluation.

Regardless, if you could please add checking for dead links to your build or CI process.

Communication
This has very little to do with Ext JS 4 and more to do with developing Sencha best practices. In summary, I don't want to dig through the forums to find a random post to get an update for "what is going on" or "the latest release status". I enjoy your blogs, as they are very well written and a great showcase of x,y,z. They do not communicate with me on what is happening behind the scenes (and really a blog does not seem the right channel.)

I see a huge opportunity for you to further develop your ongoing relationship with your (paid) customers and beyond. Imagine an accountable company that is willing to be confident and say that "Status Update: During our last Go-NoGo meeting we decided that we could not release Ext4.x Beta until we finish the new Ext.Tree Components. We are unsure at this moment when that work will be completed, so we will update you again after our next sprint, which will be on or before Monday xx/2011" In my experience, this addressed the majority of individuals who are similar with the software development life cycle, and probably more.

What we need?

The Concern: End users don't like the feeling of waiting
The Goal: Providing a way to address this for ~80% of users

Ext JS (JS + CSS + Images) client download file size is huge... We knew that coming in the door...

So far as a framework it doesn't help address this common problem. Sencha knows it's a concern, look at the 'Examples' page which they use one line native JavaScript to change the inner html to provide feedback and give the perspective of 'showing' what's loading.

Maybe the final version of the loader my provide a way to solve this, customized builds of Ext JS, our own custom code, pre-fetching, lazy loading, etc. We see Ext JS as part of the client experience we choose to offer, so make the end-end user experience part of your scope. Don't rely on us to make your framework look 'fast'.

Possible Suggestion?
From my understanding of User Experience studies, it's not the actual 'waiting' (<3 seconds) that is the problem. It's the lack of progress, indication, or stimuli that causes the brain to wander, seem slow, and distract. So just like we use spinners (gifs, css3), or similar feedback for Ajax once Ext JS is loaded, we need something before a user loads the entire RIA experience that is not just our own custom code or some other non-Ext Js library.

We need a small package which provides us with just enough to functionality to load files and give real-time, progressive, feedback to our users while loading Ext JS, our Application, Widgets, and the rest of the overall solution. The 'wants' to this need would be a way to load 'just enough' for a small module or component, for things like a small login module.


In closing


This is about all of our initial thoughts, thank you again for a wonderful product and I look forward to what comes next.

estesbubba
23 Feb 2011, 6:51 AM
I couldn't agree with you more. While Ext JS is a great product and Ext JS 4 is going to be even better, here is what is frustrating so far.

1. API docs - I've also ran across a bunch of missing info, dead links, and really miss the tabs. A lot of times I'm working with several components and need to quickly switch back and forth. I'm actually using the Ext JS 3.3 docs more to get correct info.

2. Communication - I would also like to know more what's going on. The only way to find out what's missing from DP1 is search or post on this forum. A list of what's missing in this release would be nice and so would a rough release schedule through GA. Maybe a thread in the premium forum if Sencha is concerned with who sees the info.

3. I also like a way to quickly show the users the framework is loading.

I realize everyone wanted a developer preview, and now we are complaining about it, but I think these are constructive suggestions.

sg707
23 Feb 2011, 7:06 AM
For API Docs, I just consider that as a bug and I'm sure they'll fix it.

For Communications, I can't agree more.... I've learned of ExtJS 4 MVC through another site who commented "Next version of ExtJS 4 will have MVC too". Also, I remember Ed Spenser's presentation that they made an major improvements in documentation... I still haven't seen anything that's drastically different from ExtJS 3.

Also, we all are great to see the preview version...but they could've provided a simple bullet list of what is not there yet. We had to find out by trying it out and then report as a bug..and get a reply saying "Oh! Yes, we know and it's not in for this release"

westy
24 Feb 2011, 3:33 AM
Good post.

Ext JS 4 really seems like it's going to be a massive step forward, so kudos for that!

Agree on the communication bit.
Could do with knowing when the next preview/beta is expected :)

CasualNetworks
24 Feb 2011, 12:41 PM
Thank you for the responses! I am glad to hear that other Premium Members have expressed similar feedback.

The next few months are going to be a very exciting time to develop and work with Ext JS. What they deliver here in 4.x will directly affect what and how we offer solutions to customers for years to come.

nick_p
24 Feb 2011, 5:24 PM
Thanks for your comments regarding the API docs. PR2 (which should now be live) should be a big step up from PR1. Please see the API Docs thread (http://www.sencha.com/forum/showthread.php?124177-API-Doc-issues) if you'd like to make any feature requests or report any bugs relating tot he PR2 release.

CasualNetworks
24 Feb 2011, 6:20 PM
Awesome, thank you for the personal follow-up. I see that the docs are based on the new developer preview as well, which can be downloaded at the link below. Thank you and will be looking into what has changed.

While no tabs yet, some of my initial checks for dead links were resolved. I also like the new icon system, which makes visually identifying files quick and easy. I will post any other feedback on the normal API doc thread.

Reference:
http://www.sencha.com/products/extjs4-preview/download/ext-js-4-developer-preview-2