On Jun 11, 2008, at 6:07 PM, Jean-François Veillette wrote:
I was on the Pixar presentation by Dr. M.B.Johnson and
after it I asked him about the web technologies behind
their web2 apps.
It's php/python for server-side web app, perforce for
their file-version storage and a bd (oracle(?)).
The client side apps mainly use Ext and some more
custom _javascript_.
Can you tell us more about Ext and how easy (or not)
it is to integrate with WO ? how does it compare to
prototype ? what are the main design principle that
make it a good library ?
Ext can be small or big. You can build your own ext.js and pick what you need. Where Ext is controversial is in its licensing. They recently changed their licensing and I need to find out what it means. Maybe I'll go back to jquery or prototype. :-) They have a dual licensing model. Commercial or Open Source. However, their open source license is GPLv3. Anybody familiar with GPLv3 who would like to comment. Licensing FAQ can be found here
http://www.extjs.com/products/license-faq.php but I still don't understand if that means I need to make my back end source code public or not. If that's the case then that is a not the license for me.
I use the core ext.js which is equivalent in functionality to prototype.js or jquery.js. It provides the basic stuff such as loading content from a URL, doing animations, querying the DOM, etc. If you are familiar with prototype or jquery, I'm sure you know what I'm talking about. Then on top of that they have widgets.
The Ext library has a ton of high quality widgets. I'm not using those however. I only use the basic stuff I mentioned. And at this level integrating with WebObjects is just as easy or difficult as it would be with prototype or jquery. For example, you may want to invoke a component action on a component on your page and generate the HTML for that component. For that you simply load the content using a component action URL. And so you just need to know how to do that in ext, prototype or jquery. For example, in ext it would be something like this:
Ext.get('MyUpdateContainerID').load(componentActionURL, options);
Or something similar to that. You get the idea. ;-) The difficult part is having your application handle this request correctly. In other words, it needs to know it's an ajax request. It needs to process the form values just the input elements submitted, then invoke an action in the right component on the page and generate a response only for the component being updated and its subcomponents.
So this is the difficult part. The good news is that this HAS BEEN SOLVED by the Ajax framework demoed by Mike. Did you go to WOWODC? If not, you can find info on google. Just search for "WebObjects Ajax examples" and I'm sure you'll find it. I believe Mike is releasing a much more polished Ajax examples application in the not too distant future. I understand you do not need to use Wonder to use to tap into Ajax.
Once you have this figured out, then you can move to using widgets and things start falling into place more naturally.
So I would say, you take a look at Mike's Ajax example app. The core components are very easy to use. Also look at the podcasts about WebObjects in iTunes. You'll find info there too.
- Ricardo Parada