ZopeSkelthe past, present and future           Cris Ewing    Cris Ewing, Developer LLC     Plone Conference 2012    Arnhem...
Overview• The beginning• The early years• The awkward adolescense• The No-Fun ZopeSkel BBQ Sprint• The transition to templ...
In The BeginningPhoto by	NASA Goddard Space Flight Center via Flickr(http://www.flickr.com/photos/gsfc/6143668219/) - CC-BY
Products
ArchGenXML
Content Types Only
Photo by	JD Hancock via Flickr(http://www.flickr.com/photos/jdhancock/3440716774/) - CC-BY
• Need to create egg packages• Need to create things other than ATCT• Need a tool to help
25/05/2006Image by heyitsopower via Flickr(http://www.flickr.com/photos/heyitsopower/4864376100/) - CC-BY
First checkin:Daniel Nouri
• basic_package (from PasteScript)• basic_namespacepackage• basic_zope
• June, 2006 (0.2) • plone_core (hannosch)• July-August, 2006 (0.3) • plone2_theme (davconvent) • nested_namespace (hannos...
• January-March, 2007 • plone3_buildout (optilude) • plone3_theme (justizin) • plone25_theme (davconvent)
June, 2007• ZopeSkel is now 1 year old• Provides nine templates• Seven contributing authors • nouri, davconvent, hannosch,...
Late 2007• Archetype template added (pjesi)• Recipe template for buildout recipes (tarek)• Hosting buildout template (wich...
and then....localcommands
• Added December 12, 2007 (mustapha)• Enhance a package already created• Initial offerings include: • portlet • browser vi...
• Shortly after, ATSchema added • Iteratively build AT Content Type schema
...and there was much rejoicing
Photo by Caylin via Flickr(http://www.flickr.com/photos/10279741@N00/3593353427/) CC-BY-NC-ND
Too Many Questions
archetype (from ZopeSkel#archetype)-----------------------------------title               The title of the project       d...
WTF??!?zope2product: Are you creating a Zope 2 Product?
Too Many Templates
• archetype           • plone3_portlet• basic_namespace     • plone3_theme• basic_zope          • plone_app• nested_namesp...
Photo by cwgoodroe via Flickr(http://www.flickr.com/photos/cwgoodroe/3009281516/) - CC-BY-NC-ND
Too Much Codeespecially too much code repeated
difficult to track drift
Dependency Problems
• Local commands need a package to be in  the working set• This means that paster must ‘install’ your  new package• Your p...
local commands           =>Heavy Paste Dependency
two little linessetup_requires=["PasteScript"],paster_plugins=["zopeskel.localcommands"],
Three Big Problems
One Big Question
who is ZopeSkel for?
October 2-5, 2009
Five Developers• Joel Burton• Chris Calloway• Josh Johnson• Chris Rossi• Cris Ewing
Make ZopeSkel Easier
Goals• Clean up templates• Improve questions• Wrap `paste create -t` to improve  interactions
Outcomes• bin/zopeskel script • hides `paste create -t` • provides inline validation of answers • provides inline help for...
Outcomes• An official ‘maintainer’ for ZopeSkel
Outcomes    • A plan to break up ZopeSkelhttps://github.com/collective/ZopeSkel/blob/2.x-maintenance/SPLITTING-PROPOSAL.txt
Anti-Outcomes• Failure to publicize the outcome sufficiently• Failure to fully document the plan• Failure to clean up exist...
↓ blame this guy ↓
Photo by Laura Molnar via Flickr(http://www.flickr.com/photos/moosepics621/2207683464/)CC-BY-NC-ND
Enter “templer”
• Goal to ‘break up’ monolithic ZopeSkel• Work starts in early 2010• Provide templates in packages of related  functionali...
Breaking Up
templer.core• vars (questions)• base templates• control script (wrapper of `paster create`)• structures • ‘docs’ for eggs ...
What are Structures?• paster templates that you don’t ‘run’ • shared filesystem layout • reduce repetition • allow injectio...
templer.coretempler.buildout
templer.buildout• Provides templates for: • basic buildout • zc.buildout recipes• Provides structures for: • bootstrap.py
templer.coretempler.buildout  templer.zope
templer.zope• Provides templates for: • basic zope package (my.package) • nested zope package (my.nifty.package)
templer.coretempler.buildout  templer.zope templer.plone
templer.plone• Provides templates for: • basic plone package (my.package) • nested plone package (my.nifty.package) • arch...
templer.core                                  templer.buildout                                    templer.zope            ...
What about Local Commands?
Photo by	Matthew via Flickr(http://www.flickr.com/photos/purplemattfish/3918004964/) - CC-BY-NC-ND
templer.localcommandstempler.plone.localcommandstempler.plone[localcommands]
this is OPTIONAL
Rebuilding
ZopeSkel Should  ‘just work’
Paste
templer Paste
ZopeSkeltempler Paste
ZopeSkel is atempler application
easy_install zopeskel
Templates✓archetype            • plone3_portlet✓basic_namespace      • plone3_theme✓basic_zope           ✓plone_app✓nested...
Local Commands• Plone • browserview • browserlayer • portlet• Archetypes • at_contenttype • at_schema_field
What’s Next?
Need Templates• dexterity (underway)• buildouts (unify with installers)• theme templates (diazo, traditional?)
Local Commands• viewlet• utility• z3c form• dexterity schema builder• ???
Shameless Plug
and beyond that?
Crushinator
Crushinator• No PasteScript/PasteDeploy/Paster• No specific templating system • Cheetah • Jinja • python string formatting?...
Questions?cris@crisewing.com     cewing   @crisewing
ZopeSkel: The past, present and future
ZopeSkel: The past, present and future
ZopeSkel: The past, present and future
ZopeSkel: The past, present and future
ZopeSkel: The past, present and future
Upcoming SlideShare
Loading in...5
×

ZopeSkel: The past, present and future

735

Published on

ZopeSkel turned six this year, and many changes are underway. Learn where it came from, what is happening now, and where the system is headed.

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
735
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
8
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • ZopeSkel: The past, present and future

    1. 1. ZopeSkelthe past, present and future Cris Ewing Cris Ewing, Developer LLC Plone Conference 2012 Arnhem, the Netherlands
    2. 2. Overview• The beginning• The early years• The awkward adolescense• The No-Fun ZopeSkel BBQ Sprint• The transition to templer• The future
    3. 3. In The BeginningPhoto by NASA Goddard Space Flight Center via Flickr(http://www.flickr.com/photos/gsfc/6143668219/) - CC-BY
    4. 4. Products
    5. 5. ArchGenXML
    6. 6. Content Types Only
    7. 7. Photo by JD Hancock via Flickr(http://www.flickr.com/photos/jdhancock/3440716774/) - CC-BY
    8. 8. • Need to create egg packages• Need to create things other than ATCT• Need a tool to help
    9. 9. 25/05/2006Image by heyitsopower via Flickr(http://www.flickr.com/photos/heyitsopower/4864376100/) - CC-BY
    10. 10. First checkin:Daniel Nouri
    11. 11. • basic_package (from PasteScript)• basic_namespacepackage• basic_zope
    12. 12. • June, 2006 (0.2) • plone_core (hannosch)• July-August, 2006 (0.3) • plone2_theme (davconvent) • nested_namespace (hannosch) • plone_app (hannosch)
    13. 13. • January-March, 2007 • plone3_buildout (optilude) • plone3_theme (justizin) • plone25_theme (davconvent)
    14. 14. June, 2007• ZopeSkel is now 1 year old• Provides nine templates• Seven contributing authors • nouri, davconvent, hannosch, optilude, brcwhit, justizin, pelle• Version 1.0 tagged September, 2007
    15. 15. Late 2007• Archetype template added (pjesi)• Recipe template for buildout recipes (tarek)• Hosting buildout template (wichert)• Version 1.3 in December, 2007
    16. 16. and then....localcommands
    17. 17. • Added December 12, 2007 (mustapha)• Enhance a package already created• Initial offerings include: • portlet • browser view • zcml meta directive • content type
    18. 18. • Shortly after, ATSchema added • Iteratively build AT Content Type schema
    19. 19. ...and there was much rejoicing
    20. 20. Photo by Caylin via Flickr(http://www.flickr.com/photos/10279741@N00/3593353427/) CC-BY-NC-ND
    21. 21. Too Many Questions
    22. 22. archetype (from ZopeSkel#archetype)-----------------------------------title The title of the project default: Plone Examplenamespace_package Namespace package (like plone) default: plonepackage The package contained namespace package(like example) default: examplezope2product Are you creating a Zope 2 Product? default: Falseversion Version default: 0.1description One-line description of the package default: long_description Multi-line description (in reST) default: author Author name default: Plone Foundationauthor_email Author email default: plone-developers@lists.sourceforge.netkeywords Space-separated keywords/tags default: url URL of homepage default: http://svn.plone.org/svn/plone/plone.examplelicense_name License name default: GPLzip_safe True/False: if the package can bedistributed as a .zip file default: False
    23. 23. WTF??!?zope2product: Are you creating a Zope 2 Product?
    24. 24. Too Many Templates
    25. 25. • archetype • plone3_portlet• basic_namespace • plone3_theme• basic_zope • plone_app• nested_namespace • plone_hosting• plone • plone_pas• plone2.5_buildout • recipe• plone2_theme • silva_buildout• plone3_buildout
    26. 26. Photo by cwgoodroe via Flickr(http://www.flickr.com/photos/cwgoodroe/3009281516/) - CC-BY-NC-ND
    27. 27. Too Much Codeespecially too much code repeated
    28. 28. difficult to track drift
    29. 29. Dependency Problems
    30. 30. • Local commands need a package to be in the working set• This means that paster must ‘install’ your new package• Your package must also depend on PasteScript (which depends on PasteDeploy and Paste)
    31. 31. local commands =>Heavy Paste Dependency
    32. 32. two little linessetup_requires=["PasteScript"],paster_plugins=["zopeskel.localcommands"],
    33. 33. Three Big Problems
    34. 34. One Big Question
    35. 35. who is ZopeSkel for?
    36. 36. October 2-5, 2009
    37. 37. Five Developers• Joel Burton• Chris Calloway• Josh Johnson• Chris Rossi• Cris Ewing
    38. 38. Make ZopeSkel Easier
    39. 39. Goals• Clean up templates• Improve questions• Wrap `paste create -t` to improve interactions
    40. 40. Outcomes• bin/zopeskel script • hides `paste create -t` • provides inline validation of answers • provides inline help for questions • provides ‘classes’ of questions • gives good feedback, and provides hooks for feedback from new templates
    41. 41. Outcomes• An official ‘maintainer’ for ZopeSkel
    42. 42. Outcomes • A plan to break up ZopeSkelhttps://github.com/collective/ZopeSkel/blob/2.x-maintenance/SPLITTING-PROPOSAL.txt
    43. 43. Anti-Outcomes• Failure to publicize the outcome sufficiently• Failure to fully document the plan• Failure to clean up existing docs still advising ‘the old way’ (paster create -t)
    44. 44. ↓ blame this guy ↓
    45. 45. Photo by Laura Molnar via Flickr(http://www.flickr.com/photos/moosepics621/2207683464/)CC-BY-NC-ND
    46. 46. Enter “templer”
    47. 47. • Goal to ‘break up’ monolithic ZopeSkel• Work starts in early 2010• Provide templates in packages of related functionality.• Keep it working ‘the same’ for newcomers
    48. 48. Breaking Up
    49. 49. templer.core• vars (questions)• base templates• control script (wrapper of `paster create`)• structures • ‘docs’ for eggs • licenses
    50. 50. What are Structures?• paster templates that you don’t ‘run’ • shared filesystem layout • reduce repetition • allow injection of files and folders in response to questions
    51. 51. templer.coretempler.buildout
    52. 52. templer.buildout• Provides templates for: • basic buildout • zc.buildout recipes• Provides structures for: • bootstrap.py
    53. 53. templer.coretempler.buildout templer.zope
    54. 54. templer.zope• Provides templates for: • basic zope package (my.package) • nested zope package (my.nifty.package)
    55. 55. templer.coretempler.buildout templer.zope templer.plone
    56. 56. templer.plone• Provides templates for: • basic plone package (my.package) • nested plone package (my.nifty.package) • archetype-based add-on • plone tile• Provides structures for: • GenericSetup profile (basic and nested)
    57. 57. templer.core templer.buildout templer.zope templer.plone✓archetype • plone3_portlet✓basic_namespace • plone3_theme✓basic_zope ✓plone_app✓nested_namespace • plone_hosting✓plone • plone_pas• plone2.5_buildout ✓recipe• plone2_theme • silva_buildout• plone3_buildout
    58. 58. What about Local Commands?
    59. 59. Photo by Matthew via Flickr(http://www.flickr.com/photos/purplemattfish/3918004964/) - CC-BY-NC-ND
    60. 60. templer.localcommandstempler.plone.localcommandstempler.plone[localcommands]
    61. 61. this is OPTIONAL
    62. 62. Rebuilding
    63. 63. ZopeSkel Should ‘just work’
    64. 64. Paste
    65. 65. templer Paste
    66. 66. ZopeSkeltempler Paste
    67. 67. ZopeSkel is atempler application
    68. 68. easy_install zopeskel
    69. 69. Templates✓archetype • plone3_portlet✓basic_namespace • plone3_theme✓basic_zope ✓plone_app✓nested_namespace • plone_hosting✓plone • plone_pas• plone2.5_buildout ✓recipe• plone2_theme • silva_buildout• plone3_buildout
    70. 70. Local Commands• Plone • browserview • browserlayer • portlet• Archetypes • at_contenttype • at_schema_field
    71. 71. What’s Next?
    72. 72. Need Templates• dexterity (underway)• buildouts (unify with installers)• theme templates (diazo, traditional?)
    73. 73. Local Commands• viewlet• utility• z3c form• dexterity schema builder• ???
    74. 74. Shameless Plug
    75. 75. and beyond that?
    76. 76. Crushinator
    77. 77. Crushinator• No PasteScript/PasteDeploy/Paster• No specific templating system • Cheetah • Jinja • python string formatting??• Questions and filesystem structures independent
    78. 78. Questions?cris@crisewing.com cewing @crisewing
    1. A particular slide catching your eye?

      Clipping is a handy way to collect important slides you want to go back to later.

    ×