Weblog

published Nov 03, 2021 , last modified Nov 04, 2021

First day sprint report

published Oct 31, 2009

Plone conference 2009

  • ZopeSkel ui has 100% test coverage now
  • folder based folder view has improved, should help get CMF 2.2 closer
  • OTTO: new logo, example package
  • getpaid: testing new branch, select currency in setup panel, got more ideas
  • roadrunner: test coverage added, newer zope.testing (need more info, please let me know), if you care about Plone 2.5 let me know; tomorrow will work on z3c.autoinclude.
  • hostout: getting tests complete, installing and initializing server, work on supervisor
  • LinguaTools: improving test coverage and fixed some bugs because of that, jquery integration.
  • Third party products for Plone 4: mr.parker to check if a package has only one owner on pypi; updating CacheSetup, Poi, AddRemoveWidget, DataGridField, collective.ads, collective.classifieds, collective.discuss, Scrawl, Collage, ref browser widget, Maps, uploadify, flash upload, image editor, ploneboard.
  • Social media: moving plone.org to WordPress (joke), brainstorming, writing.
  • Versioning and CMFEditions for dexterity and East Asian Language.
  • AGX: added UML 2.2 profile support, needed for generation chain, work on transformation.
  • Singing and Dancing newletter package: closing bugs, blueprinting some new features, refactoring for features that we want, work on letting portal users and groups be subscribers.
  • Video sprint: cleaned up Plumi buildout, translated in Indonesia (also Plone 3 core), blob work (come hang out with us if you know about blobs), plonevideosuite buildout (in collective), uploadify integration, TinyMCE integration to render as a player, creative commons licenses. Tomorrow pod casting, metadata extraction, nginx.
  • Banjo: getting up to speed getting Deliverance installed and comfortable with it, looking at jqGrid for better UI integration.
  • Amberjack: finished tour number 9, fixed problems with kupu, great new things, graphical elements to make it more usable, translations for Slovenian, Italian, Spanish and Polish.
  • Plone social RPX platform for SSO, like with google, facebook. Profile editing view. Code is at bit bucket.
  • Integration of git for Plone dev tool chain. Svn upstream, git locally, caching, concept is finished and we started working, shorter-named repositories in mr.developer.
  • Limi: I have written zero lines of css today, helped people get Plone 4, lot of discussions, I released firefox 3.6 beta 1, take an image and drop it into Deco is now possible with that, ZMI security page does not lock up anymore. xdv, theme discussions.
  • xdv fixed on Plone 4.
  • Deco: some dexterity issues, fixes.
  • Blob types, LinguaPlone adding tests, ATContentTypes can remain unchanged to keep working in Plone 3 and 4.
  • Funkload used for load testing of core Plone.

Tomorrow we start at 9:00.

Migrating a Product to Plone 4.0

published Oct 31, 2009

Some preliminary results and ideas based on first steps to get Products.Poi working on Plone 4 (not there yet).

Setup your buildout

Soon: add Plone==4.0a1 to the eggs in your buildout.cfg

Now: add your egg to the development buildout: http://tr.im/TryPlone4

Example buildout.cfg for Products.Poi

[buildout]
extends = buildout.cfg
auto-checkout +=
    Products.Poi
    Products.AddRemoveWidget
    Products.DataGridField

[sources]
Products.Poi = svn https://svn.plone.org/svn/collective/Products.Poi/trunk
Products.AddRemoveWidget = svn https://svn.plone.org/svn/archetypes/Products.AddRemoveWidget/trunk
Products.DataGridField = svn https://svn.plone.org/svn/archetypes/Products.DataGridField/trunk

[instance]
eggs +=
    Products.Poi

Things to test

  • Does bin/buildout work?
  • Does the instance start up in the foreground?
  • Can you install your product?
  • Can you create/view your content type?
  • Do the tests pass?

Highlights

  • Python2.6, Zope 2.12, CMF 2.2
  • No more global_defines.pt

Poi Example 1

ImportError: No module named Interface

Poi Example 2

ImportError: No module named GlobalTranslationService
  • use zope.i18n

Old:

from Products.PageTemplates.GlobalTranslationService \
    import getGlobalTranslationService 
ts = getGlobalTranslationService() 
msg = ts.translate('Poi', msg, context=self.context)

New:

