Weblog
Plone Quality Assurance Team
Open session about QA for the Plone core
Plone 3.3 had about 6 months of prereleases. Very little testing and feedback coming in, very late. Shouting "Please test!" did not help. If companies were using prereleases and it was working fine you only heard it when you explicitly asked it.
Several browser tests are missing, like for collections, which is why they were broken for two releases. Also Selenium tests.
Hanno was looking at all the bugs, reassigning them. Very useful, but too much for one single person.
Another task would be specifically testing just before or after a release.
Having data about how many times the versions.cfg of a release candidate is downloaded would be handy. Getting no negative feedback but also no positive feedback is not good. Are there no problems or is no-one using it.
Having a list of things to do before a release is handy.
Testing a release candidate during the Plone TuneUps is good. Make some noise about that.
InstallFest: get people to try out the installers and be available on irc for support.
http://pypi.python.org/pypi/mr.ripley: replay the requests of a live site on a staging server.
Idea: button "Ready for Plone 4" for third party products on plone.org?
Buildbots for the most popular third party products?
Important things to do:
- Triaging bugs.
- Get people to test releases.
Tell Joanna when a new release is coming up so we could use testers in the Plone TuneUp.
Get a list of which things to change when a new release is there, like also the topic of the #plone irc channel.
Test coverage runs for packages are interesting as well.
Memory, performance
Plone Unconference 2009. Myroslav Opyr, Jens Klein and others.
Each zeo client has its own object cache. If you have an 8 GB Data.fs in the zeo server, 16 GB memory, and 8 zeo clients, then the clients each have only 2 GB memory available. If something is needed that is outside the cache you need to access the disk, which is bad.
The bfg folks made something where you have to explicitly mark an object for writing; so objects that are just for reading can be shared between clients.
You can use the multiprocess package.
You can cache calculated results with memoize. Is then stored in every zeoclient. memoize is ready to switch to memcached so you can share the memoized data between the clients.
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.