Plone
This is here to serve as contents for the atom/rss feed for Plone, also read by planet.plone.org.
Keynote Georg Greve: Rising to the challenge of our own success
Keynote by Georg Greve, at the Plone Conference 2009 in Budapest, Hungary
I am a developer, physicist, author, working for Free Software Foundation Europe.
"Politics is a process by which groups of people make decisions." (http://en.wikipedia.org/wiki/Politics) Decisions about how to spend money, do we relicense software, anything.
"Everything is politics" (Thomas Mann).
The Plone Foundation has Relicensed some of the software this year. You managed to boil that down to a majority vote. Plone could only do that because it has the Plone Foundation. Without such a body you would need consensus, where there is no active opposition to an idea anymore. Consensus can work, but it can also lead to "shoutocracy" where the loudest voices win. For relicensing consensus is not enough, you would need unanimity. Can lead to deadlock, for example when one of the contributors is dead and can no longer agree to anything.
Copyright law. For national laws you need majority. In bi/multilateral situations you need unanimity: all parties have to agree. In the United Nations you need consensus. Unanimity can lead to harsh situations, where one party is obviously stronger, or single-party systems where the party says "everyone voted for us".
"In politics, nothing happens by accident. If it happens, you can bet it was planned that way." (Franklin D. Roosevelt).
Trade Related Aspects of Intellectual Property Rights (TRIPS) agreement. Was a coalition of the willing. U.S. Special 301 asks corporations: which companies have been "naughty" this year? Leads of black/grey-listing on behalf of the other corporations. Lobbying is very, very profitable, calculated as 22,000 by a few professors.
"Politics is too serious a matter to be left to politicians." (Charles de Gaulle)
You have to be at the negotiation table otherwise you have no influence, your wishes/needs will not be taken into account. Software patterns, web standards are affecting all of us.
"Those who are too smart to engage in politics are punished by being governed by those who are dumber." (Plato)
Challenge: single vendor versus community. Plone has decided it is a community. How do you address growth? How do we keep our core strong when more and more people come to the community? How do we keep our community able to make decisions? What about the structural "bottleneck bugs" that you know have to be fixed but no-one wants to do it and no customer is going to pay for it?
Open Database Alliance, http://odba.org, is being created. Membership fees are for 50 percent allocated by members and only 20-30 percent allocated by the board. So if either the members or the board want something, it can happen. There is room for plurality and diversity there, also room for Plone as it is also about databases.
Some conclusions.
- Get active. Get involved. "In politics, an organised minority is a political majority." (Jesse Jackson)
- The most important asset of Plone is you, the community.
- Coordinate with your allies. You are not alone. Others are working on the same issues as you. Build alliances with them. That way you can shape things.
"What do your want to be a sailor for? there are greater storms in politics than you will ever find at sea. Piracy, broadsides, blood on the decks. You will find them all in politics." (David Lloyd George)
Build structures that allow your core people to operate without burning out.
Don't make enemies lightly; keep a professional dispute on a professional level: don't make it personal. It is easier to turn a friend into an enemy than turning an enemy into a friend.
Plone Foundation meeting
Annual meeting of the Plone foundation during the Plone conference 2009.
Recognitions
Thanks to the conference organizers! If you want to organize the next Plone conference, get in your proposal now.
Open Society Institute gave a lot of grands for this conference.
Jon Stahl did a great job of leading the foundation this year. We appreciate his efforts this year.
Mark's legal efforts.
Reports
Advisory board members function as counselors to the board.
Foundation sponsorships, http://plone.net. We now have money in the bank to do really exciting things.
New marketing plan. We want Plone to be represented on more events, conferences, sprints. There is now money to sponsor that. There is an application form on http://plone.org/foundation/event-sponsorship
Logo usage guidelines were clarified. We don't want to be harsh, and certainly for we like to have differing logos for conferences. Follow the guidelines. When you are not sure, contact us.
http://plone.org and http://plone.net hosting. plone.org is now hosted by SixFeetUp on excellent hardware. Pilot Systems handles plone.net.
Framework components relicensing policy. Some pieces of Plone are excellent for using in non-Plone projects, so in some cases we make it easier to share those pieces. We wanted this for a long time and Wichert got on our case and pushed us and it happened. Good example for how you can help the Plone Foundation.
Domain usage guidelines and consolidations. We want to have country specific Plone domains under foundation control.
Release manager appointments; these people get paid (though it does not nearly cover the work that they do). Plone 3 release manager is Wichert. For Plone 4 it is Eric Steele. Hanno is for Plone 5.
FOWABE. Contact with the European Commission.
Code valuation. We needed to come up with the value of Plone, for tax reasons. How much is Plone worth? We calculated it as 3 million dollars.
Tony Roberts handles the finances of the foundation. We went from about 48,000 dollars of assets in 2008 to 133,000 dollars in 2009, not counting the worth of the code.
8 new Plone Foundation members. Rob Gietema, Darci Hanning, Joël Lambillotte, Jonathan Lewis, Robert Niederreiter, Clayton Parker, Erik Rose, and Eric Steele. If you are in the room now and are not a member, then contact the foundation as you are obviously interested enough in Plone.
Election for the new board closes at 10:00 tomorrow morning, Budapest time, so get your vote in.
More information about the Plone Foundation: http://plone.org/foundation
Lighting Talks Thursday
Thursday's lightning talks at the Plone conference 2009
Lightning talks
- Johannes Raggam: activity model runtime engine for python
- Antonio De Marinis and Alin Voinea: EEA Faceted Navigation
- Patrick Gerken: Using buildbot with Plone
- Jakob: making money while talking to your customers
- mr.freeze
- Nate and Peter: SSL does not protect you
- Dylan Jay: collective.hostout
- Calvin Hendryx-Parker: Plone Tune-Ups
- Henning Rietz: Plone-Driven Plone Development (PD2)
- Thierry Benita: External Editor
- Jens Klein: cornerstone.soup
- Ricardo Alves: LDAP storage for Archetypes
- Matt: Real world Deliverance-style theming
- Denis Mishunov: collective.caroussel
Johannes Raggam: activity model runtime engine for python
Based on UML2 activity model. Token based, runtime marker, can hold data. Action node delegates execution to external implementation.
Use cases: business process support, document workflow support, model based testing, industrial automation, visual programming, web form flow wizards.
Usable prototype, see http://svn.plone.org/svn/collective/activities
Patrick Gerken: Using buildbot with Plone
Despite some problems, buildbot still rocks. Always use virtualenv. Use the correct python version.
Look at collective.buildbot: http://pypi.python.org/pypi/collective.buildbot
Make your project compatible with buildbot. You need a test script. Pin zope.testing to the newer 3.6.0. Put your code in the src/ directory. Don't forget to configure zope fake eggs in your buildout config. Add your dependencies in setup.py and your GS profile.
Always test only one package. Don't use mr.developer. Pin all versions of your eggs.
Jakob: making money while talking to your customers
When your customers call you, can you bill them? You want to buy beer. So get them to sign a support contract. But you don't want them to call you as you want to have time to drunk beer. So give them training.
mr.freeze
Trigger a pdb in a running zope via a USR1 signal. See http://pypi.python.org/pypi/mr.freeze
Nate and Peter: SSL does not protect you
You can buy very cheap SSL certificates for your site. The end users does not see the difference between a good and bad certificate. So you think you are talking to a bank but you are talking to a guy drinking a cocktail in Fiji. We are a startup that wants to improve that. See http://company-on.net/
Dylan Jay: collective.hostout
How to host a Plone site for 20 dollars in 20 minutes. We want a big blue button that does the entire deployment for you. VPSs are really cheap now so get one with root access. Add a part with collective.hostout to your buildout.
See http://pypi.python.org/pypi/collective.hostout
Gives you one command to deploy your buildout.
Calvin Hendryx-Parker: Plone Tune-Ups
Easy way for everyone to contribute. We did 20 tune-ups the past year. Closed lots of Plone tickets. Pledge some hours as company. We do this every three weeks.
Henning Rietz: Plone-Driven Plone Development (PD2)
The model is Plone content. We don't like to write boiler plate code, writing zcml or xml, migration pain, learning curve for new developers. We love Plone, model driven development, ArchGenXML.
Our model lives in the zeo server, every developer has a zeo client. Makes your design patterns explicit. Prepares you for major changes, like going from Archetypes to Dexterity.
Thierry Benita: External Editor
Use your current editor, whatever it is, to edit content in Plone. Also works with Gimp. Can also hook in with versioning.
Jens Klein: cornerstone.soup
Isolated container for queryable records. Content that is not really CMSish, like votes, data from a poll, orders in a web shop. Stored generic records. Add a catalog factory and a few utilities, stir and cook. Enjoy your soup.
Ricardo Alves: LDAP storage for Archetypes
You can use LDAP in Plone as an authentication backend, see Products.PloneLDAP. You can use it to store content, for example address book, members as content. Problem: not transaction aware. So: Products.ldapconnection. Much like old-style SQL connection objects. Supports client-side transaction support, partially. Also archetypes.ldapstorage. Future: new z2 components, more testing, improve storage implementation.
See http://pypi.python.org/pypi/Products.ldapconnection and http://pypi.python.org/pypi/archetypes.ldapstorage
Matt: Real world Deliverance-style theming
"Lipstick on a pig." Challenge: legacy .net portal. Looked dated. Too long urls. HTML was not valid. It was a closed box, so we could not change the code. Combine that with Plone and another system in one über-portal. Set up a WSGI pipeline: source.portalv, htmlcleaner (using lxml), linkrewrite (rules to make snes of urls), xslt, navmerger (bring the Plone).
Denis Mishunov: collective.caroussel
Show content in a caroussel. Accepts any content type, not just images. Based on jQuery.
Jeroen Vloothuis and Jan Murre: Jamming with Plone and Django
By Jeroen Vloothuis and Jan Murre, Pareto, The Netherlands
This talk is about our experience with using both Plone and Django within several projects. We will tell what we did, how it worked and what didn't work.
We want to help you avoid make mistakes that we did when integration Plone and Django.
Step one in integration: buildout recipe for Django: djangorecipe.
In Apache we added rewrite rules to choose between Django and Plone. Watch out when creating an object in Plone that you can never reach because Apache rewrites that to Django.
We did a project for AcademicTransfer with Django and Plone. Job market niche for academic jobs. They had a 10-year old ColdFusion website. Vendor lock-in.
We used SOLR as a search engine. Django for the job board. Plone for the content management.
Django asks Plone for the base template, which is mostly the same as the main tamplate but with some regular expression replacements. Simple, but it breaks easily, so add unit tests. Complete control, but hard to debug. The alternative would have been Deliverance, but that technique was very young then.
Internationalization issues. Plone uses a cookie and Django uses a session. Solution: all language settings go through Django, using links.
User management was Django-only. Javascript based. The Plone users were only used for the content management. Browser does an ajax call to Plone to get the user name and Plone asks Django using the session. The javascript is cache-friendly: pages are the same for every logged in user.
RSS in portlets for the top vacancies and some more.
Another project with Django-Plone integration was for Zeelandia. They had a lot of Plone sites already, plus some Zope-only. They wanted SSO (single sign-on) with OpenId. Also a dashboard with SSO. Searching is done on multiple sites. Browser view on the Plone site is just an HTTP GET; scalable and fast. We should have used Open Search, but we only noticed that when we were done building. Security could be more advanced.
Plone user management with a PAS plugin. We made it possible to query the openid provider so we could search for users in the Plone UI. So we could have both normal and openid users.
Plone is kick-ass for content management. For more interactive stuff I would use Django.
Room: you could use server side includes to get the user information in the page so you don't use two requests from the browser.
Alec Mitchell: Why ask Plone the name and let Plone ask Django? You could ask Django directly.
Well, it was hard to test locally. We may change that. Could use JSON.
Eric Steele: A Look at Plone 4
By Eric Steele, WebLion Group, Penn State University, United States
An overview of the new features and benefits of Plone 4 and how we got here.
A PLIP is a PLone Improvement Proposal. The framework teams reviews these to see if they are fine for inclusion in Plone 4. A record 26 plips have made the cut and go into the new Plone 4.0. The framework team and implementers require a round of applause and beers!
New in Plone 4:
- Zope 2.12 (fully eggified, flexible storage options)
- python 2.6 (faster, better memory management, officially supported)
- CMF 2.2
- Better performance (improvement in median response time).
- SecureMailHost is made redundant by improvements in Products.MailHost. Optional mail queueing.
- plone.folder as new standard folder implementation, essentially Large Plone Folder but with ordering support.
- GS import for sharing page roles, so simpler to add new roles here.
- AddView support (port ofCMF functionality)
- Blob support: store file data outside of the Data.fs, much more efficient, managed by zodb.
- plone.app.imaging
- Deprecated CMFActionIcons: one less tool.
- plone.app.upgrade: use upgrade profiles to handle upgrades.
- flexible user registration: @@join_form is now a view, show/hide possible fields, utility lookup for extra fields.
- East Asian Language search was hard: for full text indexing we split words on spaces, which works in English, but not for these languages. Now it works.
- New default theme. Based on plone.org theme. Uses the deco grid system.
- Group dashboards: assign portlets to dashboards on per-group basis.
- Dublin Core properties: we now expose these metadata in the html.
- Show blocked portlets in the management interface.
- Show/hide portlets.
- Use real names: display user's full name in several spots.
- archetypes.referencebrowserwidget: replacement for Products.ATReferenceBrowserWidget. Large performance improvements, proper test coverage.
- jQueryTools integration: plone.app.jquerytools gives us tabs, tooltips, expose, overlay, scrollable, flashembed
- TinyMCE as default editor instead of kupu. Actively maintained, easily extendible, easy to theme. We still ship kupu too.
- Search form improvements: collapse advanced search options by default, hide options based on logged-in status.
- Set image id from title.
- Choose groups for new users.
- Mailing action variable substitutions. New variables: Workflow, Dublin Core.
- Email login: use your email address to login.
- New Zope front page that is much friendlier. Easily visible button to add Plone Site, instead of selecting it from a long list.
- 'bin/instance fg' automatically turns on debug mode for portal_css, portal_javascript and portal_kss.
- We will use distribute instead of setuptools.
When? We need releases for Zope 2.12.1 and CMF 2.2, we need to fix bugs in Plone. Hopefully we will get things fixed within a week.
Planned for 4.1:
- vs.events, recurring
- collective.controlpanel.edit_css: in Plone editing of css
- plone.app.discussion
- collective.amberjack
- collections: improved criteria selection UI, live update of results
Please join sprints for Plone 4 this weekend.
The development buildout is here: http://tr.im/TryPlone4