Tuesday, September 7, 2010

Sencha Touch: Not Ready For Prime Time

After a week of trying to push Sencha Touch to do some very simple UI tasks, I have to conclude that it just is not ready for playing, let alone production work.

The worst part of Sencha is that the API documentation overlaps with ExtJS so much, yet is different enough that sample code for ExtJS doesn't just work.  So the normal trial and error of using forums and blog postings to supplement docs is made that much more ineffective.

I'd like to say Sencha Touch shows promise, but I can't.

It isn't just the grinding I've done finding so much conflicting info and dead-end paths.

It isn't just the incomplete, apparently untested code that belches "undefined" error messages for documented methods and properties .

The API just doesn't make simple things simple and difficult things straightforward.

At least for now it does not appear that there are clear idioms guiding how various hooks and extensions are accomplished. Maybe after the dust settles from the on-going development it will be a consistent and clear API. But for the moment, as of September 2010, Sencha Touch is more of an interesting experiment - or an annoying one, depending upon how much you took for granted the stability and soundness of the code.

3 comments:

morfunk said...

Hi there,

David Kaneda from Sencha here. I just want to highlight that Sencha Touch is a beta, so it's definitely understandable that you feel it's not ready for prime time quite yet. That being said, we're seeing a ton of great demos and apps being developed, so I wouldn't go so far as to say it's "not ready for playing." Also:

* The API does have differences with Ext JS (especially with certain things like layout/data) but ultimately, these changes are being brought into the next version of Ext JS, 4, to be released later this year.
* The undefined error messages really bothered me as well, so we've undergone an initiative to add proper/helpful error reporting throughout all components. This should make it into the 1.0 release.

At any rate, thanks for trying out the library, and I hope you'll reconsider it as we move into a more stable release with 1.0.

Jersey Boy said...

David,

Thanks for the thoughtful reply. I certainly don't mean to disrespect your effort, or what you've been able to accomplish, both of which are significant. Admittedly, I was feeling a bit irritable though.

When I wrote "not ready for playing", I was not just being snarky. I do think that a certain amount of discovery can add to the enjoyment of being an early explorer of others' libraries, even when the docs are yet to be written. A particular problem in this case, is that there are a plethora of different idioms -- perhaps using that term is a bit generous for coding approaches shown in some examples -- and I suspect many are simply misleading due to the API differences. It is Google's fault too (tongue in cheek here) since it can't tell the difference between examples that require older ExtJS and those that work with Sencha Touch. That makes playing with such examples no fun at all, since many are just misdirection.

I do not discount the role of my inexperience with the library either. Some of my heartburn came from setting up objects in the wrong manner. I suppose there is only so much type checking one would want to do in a production Javascript library, but I think a suite of behavior driven tests like the JSpec tests Ed Spencer described in JSMag might both help illustrate the intended idioms and improve confidence that the API succeeds and fails gracefully.

Too, I'm glad to get such a response from a developer. It means a lot that you're constructively responsive to such comments.

Jersey Boy said...

I should add, it shows a lot of promise that you're willing to go through all components to revise the error checking and reporting. It would have been easier to dismiss the complaint as the abuse of the API by an inexperienced user.