========================================================== What Plone can learn from Rails ========================================================== :Authors: Andy McKay :Date: $Date: October 2007 $ :Email: amckay@bluefountain.com :Copyright: Blue Fountain Rails and Plone are not the same thing ========================================================== Rails is for pretty simple sites ========================================================== Focuses on little site re-use ========================================================== Comparing apples and oranges ========================================================== .. image:: img/826864344_02c7017ca6_b.jpg Easy to be envious of Rails ========================================================== Went from nowhere to huge quickly ========================================================== Why? ========================================================== Just hype and marketing? ========================================================== Yes a bit ========================================================== Really hit a new audience ========================================================== Compare to... ========================================================== ...Java struts, ASP, PHP ========================================================== I believe it has... ========================================================== A shallow learning curve ========================================================== Zope has the famous Z shaped learning curve ========================================================== So what can Plone learn? ========================================================== *Keep the learning curve shallow* ========================================================== **1** Product refresh is damn helpful ========================================================== Yes it's a hack, but *new* developers use it ========================================================== Fiddle, refresh, fiddle, refresh ========================================================== Can we find a way around problems for example ========================================================== Refresh only views, or skins or zcml? ========================================================== Not everything in Rails can be refreshed ========================================================== But enough ========================================================== **2** New terms are confusing ========================================================== Viewlets, portlets, zcml, oh my ========================================================== I don’t know what a portlet is. Or a component, module, block, or snippet. The last system I evaluated had something called "mambots" which, to me, sounded like robotic assistance for breast-feeding. http://adaptivepath.com/ideas/essays/archives/000365.php ======================================================================= New acronym or name is a barrier ======================================================================= .. image:: img/1125677281_68c20249fe_o.jpg A *view* in Plone is similar to a *view* in Django, but... ========================================================================== ...a *view* in Rails is completely different ======================================================================= Can't win ======================================================================= **3** Every new technology introduced is a barrier ================================================================================== Some things like Page Templates rock, glad they got invented ============================================================ In rails you write .rxml ========================================================== ... or .rjs, a wrapper around Ajax ========================================================== I would much rather write Ajax ========================================================== If it was Ajax ========================================================== ... a new developer could pick it up quickly ========================================================== ... I could write it whilst sat in hotel in Milan with no internet connection ================================================================================== New wrappers or new technologies ========================================================== Can be more effort than they are worth ========================================================== **4** Zope 2 is a barrier ========================================================== It's fantastic, old, quirky and wierd ========================================================== Fun text on button in moodle ========================================================== Use carefully -- it can make Apache/PHP crash ...[snip] ========================================================== Then again... some ZMI messages ========================================================== .. image:: img/687140878_8db547e3b8_o.jpg So many old ideas can get in the way ========================================================== Do we need Script (Python), External Methods any more? ========================================================== Do we need the ZMI? ========================================================== Does it help? ========================================================== **5** Don't forget TTW ========================================================== People love TTW, it's great ========================================================== It's the ZODB persistence that sucks ========================================================== Yay for generic setup ========================================================== **6** Trying to separate presentation is good ========================================================== Writing Ruby in rHTML is hacky ========================================================== Can get even uglier in helpers ========================================================== **7** Community is a huge difference ========================================================== Hard to keep up as things grow ========================================================== #rails sucks ========================================================== No matter how fun Rails is I will always miss #plone Geoff Davis **8** Avoid making Plone do everything ========================================================== You can't its not possible ========================================================== People get frustrated and leave trying to bend it ========================================================== A ticked off developer or failed project ========================================================== ...can do more harm than a happy one ========================================================== **9** Keep unit tests easy to write ========================================================== Developers will avoid writing them otherwise ========================================================== I really like Rails test fixtures ========================================================== **10** Marketing really does help ========================================================== Seen those Rails "20 minutes build a whole site" demo? ========================================================== They use scaffold ========================================================== It's a peice of *$%&^* ========================================================== .. image:: img/228622762_30cd2838ec_b.jpg Should never be used in the real world ========================================================== Does nothing good ========================================================== Yet everyone thinks that's what rails can do ========================================================== We shouldn't lie, but we can focus on... ========================================================== ...building an application incrementally ========================================================== **11** We need a 37 signals ========================================================== We've got lots of cool companies ========================================================== But do any have recognition outside Plone? ========================================================== Conclusion ========================================================== ...what I'd really like to do is give a new talk... ========================================================== What Rails can learn from Plone ========================================================== Credits ========================================================== :Help: Ian Cottee, Geoff Davis * Apples: http://www.flickr.com/photo_zoom.gne?id=826864344 * Wall: http://www.flickr.com/photo_zoom.gne?id=1125677281 * Taxi: http://www.flickr.com/photos/martin_hartland/687140878/ * Losers: http://www.flickr.com/photo_zoom.gne?id=228622762