from zope.i18n import translate 
msg = translate(msg, 'Poi', context=self.request) 

[Update: you need to pass the request instead of the context.]

Plone 3.x and 4?

Compatibility can work:

try:
    from beer import Grolsch
except ImportError:
    # BBB
    from beer import Heineken

or maybe not:

install_requires=[
    'Plone>=4.0dev',
],

Sprint topics

published Oct 31, 2009

Presentation of sprint topics for the Plone Conference 2009 in Budapest

Sprint list is on the conference website: http://www.ploneconf2009.org/program/sprint

Limi's work list:

  • I am going to work on the sunburst theme, completing the css, integrate jquerytools, testing in all browsers.
  • Figure out packaging strategy for Plone 5, decide on theme selection.

Limi's wish list:

  • Our template customization story and jbot.
  • Testing and updating add-on products for Plone 4. Key to the success of Plone 4.
  • Next generation CacheFu: five.caching. CacheFu was built for Plone 2.1
  • I want LinguaPlone to love Dexterity.
  • Look into http://stackoverflow.com to answer questions instead of the plone-users list. Theme it with xdv. There are a lot of frustrated .net developers on stack overflow, so it is good if they see us.
  • QA on collective.xdv (binary eggs on Mac).
  • Reduce KSS dependency.
  • Timezone support
  • HttpOnly cookies in Plone 4
  • Make all tests exercise unicode in Plone 4. Don't just add ascii as title when testing a portlet. Add umlauts, harts, etc.
  • Scripts to build VMWare and Amazon and ISO images from the Unified Installer.
  • Nightly performance tests. See if performance suddenly drops after a recent change. Talk to me if you want a list of things to check.
  • Version ping daily or weekly to see what versions people are using. Opt-in.
  • Typogrify filter. Python script to change -- into something prettier.
  • Collections UI improvements. It is so much better in Plone 4. Rob and Geir have worked on this, so get pointers from them if you want to work on this.
  • Better commenting system
  • css improvements for plone.org and Trac
  • Marketing:
    • Get a nice Plone 4 feature overview
    • Make comparisons of Plone versus other systems. Not one-sided things; guide people into using the right tool.
    • Move plone-announce to Feedburner. We have about 500 to 1000 addresses that have to be subscribed over from plone-announce to Feedburner.
  • Clean out the issue tracker.
  • Reproduce bugs, close irrelevant ones (like for NuPlone which we are not going to fix).

Topics by others

  • Wolfgang: LinguaTools, helper set of rules which allow doing things to multiple translations of an object in one go, to avoid repetitive work. We want to make it nicer, more watertight, more modular, we want more tests.
  • David: we find E-commerce difficult. We want to make PloneGetPaid easier, and want to move it to the collective.
  • Andreas Zeidler: Plone 4 performance. Blob support, unified folders. Fix remaining bugs, update documentation about how to enable blob-related fields. If you have a large zodb with files, please donate it for testing.
  • Tom: funkload automated performance testing.
  • Tom: git integration for Plone core developers.
  • Charlie Clark: core CMF, folder listing view based on formlib
  • David Glick: Update add-on products to Plone 4; don't wait till Plone 4 is released. We can assist you now. Document common problems. Make list of products that are Plone 4 compatible.
  • Otto, an http publisher without the overhead.
  • Rob Gietema: Deco, Dexterity integration.
  • Mike Holm: develop a better presence for education, build a website to give info to groups working in the education sector.
  • Several people: make video content of first-class citizin. Plumi, p4a video, best of breed video problems, create a definitive buildout config. Plone 5 will have tiles for audio and video. Also: we have catering and coffee all day.
  • Nate Aune: Banjo, point-and-click easy theming in Plone with Deliverance. Find me with the video sprinters.
  • Dylan Jay: hostout, deploy Plone to any server you want with one command. I want Amazon ootb, figure out some best practices. Integrate with the ZopeSkel UI.
  • Amberjack, tutorial tour product. We could help some help from someone who knows kupu.
  • Ramon Navarro: multilingual, LinguaPlone for Dexterity, relations.
  • Carsten Senger: content import and export for Plone. transmogrifier. How many options are really necessary, what could the UI be.
  • Jens Klein: AGX modeling framework, python egg generation part, generate Dexterity types.
  • Chris Calloway: ZopeSkel, had a BBQ sprint three weeks ago, we have som work left from that, package up the web interface, templates for Plone 4, Dexterity, WSGI, refactored into sub packages, documentation, fix mailing list.
  • Christian Scholz, (MrTopf): social media.
  • Bruno: Singing and Dancing
  • Jordan Baker: roadrunner fast testing framework, not working so well with Plone 4 and Dexterity, we want to add tests, continuous integration server, Mac OS.
  • PloneSocial, RPX (OpenId-like)

