Tide
The missing web framework
https://github.com/tide-framework
A framework by…
Nicolas Petton
Esteban Lorenzano
Damien Cassou
.. while working in the Pharo team at INRIA - RMoD
Esteban Lorenzano
Pharo core developer
INRIA - RMoD
http://smallworks.eu
Yet another web
framework?
The problem
• Amber + REST?
• Seaside?
Amber + REST
• Request nightmare
• Leads to bad design (if not super-careful)
A small example
HeroView HeroModel
name: 'Groot'
Ok
A small example
HeroView HeroModelHeroView HeroModel
name: 'Groot'
Ok
NOPE!
A small example
HeroView HeroModel
heroId: ID name: 'Groot'
Ok
HeroService
findHeroNamed: 'NotGroot'
ID, name, ...
findById:...
Seaside
• It is great!
- but aging…
- and not very well prepared for “Web 2.0”
We can do better
The problem
• How to do MVC?
• How to expose domain without adding
unnecessary layers?
• How to keep the “seaside feeling”...
How?
• Amber + Pharo
• Through a communication bridge serialising
JSON
Client side
• Proxies
• Futures (kinda)
- Keeps the flow sequential
- It is still not synchronic, but works most of the
time
Server side
• Exposing objects
- <action>
- <state>
• Literals, Collections, Models
Demo
Counter class
HeroLair>>#heroes
^ heroes
!
HeroLair>>#newHero
^ Hero new
!
HeroLair>>#addHero:aHero
heroes add: aHero
!
!
Counter presenter
HeroLair>>#heroes
<state>
^ heroes
!
HeroLair>>#newHero
<action>
^ Hero new
!
HeroLair>>#addHero:aHero
<...
Counter client
lair := TDProxyClient on: ‘/lair’.
lair connect.
!
lair heroes. “[]”
lair newHero
then: [ :hero | lair addH...
Marina
CMS for the simple minds
Yet another CMS?
The problem
• Pier is HUGE
• … and hard to learn
How?
• Uses only already existing projects (we do not
reinvent the wheel…)
- On top of Tide (duh!)
- User management: Mozi...
Features
• Suitable for small/simple pages
• Very simple
• Stable
• Fast
• Can accept plugins
- For now, just a basic blog...
Demo
Install Tide
Pre-requisites: node, npm, bower, pharo
$ git clone git@github.com:tide-framework/tide.git
$ cd tide && bower...
Download it today!
https://github.com/tide-framework
Thanks!!
Esteban Lorenzano - 2014
Tide - A Pharo/Amber communication framework
Tide - A Pharo/Amber communication framework
Tide - A Pharo/Amber communication framework
Upcoming SlideShare
Loading in …5
×

Tide - A Pharo/Amber communication framework

1,463 views

Published on

Title: Tide - A Pharo/Amber communication framework
Speaker: Esteban Lorenzano
Mon, August 18, 11:00am – 11:30am

Video Part1: https://www.youtube.com/watch?v=pFtTCZn10Ak
Video Part2: https://www.youtube.com/watch?v=LfkPay9s4wA

Abstract: Tide is a new framework with the mission to make Pharo/Amber communication a breeze. It handles iteration with the server in a unified and coherent way, making easy the complexity client/server communication.

Bio: Esteban Lorenzano, 42 years. Programmer since ever, Full-time Smalltalker since 2007 and Pharo enthusiast since almost its every beginning, after owning his own company and spend some years teaching at different universities in Argentina, he currently works de development of Pharo itself, at the RMoD team of INRIA (France)

Published in: Software
1 Comment
3 Likes
Statistics
Notes
  • Video Part1: https://www.youtube.com/watch?v=pFtTCZn10Ak
    Video Part2: https://www.youtube.com/watch?v=LfkPay9s4wA
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
No Downloads
Views
Total views
1,463
On SlideShare
0
From Embeds
0
Number of Embeds
27
Actions
Shares
0
Downloads
8
Comments
1
Likes
3
Embeds 0
No embeds

No notes for slide

Tide - A Pharo/Amber communication framework

  1. 1. Tide The missing web framework https://github.com/tide-framework
  2. 2. A framework by… Nicolas Petton Esteban Lorenzano Damien Cassou .. while working in the Pharo team at INRIA - RMoD
  3. 3. Esteban Lorenzano Pharo core developer INRIA - RMoD http://smallworks.eu
  4. 4. Yet another web framework?
  5. 5. The problem • Amber + REST? • Seaside?
  6. 6. Amber + REST • Request nightmare • Leads to bad design (if not super-careful)
  7. 7. A small example HeroView HeroModel name: 'Groot' Ok
  8. 8. A small example HeroView HeroModelHeroView HeroModel name: 'Groot' Ok NOPE!
  9. 9. A small example HeroView HeroModel heroId: ID name: 'Groot' Ok HeroService findHeroNamed: 'NotGroot' ID, name, ... findById: Id hero name: 'Groot' Ok HeroDAO findByName: 'NotGroot' hero
  10. 10. Seaside • It is great! - but aging… - and not very well prepared for “Web 2.0”
  11. 11. We can do better
  12. 12. The problem • How to do MVC? • How to expose domain without adding unnecessary layers? • How to keep the “seaside feeling” in a fat client- server application?
  13. 13. How? • Amber + Pharo • Through a communication bridge serialising JSON
  14. 14. Client side • Proxies • Futures (kinda) - Keeps the flow sequential - It is still not synchronic, but works most of the time
  15. 15. Server side • Exposing objects - <action> - <state> • Literals, Collections, Models
  16. 16. Demo
  17. 17. Counter class HeroLair>>#heroes ^ heroes ! HeroLair>>#newHero ^ Hero new ! HeroLair>>#addHero:aHero heroes add: aHero ! !
  18. 18. Counter presenter HeroLair>>#heroes <state> ^ heroes ! HeroLair>>#newHero <action> ^ Hero new ! HeroLair>>#addHero:aHero <action> heroes add: aHero ! !
  19. 19. Counter client lair := TDProxyClient on: ‘/lair’. lair connect. ! lair heroes. “[]” lair newHero then: [ :hero | lair addHero: (hero name: ‘Groot’) ]; then: [ lair heroes collect: #name ]. “[ ‘Groot’ ]”
  20. 20. Marina CMS for the simple minds
  21. 21. Yet another CMS?
  22. 22. The problem • Pier is HUGE • … and hard to learn
  23. 23. How? • Uses only already existing projects (we do not reinvent the wheel…) - On top of Tide (duh!) - User management: Mozilla persona - Syntax: Pillar (same as Pier) - Persistency: Voyage
  24. 24. Features • Suitable for small/simple pages • Very simple • Stable • Fast • Can accept plugins - For now, just a basic blog (Disqus for comments)
  25. 25. Demo
  26. 26. Install Tide Pre-requisites: node, npm, bower, pharo $ git clone git@github.com:tide-framework/tide.git $ cd tide && bower install && cd .. $ pharo Pharo.image eval —save “ Gofer it repository: ‘filetree://tide’; package: ‘BaselineOfTide’; load. BaselineOfTide load” TDServer startOn: 7777. … and open your browser :)
  27. 27. Download it today! https://github.com/tide-framework Thanks!! Esteban Lorenzano - 2014

×