29
Reef AJAX the way it should be miércoles 29 de febrero de 12

Reef - ESUG2011

Embed Size (px)

DESCRIPTION

Reef update, all changes from last year

Citation preview

Page 1: Reef  - ESUG2011

ReefAJAX the way it should be

miércoles 29 de febrero de 12

Page 2: Reef  - ESUG2011

Who am I?

miércoles 29 de febrero de 12

Page 3: Reef  - ESUG2011

Who am I?

• The guy who builds a VM, and everybody hates because their plugins are not ready

miércoles 29 de febrero de 12

Page 4: Reef  - ESUG2011

Who am I?

• The guy who builds a VM, and everybody hates because their plugins are not ready

• He also does some Seaside time to time

miércoles 29 de febrero de 12

Page 5: Reef  - ESUG2011

Last year...

• Reef presentation was a big success (thanks!)

• Some of you tried it and provide valuable feedback...

miércoles 29 de febrero de 12

Page 6: Reef  - ESUG2011

But not everybody present here todaywas present last year...

So... what’s Reef?

miércoles 29 de febrero de 12

Page 7: Reef  - ESUG2011

“The problem”

miércoles 29 de febrero de 12

Page 8: Reef  - ESUG2011

Nesting problem

• renderContentOn:

sends renderRegionsOn:

sends renderCitiesOn:

Functionality is distributed all around the component (and could be worse)

miércoles 29 de febrero de 12

Page 9: Reef  - ESUG2011

Nesting problem

Real problem is we are still programing in HTML (yes, with smalltalk “flavour”, but still HTML)

miércoles 29 de febrero de 12

Page 10: Reef  - ESUG2011

Reef summary

AJAX/Javascript component

framework for Seaside.

miércoles 29 de febrero de 12

Page 11: Reef  - ESUG2011

Reef summary

Models HTML/Javascript components into Smalltalk objects

miércoles 29 de febrero de 12

Page 12: Reef  - ESUG2011

Reef summary

Hides communication complexity

miércoles 29 de febrero de 12

Page 13: Reef  - ESUG2011

Reef architecture

miércoles 29 de febrero de 12

Page 14: Reef  - ESUG2011

Reef architecture

Dispatcher

miércoles 29 de febrero de 12

Page 15: Reef  - ESUG2011

A trade-off(yep, there is always one)

An extra request (not always, but enough to be taken into account)

miércoles 29 de febrero de 12

Page 16: Reef  - ESUG2011

Communication

• We handle interactions through callbacks, just as Seaside

• But all callbacks should be threat the same

• AJAX calls

• regular requests

• client behavior

Texto

miércoles 29 de febrero de 12

Page 17: Reef  - ESUG2011

Example

miércoles 29 de febrero de 12

Page 18: Reef  - ESUG2011

Coming to your image... this year!

miércoles 29 de febrero de 12

Page 19: Reef  - ESUG2011

What changed(for good)

Better integration with

jQuery:skins, widget box

miércoles 29 de febrero de 12

Page 20: Reef  - ESUG2011

What changed(for good)

An important optimization:

#asReefTriggerCallback

miércoles 29 de febrero de 12

Page 21: Reef  - ESUG2011

What changed(for good)

More widgets(but still just those I need)

miércoles 29 de febrero de 12

Page 22: Reef  - ESUG2011

What’s new(and testing)

Composites

miércoles 29 de febrero de 12

Page 23: Reef  - ESUG2011

What’s new(and testing)

• Magritte-Reef

• Brings web 2.0 to

Magritte-Seaside

• Ease cool effects:

• tooltips, masks, etc.

• Complex behaviors

miércoles 29 de febrero de 12

Page 24: Reef  - ESUG2011

What remains(and it shouldn’t)

• Documentation is still poor

• Reef protocol names are still ugly

• Testing is still non-existent

miércoles 29 de febrero de 12

Page 25: Reef  - ESUG2011

The heresy revisited(we need to be heretics again)

miércoles 29 de febrero de 12

Page 26: Reef  - ESUG2011

you know:

miércoles 29 de febrero de 12

Page 27: Reef  - ESUG2011

why not:

miércoles 29 de febrero de 12

Page 28: Reef  - ESUG2011

Future work

• Still experimenting with optimizations around the dispatcher

• Rename all protocols into something really meaningful

• Write more documentation (like finalize the chapter for PBE2)

• More feedback?

miércoles 29 de febrero de 12

Page 29: Reef  - ESUG2011

Questions?

http://squeaksource.com/Reef

miércoles 29 de febrero de 12