Meet up in the hallways, the open area where we gathered the whole week, and talk to the topic leaders.

Lighting Talks Friday

published Oct 30, 2009

Lighting talks on the last day of the Plone Conference 2009 in Budapest, not counting the weekend sprint. A big thank you to Balasz Ree and all the others!

Robert Niederreiter: agx

agx does tree transformation with python.

Pawel Lewicki: ZPublisher.Client.Object

Get the real zodb object via url:

ZPublisher.Client.Object('http://.../obj', user, pass)

Nate Aune: ContentMirror

Push zodb data to a relational database.

Slides: http://jazkarta.com/contentmirror-lightning-talk.pdf

Fred van Dijk: Rapucation

Project for a school. Music teacher. Teenagers do not care about classical music, just videos. So let them make rap videos: rapucation. Let them share and react with others.

  1. LinguaPlone only shows Dutch content when you watch the site in Dutch. But we want them to see German and English reactions as well. So we tweaked LinguaPlone. Set Language='all' in all calls to the portal_catalog. And we did some tweaks for ordering.
  2. Don't store the video in Plone. We used ftp.streamingprovider.com and tweaked the urls that are shown.
  3. Notify reviewers by email. Use content rules for that. plone.app.contentrules.

See http://rapucation.eu/

Slides: http://www.zestsoftware.nl/presentations/rapucation.pdf

Steve McMahon: Plone Education

Book by Erik Rose: Plone 3.0 for Education

Mikko Ohtamaa: Plone Developer documentation

Chris Calloway: "We need less innovation and more documentation for a while."

There is a lot of knowledge around, but tacit knowledge needs to become explicit knowledge.

  1. Write down problem.
  2. Write down answer.

http://plonemanual.twinapex.com/

Package: collective.developermanual

Andrew Mleczko: Content import

How to import 120,000 documents in 8.43 minutes? Idea: only create the catalog brains. Let users create the real data later. Some dummy objects and a traverser later we are done very fast!

Andreas Zeidler: collective.solr

SOLR is a search engine. collective.solr does integration in Plone. Andy did a demo.

http://pypi.python.org/pypi/collective.solr

Andrew Carter: Plumi

Plumi is video sharing: http://EngageMedia.org Based on ATVideo. We want to sprint on Plumi this weekend.

See http://blog.plumi.org/

Florian Friesdorf: mr.developer

http://pypi.python.org/pypi/mr.developer written by Florian Schulze. Check out packages in your buildout.

git-svn and gitify. Central svn, local git! In mr.developer you have some new options now: revision and pkg_base.

Sjoerd: Deco

I am a student at Four Digits. Assignment: create forms and interface for adding/editing application tiles to Deco. Integrate it with Dexterity. Create rendering engine to render the page. I have made progress and want to sprint on it.

Testing in Plone

published Oct 30, 2009

Open space

Testing tutorial: http://plone.org/documentation/tutorial/testing

Look at the tests in Plone itself, or at third party products. Find a product that does something similar and look at its tests.

If a product is not tested at all, a good way to start is add testbrowser tests to just create a content type of that product.

Use pdb in doctests: http://pypi.python.org/pypi/doctestpdbhacks

The p4a packages have good doctests.

The danger of doctests is that you get neither good documentation nor good tests.

Patrick Gerken: Grease monkey script for hiding code examples and showing more links on pypi: http://userscripts.org/scripts/show/50614

The paster templates could add a bit more documentation about how to test.

collective.testcaselayer should help avoid some of the boiler plate code needed.

Hanno created plone.recipe.alltests to run all tests of the packages you selected.

z3c.testsetup should do the same.

You can use nose for tests.

In a pdb in your tests you can start a zope server where you can use your browser to click through the site:

>>> from Testing.ZopeTestCase.utils import startZServer
>>> startZServer()
('127.0.0.1', 55143)