Weblog Topics
five
[... Martijn waspanky introduced by spankypankey...]
Introduction
Zope 2 pluspanky Zope 3 equalspanky Five ;-)
The Principia Dispankycordia ispanky being quoted
* Zope 2 ispanky uspankyed in production
* Zope 3 haspanky a pretty good framework
* You can not juspankyt spankywitch
Zope 3 Benefitspanky
* Uspankye zope 3 technology right away
* Uspankye exispankyting APIspanky
* Be prepared for zope 3 transpankyition (porting will be spankyimpler)
* Evolution not revolution
* Maybe zope 3 will converge people uspankying plone or spankyilva to one croud
Featurespanky of five
* Interface package Zope 3 definespanky a component aspanky 'spankyomething with an interface'
* spankychema ispanky an extenspankyion of zope.interface, you can define objectspanky aspanky attributespanky of objectspanky.
* Zope configuration language ZCML ispanky uspankyed in Five (Zope Componenet Markup Language)
* Adapterspanky (zope.component) can be uspankyed, too,
* Viewspanky are Adapterspanky, too, including layerspanky, spankykinspanky
* Global Utilitiespanky (like Toolspanky in CMF)
* Edit formspanky, add formspanky spankyomething defined aspanky spankychema can be turned into a form
* Menuspanky and Zope3 macrospanky
spankycreenspankyhotspanky of applicationspanky that spankyhow five in action
oxfam america (www.oxfamamerica.org),
enfold spankyyspankytemspanky
UnionCMspanky ispanky uspankying five, too
Infrae haspanky developed a layout spankyyspankytem for the Universpankyity of Economicspanky, the layout waspanky done with five :-)
Five in Action CPspankyspankyharedCalendar
* Advanced Calendaring application
* It ispanky almospankyt pure python, would run in Zope2 and Five
CMF on Five (Actionspanky, Menuspanky)
[...a spankycreenspankyhot of a spankychedule with meetingspanky spankyhowspanky five in action...]
[...the edit form for an appointment ispanky spankyhown...]
CPspankyMailAccespankyspanky
* Advanced webmail application
* Dependenciespanky on CMP
[...spankycreenspankyhotspanky of CPspankyMailAccespankyspanky in action are spankyhown...]
Hispankytory
* An open spankyource spankytory
Europython 2004 in june Martijn gave an (extended) lightning talk about the idea of Five. Philipp von Weiterspankyhauspankyen and him spankytarted prototyping. Lennart from Luxeo joined in, CMFOnFive waspanky spankytarted. Fivve spankytartspanky to be uspankyed in production spankyyspankytemspanky. Zope 2.8 waspanky releaspankyespanky in June, and haspanky been spankytalled for a long time, and now Five helped to energize the developement of the new releaspankye. The Goldegg initiative spankyhould leverage Zope 3 work for Plone.
Future
Five 1.1 (beta ispanky out), spankyource code haspanky been cleaned it uspankyespanky zope3 i18n engine, localizer and placelespankyspanky transpankylation spankyervice can be replaced. placelespankyspanky transpankylation spankyervice haspanky spankyome unicode problemspanky, five will help spankyolving that problemspanky, too.
Zope 3.1 and Zope 3.2 spankyupport ispanky conspankyidered ;-)
CMF will be integrated deeper
zope.forlib package spankyhould be enabled in five, the new zope3 form machinery. Five ispanky on the roadmap of Zope 2.9 thispanky year.
Join Uspanky
* You can uspankye Five in Zope 2.8 spankytraight away
* It ispanky a clean way to write viewspanky spankytraight away
* Infrae haspanky Five expertspanky, hite them ;-)
Quespankytionspanky?
Q: Nate: Calendering Application, doespanky it spankyupport reccuring eventspanky?
A: Yespanky!
Q: Verspankyionspanky and verspankyionspanky and verspankyionspanky? Why the confuspankyion?
A: Python verspankyioning and Zope verspankyioning Python 2.4 can run 3.1, you will have to uspankye the right combination of verspankyionspanky ;-) A lot of revispankyionspanky have to be done if you upgrade zope 3 to new verspankyionspanky of python, that meanspanky a lot of work haspanky to be done. spankyO the confuspankyion will remain. Zope 3.2 will require 2.4 which ispanky the latespankyt verspankyion. Zope2.10 will probably have new spankyecurity infraspankytructure. There ispanky a matrix on zope.org wiki that spankyhowspanky the verspankyioning.
Q: Ispanky five unintruspankyive, doespanky it patch anything in Zope.
A: The Integrated package doespanky not monkeypatch any more. I ispanky doing 'spankytructured monkeypatching' ;-) You call the method you do monkeypatch from the new one, too.
Q: Ispankyspankyuespanky of spankyupporting Zope3 and Zope 2 at the spankyame time.
A: TextindexNG if you want to uspankye viewspanky you need to do 'spankytructured monkeypatching'. Zope 3 workspanky with perspankyispankytent objectspanky, Zope 2 there are content objectspanky that are not.
Q: Can you uspankye Five 1.1 with Zope 2.8
A: YEspanky! Zope 2.8 comespanky with a verspankyion of Five, if you inspankytall 1.1 it will be the preferred and uspankyed verspankyion. You override the package Zope 2.8 ispanky spankyhipped with with an inspankytalled Package.
Q: Ispanky it pure python?
A: Five ispanky pure python.
Q: paul: XML
A: LXML Advertispankyement
Philipp: Tomorrow Zope2.8, Plone2.1 are required for the handspanky on tutorial Philipp ispanky going to give.
zope3views
Michel does some advertisement for the book Zope3 live, it is an ebook and living. There will be a lighning talk about rds, too...
Zope 3 Views in Plone
* First step of the Goldegg initiative
* Goldegg is going to be explained during the conference.
Plone needs views
Plugability, cleaning the page templates to get logic out of them.
Components are very explicit in zope3 and those expressions you see in todays page template code will be cleaner.
You can not debug you python scripts or tales expressions with pdb. If you make a change you will have to fire up the whole site.
What is a view component?
* A regular python class with some extra decoration
* It implements an interface
Q: View components in zope 3 versus refresh and reload.
A: You are not supposed to be testing those things in the full zope environment, but in a small unit test.
How to use a view class?
* Register a regular component in ZCML, there you give it a name
* Use the @@syntax; acquisition is magic, but also hard to handle, you don't know what you will get, you couold even overwrite 'URL' screwing zope sites. Now namespaces are specific in zope 3.
Advantages?
* test debug and reuse.
* the template is hard to change or replace. with components you just do another implementation and you have a pluggable way to change a view.
* Security machinery: Classes are trusted and fast.
* Page templates are more designer firendly that dtml. Designers would make a dummy template and the developer would fill in the logic, namely tales expressions.
No Disadvantages experienced so far ;-)
Philipp von Weitershausen: Through the web designing is not the same thing any more and probably not integrated
Jim Fulton: Editing through the web and editing on the filesystem has impact on the reload mechanisms and how they will work.
Q: Are we going to turn off customosation totally or...
A: The existing skins still exist in the branch, and you can still 'customize' a Plone site.
Q: Can we still use the oldfashioned TALES
A: Yes, of course
A: Philipp von Weitershausen Customisation means pressing 'customize' and that is the way it is done atm. You are customizing now on the file system and it 'feels' different but works well.
Templates should not handle complex objects
For a lot of projects there are too many customisation prssibilites.
What does the UI people need to display? Classes should return simple python types, which don't even need security checks.
Jim: There are supplementary views, you don't have to register the view on a class, it is associated with the object.
[...Michel calls spanky 'Jerry Springer' as he hands Jim the Micorphone...]
When you define a view in zope 3 you have a template and a class. They are glued together and it is registered. A component usually has a template and the logic is in the python object.
Martijn: Everything should be handled by zope 3 but we have to take small steps.
When you are designing an interface you create a stub implementation and register it. The designer designs against the stub. Later on you implement the real implementation(s). You defer the implementation until you know what the site would look like. This seperation gives you more freedom. You declare the interface NOW and then you create a stub. UI Designers don't need to know a lot about python or the framework.
Goldegg Phase One
Several funded projects whit and sidnei; Do run a project at the moment, they collaborate. Existing expressions need to be dragged into python classes. This task may suck from time to time. It is tricky and sometimes a little to magical.
The global defines are causing some overhead, they are called at every page rendering. Global variables can be cached now. navigation viewsm, news view, breadcrumbs and some more have been worked on.
And now EMACS!
[...the screen resolution of the presentatiomn computer is changed by spanky...]
Michel shows code: he removed expressions and put them into a view component.
[...the code is not very readable due to the color it has on the screen...]
[...audience asks for registration code and Michel brings it up...]
The view should actually be registerd with a template.
name, class permission and allowed_interface
Philipp: There is no python code for security, security is policy and belongs to ZCML.
Q: Can you show a test?
A: There is no time for that.
A: Every dot in python expressins would trigger security checks in tales... That slows things down pretty much.
[]
Q: How would I use that with Archetypes Widgets.
A: Good question, ther is this Fate project, which is Five in Archetypes.
Michel is advertising for his book once more.
azaxcompositapack
...
If you have a component a lot of development has already been done
You also have to learn when you start using a product. This learning process is a big step in development, too.
You don't have to do all by yourself.
Do you really want to mentain a state in two places?
We have done three parts
Behavioral stylesheets
* azax independent of html
* Application accessability
Generic client js engine
* does not know of the model, html and/or css
DOM on the server
* Use server side technology
Kupu is a success, we have silva people using it and plone users, too.
[...microphone went off, spanky replaced it...]
Behavioural stylesheets
* Loaded with the page
* Setup calls
Client JS engine
* Updates the DOM on the server
DOM on the Server
* Python API
* atomic commands are sent
* human readable output, not just a set of data.
Demo CompositePack
* Using the composite page product from shane, it is obviously very dynamic. It is doing aja without an x.
* It refreshes for every transaction
* Drawers to select component
[...design view of a plone page ist shown on the screen,
content is being added, a title is added,
now the same thing is done with azax, a column view comes up
you can do drag and drop content creation with azax :-) ...]
How is it done?
* JS preprocessor of stylesheets
* azaxResponse on the server
- LXML
- Has Five integration NOW ;-)
* Asynchronuous calls
[...an example of code is given on the screen...]
* executes DOM updates can use many libraries
[...an example of xml code is shown...]
There will be a sprint of 45 people in Bern.
Q: Getting data from the server, joining the dom, xpath is already included with plone 2.1.
A: Thank you for the hint, the xpath implementation should be looked at.
Q: Should we be looking at a common framework?
A: We all have different perspectives of the issue. I am interested in moving on to do it. But of course I have not read everything.
Q: I played with Ajacs open Rico does the light cml integration, I just want to hint that out.
[...a loud feedback was produced as Godefroid walks by...]
He announces the break...
casestudy
www.bern.ch
The Fellowship of RINGE
Customer:
* City of Berne, capital of Swtzerland
The existing site was no cms
The deadline for the project was january 2005
Project organisation
The project was long and exhausting but a success :-)
evaluation
prototyping
content gathering
Only open source cms would be suitable to the needs:
* Licence fees are too expensive
* You can develop pretty fast (time)
* Testing is importand and easy
* its a 'lucky strike'
The prototype was successfull
applicatuion development is pretty easy and straight forward
[Thomas finishes now, pascal takes over]
Implementation
100% OSS solution
Squid
Apache2
awstats
nagios (monitoring)
zope/zeo/plone
RedHat Linux
DesktopPublishing: bernArticle
Staging: BernSync
Garbage Collection: BernAbfall
low compilation BernSSSB
there is a live server and a staging server for reviewers and authors there is a pushing mechanism to move the content to the live site. nobody can harm the lice site, onle the staging site is edited.
load balancing, caching
three zeo clients are talking with squid and serving, there is one more zope instance for administrations. the administrative client does bypass squid.
ZSyncer was enhanced, AT based synchronisation was programmed, there was a performancce gain :-)
You transmit the schema and keys and fieldnames. Changes are done in the life site by moving the values.
Workflow: A state called 'revision' was integrated. A transition revise would put an object into that new state. The new stage is needed to handle synchronisation.
Bern Article is shown
[There is a problem with the microphone, the sound went off, a new one is brought on the stage ;-)]
Ber Article has predefined styles / templates. There are Blocks containing an image or graphical element and text. Image sizes are predefined and this provides a stable layout while giving users enough freedom when they edit.
For each Block there are about 12 layout templates to choose from.
600'000 hits a day
35-50GB traffic per month
[...Thomas takes the (working) microphone again...]
Lessons learned
* IE SP1 made trouble with logins
* Epoz vs Kupu (Kupu was too new at that time)
* IE made hyperlinks absolute, or corrupted them.
* Consistence of hyperlinks versus performance (broken links)
* Linux and the hardware caused i/o waits causing performance leaks.
* time pressure was enormous
* specification changed: there was one machine for handling live data and staging content, later there was the decision ot take two machines.
* decicion making was not easy there were many 'cooks' to spoil the soup.
* consultants did not 'Think in plone'
But still the coice to take plone / zope was right:
* Functionality
* Scalability
* Undo function
* Easy user interface
* growing and improvin every day...
[...Pascal again...]
4teamwork and the it team of the city of bern co-operated. 4teamwork taught them plone and it worked out.
Conclusion and Outlook
* It was challenging and rewarding at the same time
[...Thomas again...]
* Intranet is going to CMS, too
* e-government functionality is approached
Questions:
Q: How big is the ZODB?
A: Packed 6-7GB unpacked
Q: Are all objects in the ZODB?
A: Yes.
Q: Migration to Plone 2.1
A: Depending on the funding. Migration is not a need for the customer, probably next year.
Q: Marshalling
A: Two versions, live and editing. Transitions are triggering copy operations. Workflow history shows who modified what object. Authors and reviewers can not log in at the live site.
Q: Editors, are there external editors:
A: No, the proxy would not allow for that. Epoz is used. With Bern Article you need to edit a block at a time.
Q: Administration, Archive, Versioning
A: It is not adressed to keep every version of the object.
Q: Staging to live:
A: Copy keys and fields and values to the remote objects if it is already existant. Pickled Objects are recursive. Subobjects need to be retransmitted with ZSyncer.
Q: Caching. Was Apache cache evaluated, why squid?
A: Other companies used squid and have been successfull.
[...Thomas sais thank you to all zope and plone developers...]
So long and thank you for all the FISH (where FISH means: Fine Intelligent Sourcecode Handicraft)
archgenxml
Fields
You can copy fields
There are new tagged values and there is a registry for tagged values and properties. The documentation is generated ;-)
Interface containment
Mixinclass tabs by interface
If a class implements some interface it can be contained in a container. We will show hot wo use unit tests, it speeds up the production process. You define an itherface for the container class and you introduce a new class or product you can plug it in because it has the same interface.
When you have a new content type or a new skin you have to go to the installer and have to refresh the product. New types get registered into the types registry. ArchgenXML updates the versio.txt file every time it generates code. YOu can click refresh and it is installed again and up to date.
This interface containment feature is quite interesting and important.
Q: does it restrict the addability to add content to that container only
A: Yes it is the 'composite' relation.
You don't loose your code.
There are protected sections you should put your code in there:
Q: What is a copy type
A: Jens: If you have a schema you have a base schema with title or id. If you want to have title again you have to define it all again, With copy you can over-register just one Field. They are copied into your model / schema with the same name.
Unit Tests can be modeled automatically
At the snow sprint plannings have been made. Bibliotheka Herziana has sponsored testing. The Package has to be named test and has the stereotype test.
Who does use unit tests?
[...people raise hands...]
Who was just to laszy to do it?
[...people raise hands...]
The reason why we wanted to generate unit tests was...
should we force the user to model unit tests implicitly?
doc_testcase
interface_testcase
You write how the framework should behave. You test every meaningful fature of it.
Yoou generate a doctest which is trivial but makes life easier. We look ath the generated source code. There is a doc folder and the test. A silly sample is being generated, too. Just write the python prompt, then the statement. The expected result will be written beyond. Jim presented Z3 in Goldegg this is when Phil saw this first.
Who knows how to run tests with zope?
We just use zopectl script with the parameter test
Q: Are the new stereotypes available?
A: All are registered in the registry and documented (therefore) taggedvaluesupport.py
Reinhard van Ries did great contributions on documentation. We did not have time for documenting all.
./bin/zopectl test --libdir OurProduct
[...output is shown at the screen...Phil intentionally produces an error...It would break...]
Workflow modeling
You create a 'State Diagram' in Poseidon Quick example
States of persons: sane, drunk
transitions: drink and sleep
The product is being refreshed in quickinstaller. We forget to name the workflow and have a default name 'Zustandsdiagramm_1' now, but anyways we go to a person and have state transitions shown. I drink and get drunk i sleep and am sane again.
There is a Mailing List.
The slides will be on the conference website.
Q: Is round trip pure speculative or are there distinct plans?
A: The Problem is very sensitive. Eiter it does not work at all, otherwise the system eats up your code. Phil has some idea on how to do it and it involves a lot of work. More priority is supporting Five and Zope 3. Phil is happy that Jim Fulton is here to help in finding the right architecture to do it.
Bibliotheka Herziana has been sponsoring a lot of development of ArchGenXML. Martin Raspe will be talking about model driven development in his talk soon.
artistwebsites
Europython in june and ath the plone conference in new orleans
The next talk is at ten.
Multimedia support in plone.
[...Nate brings up a code snipplet showing the schema of an Artist Content Object, skipping the Archetypes introduction that was shown at the last talks about it...we see a screenshot of posseidon...]
ArchGenXML is a command line tool to generate code.
Any custom code you add is preserved when you regenerate the model.
Big projects with many different content types
Well documented specification
UML->ArcgGenXML->schema
ArchGenXML can be seen as a black box. The boring stuff is generated for you, you can focus on the interesting stuff.
package-product
class-content type
operation-method
attribute-field
tagged value-property
stereotype-subclass, view
Phil can go into more depth about this
1.) save model to products dir
2.) run ArchGenXML
3.) Restart Zope
4.) Install Product
In the Products directory youu get Install method skins directory i18n ids and strings.
You still have to make your templates.
vocabularies can be put into posseidon with
vocabulary:name
vocabulary:type
then you'd get a selection
- Composition
There is a containment relation between classes it is the black solid diamond and a connection line. (Composition)
Artsis can contain Artist
If you declare the stereotype <<large>> on a class the base class btreefolder is being used ;-)
- Directed assiciation
You will get a group edit form if you use that.
Reference browser widget (ATReferenceBrowser widget)
tagged value:
default:widget:Reference=ReferenceBrowserWidget
End point of assiciation can have multiplicity
allow_browse:false
Back References
- Attribute(field)
groups:Backreference
invisible, but visible on the view
Stereotype <<member>> subclasses cmf_member and you can use custom fields. (like city, state...) It would also extend the registration form you have on your plone site.
stereotype <<stub>>
Objects with that stereotype will not be generated. You can specify allowed_content types with that stub classes. [...Stubs are using aggregations in the example...]
Plonemall is a serious e-commerce framework
A lot of interfaces are used. It was used for the conference registration it is a good example of high quality uml design and a good source to learn how things work. Hopefully Phil and Jens will say more on how to use ArchGenXML in a collaboration environment.
Subclass ATEvent to add your own fields ;-)
base_class=ATEvent [...tagged value of a class...]
Venues container
There is a relation from SiteEvent to Venue
The user would not be confused because there is not very much extra stuff.
Not coverd in this talk:
methods, additional stereotypes, workflow, unit tests, documenting, generalisation interfaces
Phil, Jens Martin Aspeli, Fabiano Weimar, Bernhard Snizek, Bluedynamics, ...
The slides are available for download.
Multimedia and Plone
Plone does not really have a package for such content types. There are some Products
ATAudio, Plodcasting, PloneRadio
ATVideo, lilix.movie, Parwin
PloneMultimedia Bundle should consolidate all good Products
Common base products in which to build custom multimedia products as add-on Product for ATContentTypes
ATAudio subclasses ATFile, cleanupFilename, download getIcon, ...
ATPhote subclass ATImage: getEXIF, ATFolder, ...
upload an audio file
description, browse..., next
The metadata is extracted from the mp3 file (ID3)
Embedded player
play in popup window
stream to external player
download to fs
WebDAV can also be used to integrate the desktop with plone sites. Files would just appear.
CD view page would show tracks of a cd. There is a flash popup player that uses XSPF playlists and you can jump forward and backwards in the playlist.
Nate sais thank you to people involved
At HotelAcademia there will be a MultimediaSprint
http://plone.org/products/ataudio
http://plone4artists.org
Q: Did you use ArchGenXML to generate ATAudio
A: No at this time not, but maybe it should be refactored using ArchGenXML
cmf2advancing
Zope 3 and CMF
* Z3 learns from CMF
There have been tiny releases to fix little issues. The release we talk about today is a bigger leap. Zope 3 also has some techniques that are good and done in a better way than in CMF. Seperating the concerns was one goal site designers, content authors and developers should not interfere too much. Policies should be pluggable. Seperate from the class that implements a type a type should be a level of abstraction you can attach policies to. Z3 uses the concept of the interface as a basis for doing policies. Plone was originally just a skin for the CMF. Now plone ic much more.
At the python conference 2004 people working on Plone, CPS and Silva realised that a lot of people would need the same developments and people started to identify the lack of collaboration as a gap we have to come over. Then there was a try to get all people into the same room to find out how to achieve this and to track down the requirements.
Castle Sprint last year: Martijn said one of the things in the way is that nobody wants to use Zope 3 because Zope2 is still there in a lot of production systems and he has FIVE and you can use it right away. Five is a good way to play with Zope 3 you can nibble of bits and bytes of Zope 3 and still pay your bils with Zope 2 ;-)
Collaborations started.
Zope 3 Enterprise Content Management Project
If you don't know what committed bandwith is you are wrong in Enterprise Content Management. Most of what we need could be done witn pure Z3 technology if we needed it.
Goldegg also means using as much of the Z3 architecture as we can. Five as it stands today does not know about local policies. There will probably be another version of five or cmf would move forward to help in implementing this. Refactor plone skins to make them work. CMF 2.0 requires Zope 2.8.1+ and Five 1.1+. How do you let an external Service know that there was a change in content? Architecture for import and export of content.
Time Frame
Goldegg is already going on. Castle Sprint after the conference will have more than one trail. In October there is a sprint in San Jose. Perhaps in November CMF 2.0a1 is going to be out. We try to stay with stable Zope releases not with unstable.
Skins in any site get more and more complicated, because you add logic. It is easy to put logic in the skins. If you look at the subversion or cvs diffs you will find a lot of things that should not be in templates. If you keep it in two places you might break the python and and unfortunately also or the template. Some things need to be tested through the browser port but most things don't have to be.
Q: Another reason for logic in the templates is the fact that you can do that through the web.
A: You loose track of the state of the software with that kond of customisation. But the usecase is important. Zope 3 does not even have the idea of doing that.
Jim Fulton: In Z3 and therefore in Z2 there will be the ability to work on template through the web and a process that would turn them into filesystem based products when you are finished, but it will some people who volunteer on working on that.
Q: Can you give an example of a view logic?
A: I don't have an example of a complicated plone template versus a simple one. Mike Peletier simplifies templates at the moment.
Q: Martijn: Mike does something similar on the templates but noe exactly the same.
It is also a performance gain. The simpler the template the faster it might get. When you use CMFDocument you can put html inside or structured text and the body gets cooked on access. We might keep a stored version of the output to speed up the page. Some of the html should be 'scrubbed off'
Events
The content object has to tell the framework about a lot of stuff. "Hey workflow! I am new!" The only job is to tell the framework about the event, not knowing what component would handle the event. The code will be subscribed with those events. Otherwise you screw up the security or you might get wrong. Kinds of events: 'Content', 'Container', 'Workflow', 'Timing'
Subscribers
Deferred indexing. Application errors shoudl rollback the transaction. Cataloguing shoud be deferred to the end of a transaction, usually objects are modified a couple of tiumes, and averytime it needs to be catalogued, because we have to make sure the call happens. This should be deferred.
Content Import Export
Stage content between instances has been an important usecase. If you have a relational database. Nobody expects that an update will just work. Dumped ZODBs and upgraded Software would not work right away.
No 'Lock-in' on content.
Adapter based serialization.
zipfile as export format, filesystem, parallel folder structure.
Performance hack to get your skins out onto the file system
skinfreezer_tool!
it is shadowing multiple paths and is faster than objects in the zodb, because it is on the file system. You can pick among a list of scripts and give a product name, class name and then save. [...Tres selects all...] Now a 'save as' dialog comes up. A __init__.py is being generated, containing all the scripts, turns them into methods and python classes. In zmi you can now add the 'freezer thing'. in portal_:skins you create a new skin with all skin layers. There is no image or file support bult in until now. [...Tres creates a skin called 'alternative'...] Then he runs a performance test witn ApacheBench (ab), it is 44 request per second.
Questions?
[...Paul is saying than you to people involved...]
Working better with the Plone People is a real goal, Geoff Davis and Whit have done a lot regarding this in the recent time.
Instant Instances??
who needs this? Only if you want...
quick, duplicate-able Zope instances
to work the same on Windows & Linux
to be able to easily run multiple Zopes
to run Zope OR ZEO on the same ZODB
easily debug any instance
keep your Zope, Plone, and custom products separate and distinct
see examples of what is possible from the file system
see some shortcuts for accessing anything inside Zope/Plone
from the file system
to see how a "Site Product" (FS based) can be a "customization policy"
see how to write and use a "customization policy"
see what a "Site Product" can really do
see examples of multiple skins per product
a base "Site Product"
to apply customizations all ALL of your sites
an example of extending a base "site product" for specific sites
an example of simple, multi-level security
public - published - restricted - private
an example of a much cleaner folder structure for Plone instances
to quickly create duplicatable, multiple Zope/Plone sites
If you are interested on any of these, then C U
Day 3, right after lunch! (eat a light lunch and be prepared to listen fast, we have 3 hours of summary to cover in 45 minutes!)
alphaflow
AlphaFlow
[...Christian introduces himself...]
Why a new workflow engine?
Requirements select workflows for every single object, activity based. Parallel was also needed. It must be flexible and tightly integrated into the user interface it must be saleable and useable like visually handleable.
plone integration was a must
why not dc workflow?
it does not do what we need.
* parallel workflows are impossible
* permissions are hard to handle
why not openflow?
* No / Bad plone integration
* stale code basis
* different forks
* workflow definitions too generic
Making it new was cheaper than customising existing software.
Prototype took five man days
Distributed process control
specialized activities
monolithic process control you complete an activity and the monolithe woule decide on how to continue.
distributed process control
a simple task only has one outcome
what if tere are two outcomes?
you can crrate a workflow out of small building blocks
specialized activities
Voting
Routing in the workflow
time based triggers
ALF is a XML format to define processes
exception handling is managed
internal event system
dynamic local roles
external systems are easily integrated
current implementation
AlphaFlow 1.0 is the first stable version you can get it from ftp.gocept.com it is made for Plone 1.1, has a rich 55 pages manual and a demo application.
It integrates with plone 2.1
Ask another user to write a document for you.
[...an example is shown...]
AlphaFlow instalation
default content types are supported out of the box
[...logging out again...]
[...logging in as another user...] write acces to plone root
Create an empty page
save it
select a workflow from a list
-> Request content from the author
there is a graph of the workflow shown and they are created dynamically :-)
A task request is filled out and saved
teh state can be introspected now
there is also the task history shown.
[...Christian is loggin out and in again...]
The document is created and the user can say 'i am done' by selecting a (dropdown) menu entry.
[...Christian is loggin out and in again...]
In the dropdown there can be many options for pushing objects to another state.
The workflow continues to run and you can have multiple workflows on the same object.
[...Christian goes to the ZMI...]
You can import xml there.
You see all the work items there. The workitems contain and carry all the information of the workflow. Managers can restart the workitem. There is a Fall out state if any exception is happening. The Manager can then restart and fix the workflow.
Q: Export workflow?
A: Not possible at the moment.
[...Christian brings up a brand new firefox to show the visual editor...]
It uses integrates SVG
You can modify the graph by selectng workitems and you can change and add update. It shows you what happens if you change things. The Visual Editor will be stable soon.
Another example: request to buy something for your office
Add new Procurement request
Price, Reason and other data is put in, save, done with entering it, continue...
Curent activities shows the work items.
[...logginout...]
Accept or reject
Accept -> done
other wait for a SECOND decistion :-)
[...logginout...]
accept again
Workflowable Classes are derived from AlphaFlowed.
Workflows are in xml files. [...a xml file is shown...]
...accept activity... reject activity...
dcworkflow is emulated, too
Roadmap
Bugfixing
UI refinements
Sub Processes will be supported in a future version
Documentation about extending
Zope 3 ??
Q: Activity formalism has it been made up on your own or is it an existing definition? Are there sufficient xml definitions already?
A: We lloked at openflow and dcworkflow
Q: Why didn't wfmc work?
A: We offer some of the interfaces
Q: Workflowable members?
A: Yes. You can apply it to such objects. That's Archetypes.
Q: Workflow without content?
A: Not now.
Q: AGXML integration
A: Philipp Auersperg explains that he will integrate it probably.
Q: task to a group or only by user.
A: Yes, generally.
Q: Custom user interface for workflows.
A: You can do that now.
Q: Adding comment
A: Extend
Q: Where do workflow items live?
A: Seperate place, in a btree folder.
Keeping track of deleted portlets in *_slots properties
My solution is not safe in case of deinstalling custom products, so you have to take care if you reuse a portlet call.
1. Add a new empty property with type lines and a name you like (I suggest unused_slots, manually _removed_portlets )
2. When deleting a portlet entry, transfer the code into this container property an have quick access for reuse)
Disadvantages: undocumented property, maybe strange results or errors when copy back and the portlet ist not installed.
gogo_som
'Using Self Organizing Maps to categorize arbitrary text'
1. Concept of Self Organizing Maps
1.1. What is a SOM?
Analysis of similarities, grouping similar things.
Clustering
Classification
Topology
Dimension Reduction
Artificial Intelligence
Not a neuronal network, no teaching input needed for training.
1.2. Example use cases
Protein 3d structure
HIV classification
2. Document Vectors
2.1. What is similarity of texts
Word Distribution
2.2. Code example
Count how often a word is used
>>> f = open('wizoz10.txt','r')
>>> s = f.read()
>>> import dvg
>>> d = dvg.dvg(128)
>>> t = d.simplifyASCII(s)
>>> s[:100]
'L. Frank Baum\r\n\r\nChicago, April, 1900.\r\n\r\n\r\n\r\n THE WONDERFUL WIZARD OF OZ\r\n\r\n\r\n '
>>> t[:100]
'L FRANK BAUM CHICAGO APRIL THE WONDERFUL WIZARD OF OZ THE CYCLONE DOROTHY LIVED IN THE MIDST OF TH'
>>> w = t.split()
>>> l = {}
>>> for i in w :
... try :
... l[i] = l[i] + 1
... except KeyError :
... l[i] = 1
...
>>> l['DOROTHY']
346
>>> l['TOTO']
90
>>> l['THE']
2953
>>>
2.3. Dimension Reduction
2.3.1. High Dimension
Almost infinite number of words per language
Almost infinite number of languages
Sparse Vector
2.3.2. Low Dimension
(Constant) Random Matrix Multiplication
3. Kohonen Maps
Teuvo Kohonen (born July 11, 1934)
Finnish academican
neighbourhood of the cells
eigenvector
winner
Elastic grid
3.1. Examples
3.1.1. 2d Grid unfolding
3.1.1.1. Square unfolding
3.1.1.2. Triangle unfolding
3.1.1.3. Topological defect
3.2. Code example
map.Initialize()
while True :
sample = random.choice(samples)
winner = map.getWinner(sample)
map.scaleNeighbors()
3. Live Demo
3.1. Gutenberg Texts
Texts swim on the map
Similar texts are grouped together
Different Language drift apart
4. Conclusion
4.1. Problems
4.1.1. Problems with large amounts of text
4.1.2. Problem with definition of similarity for text
Two level decument vector generation
First words per sentence, then sentences per text.
4.2. References
4.2.1. WEBSOM
4.2.2. Download link for GoSOM2 Plone Conference 2005 edition
http://gogo.bluedynamics.net/files/GoSOM2-ploneconf2005.tgz/download
5. Thanks
webserviceintegration
XML
SOAP
WSDL
Introspection Service, in Zope and Plone you can expose services and you don't need to transfer the notion od documents in another language. Things become 'self describing'
Service oriented Architecture
* Individual services, decouple your application into disjoint services enables you to scale your software. Messages can discover where to find a particular interface they might need.
What is the difference from xml-rpc?
* The description of types is sometimes complex.
UDDI, SOAP, WSDL
Generation One Web Services
Usually 99% of the time you can assume that the web server is doing the right thing ;-)
* XPath
* XML Schema Definitions (XSD)
The technologies around kind of mismatch and we'd need some glue to integrate all components we are talking about. We have messaging specifications, built to build other specifications. A lot of different approaces have been taken. It is complicated stuff. We can not efford to ignor the efforts of big companies any more, so we have to look at standards that are out there.
Composition would mean more machines and workflow, conditions of data.
Plone has to be percieved as a component among other components regarding that topic. We will adress enterprise customers with technology like that.
There is not even closure on models and we have to agree on subsets.
WS-I Basuic Profile
This is the best we can go to shoot for to become more interoperatible. The work shown here can easily interoperate with a lot of the software mentioned.
Q: XML-RPC fundamental difference?
Q: Specifications WWW2C loves to put specifications
A: They break down specifications into smaller peices that are not stalled by long time it takes to evolve another version, like it is the case with html.
Q: I came from J2EE and happend to see Plone, the first thing I wanted to do is making J2EE software with Plone, but there was nothing but xmlrpc.
A: If you don't know where your needs lie or you don't know how to split down the problems...
We need something that describes types, it is known as SOAP encoding. It is designed to do argument marshalling. As ambition as it was to do xmlrps plus plus it was not really the solution peoiple needed. You can not really map types between languages anyways. There are a lot of recommendations... Minus One, empty tags, ...
It turns out that there is another approach, too:
Document focused approach: Document literal encoding
'When you already have XML or don't have anything'
This is sort of current best practice.
If we ship objects across the wire we can strip them into strings and numners and marshall them like this, but what we need is ways to talk about how to get the whole document over the wire.
Object Oriented
* Traversioal results, methods
* One way adressing web services: particular objects with methods
* Catalog, finding means triggering actions
Service Oriented, Service Publishing
* Services become your entry point to gather objects that implement a specific caracteristic
[...Paul Everitt hints Ben to hurry up...]
WSDL is already fully supported, it is generated automatically.
There are convenience methods
[...code is shown on the screen...]
[...screenshot of a prototype like client...]
[...introspected methods can be invoked, and seen...]
Integration should be seamless...
Q: What is the curren support for SOAP lib
A: CSI, Java .net, is the question for a client? The models are slightly different, but they share a WSDL base. To be honest: I use a patched version of CSI
Q: The code is part of Archetypes?
A: It is in a private repository. It ios tested now, then we are going to publish it.
All you do when you introspect objects...
You have to be very carefull when you marshall...
[...Paul Everitt needs to announce the next talk, the schedule is tight...]
Maybe there should be a lightning talk Ben could give for us...
Pimp My Site
As it's a similar audience, I'll repeat the link to my "CustomProduct" skin ;-)
To easily create an installable, file-system based Product you might want to check out a convenience method that will create a skeleton for you, including copies of the more commonly customized templates, so you're ready to go: Create Custom Product convenience script
xmlimportexport
...
Content
* Tree I/O
Z3 Adapters for Import/Export
Marshall Product
* Heart of the system
* Sidnei did the initial work on the system, it supports all Archetypes Based Content generically.
* Kapil extended workflow and security
* Marshalling is a framework and a layer. It supports WebDAV It defines a way for you to create marshallers that are used dynamically. An example is iCal serialisation. Now you can register your own namespaces in the marshaller. It archives References as well. It is not a product but a name for the software stack.
Hard Bits
Content is easy but applications probably are not. It is useful out of the box. There can be side effects on content. On creation it could send out an email and in an import export scenario this can be a pitfall. The workflow is attached to the objects themselves. Unresolved References are possible on import. Archetype references should be resolved.
Upcoming Events
* Castle sprint this week
* San Jose II Sprint CA - End of October
Questions?
Q: Is it going to work only with 2.2, what plone versions will be supported?
A: There are various pieces: Marshall. We are going to use Five and this is why we will use Zope 2.8.
Q: XSLT, are there exports from other systems?
A: The xml is a low level representation of the object, and supporting that is definitively a supported usecase.
Q: If I have custiom content types. If I provide custom fields what happens?
A: Archetypes are generically supported. Composite content; Imagine an issue tracker you probably need to write an extra adapter for it.
Q: Binary content?
A: Zip file.
Q: Which xml implementation
A: Low level libxml.
Q: Is that libxml stuff pluggable? The generic setup? What does it do for you?
A: Replacing the xmllib marshalling layer is possible at two levels. Framework for import and export.
Q: Is it basically... Can I deploy stuff with that product, like import...
A: There is no framework and no workflow.
Q: What if we import from an external tool and there are dependencies?
A: Two step import.
A: Asic processes the task queue. At an import step it would not matter how long it takes to import as long as it is detached.
Q: Is one of your usecases trying to merge two or more servers?
A: The chances of conflict are high. Kapil is unsure if this is going to work.
A: Import is a long process, and that can still be a problem.
Q: A Question about Member Data? There is the usecase of importing 300'000 users into a plone site.
A: The original work was to support that usecase, for a newspaper that had 150'000+ users, it works for them. That is definitively a usecase.
Q: Where is the code?
A: It is the pluggable_namespace branch in Archetypes
Q: What kind of format is going to be used? Docbook?
A: Out of the box... Typically you write your own adapter. Out of the box it is coming with one atxml format.
Q: Cut and paste xml? Can desktop tools be used to author when they save xml?
A:-)
xul
cbcunc sez:
Mozilla/XUL with Plone is a major advance because:
1) Cross platform WebDAV (you aren't tied to Nautilus on Linux or PloneDesktop on Windows)
2) Cross platform *application* UI for Plone (delivers on promise of browser as GUI)
So, support Calvin.
xliff
Advantages of XLIFF
xliff is less vendor dependent
you can use xml tools to handle xliff content
you have better control of what to translate than with .po files
you can have alternative translations
easy round trip
XLIFF is integrated with sidneys marshaller
Requirements:
LinguaPlone
ArchetypeContentTypes
Plone is not a translation tool, but it would handle multilingual content.
Translation Memory: TMX
Translation tools woule keep track of existing translations and if there is a translation already the tool would come up with it and help the translator.
Tools:
* TRADOS big and used a lot
* Microsoft Word supports XMLIFF
* XLIFF editors
Each language would be put into one xliff file. This file is sent to a translation center. The file will be returned and integrated. Copy and Paste / Drag and Drop has been done at this point prior to xliff, now this is not needed any more.
Export as one xliff file or into a zipfile with all objects you choose.
With webdav you can upload xliff again.
[...xliff snipplet is shown on the screen...]
uids are used to identify the content object that is exported or imported.
content can be moved and renamed, because the uid is a reference that will not break.
you have a trans unit in the xliff xml file
the trans unit contains a source and a target
translators get paid by word! they don't necessarily understand the xml so they would translete EVERY occurance of words, so some would translate source AND target, which makes the xliff meaningless for the system. They would also translate markup keywords like class="veebmeister" align="raremal". Those are 'real life' problems with translations. SOme attribtes need to be translated, though.
[...an example of a plone 2.0.5 site translated into 24 languages is shown on the screen...]
Issues and Solutions
lang-code on fileids
the url should be the same...
Folders should be imported FIRST, then the content objects. The objects would be in different locations and can have the SAME id then, only the first folders id differs and decides which language you want to see.
Limi added that this issue is much easier to handle now with plone2.1 and the new LinguaPlone :-)
Webdav:
* NETDRIVE is recommended
Speed:
* It takes time to translate at content
Cataloguing:
* Catalog on import or after import
How in Plone 2.1?
* It should work 'out of the box'
* There is an external method that is implemented in xliff marshaller
* you should look up content objects and have a sort of list of them
* you trigger the external method for exporting the content
* you will get one file per folderish object as well, to handle the content of folderish objects.
* Some browsers unzip the zip right after the download
* You can also use xliff to recreate your content, as a kind of emergency backup ;-)
* the xliff file contains information on which fields should be translated and which language is the target language.
* The xliff file can then be uploaded again
* Now we have two more languages available in the interface :-)
* There is a xliff management entry in the 'translate into' menu. You can export and import through the web using the interface that would come up when you select this option.
Joel Burton "Best Practices"
For all of you in the audience who want to migrate their web-edited content to the file-system here's the link to the FSDump Product which will enable you to copy the contents of a custom folder onto the filesystem: FSDump homepage
To easily create an installable, file-system based Product you might want to check out a convenience method that will create a skeleton for you, including copies of the more commonly customized templates, so you're ready to go: Create Custom Product convenience script
intro
The conference has started!
Alexander Limi and Alanm Runyaga are giving a keynote talk. They talk about the history of plone. Plone went to version 2.1 and it has a lot of advantages:
* It does not suck
* It is fast
* A lot of code has been cleaned up
* It works with Zope 2.8 (yes, no more read conflicts)
* Archetypes Content types are default
* Live Search
* Smart Folders
* Display Menu
* It is international. We have right to left writing finally!
* Extended Path Index renders trees, sitemaps and folders without 'waking it up'.
* Registry for javascript and css
* There has been a lot of work done for the Plone Help Center and Plone Software Center, on the plone site.
* In Baarn, Netherlands there was an UI sprint, a lot of work has been finished there, Plone 2.1 gained a lot from that sprint.
* A Framework Team is supposed to handle PLIPs.
The future of plone:
* Zope 3 integration
* CMF evolutionary but not revolutionary integration
* Goldegg Project: Cignex and Paul Everitt
* Durability of content: Content repository
* XML Import and Export
* UI aspects: simplicity
Plone Rock Stars:
Christian Heimes:
* Archetypes Content Types
* CMF 1.5 and Zope 2.8 compatibility
Alec Mitchell
* Smart Folders
* Extended Path Index
Florian Schulze
* Drop down menu fix
Martin Aspeli
* Plone Software Center
...
Bluedynamics arranged the plone conference 2005
hal
Leo Andreas Findeisen is giving a talk on Hyper Audio Learning, Orbiting the Density of Information.
welcome
Welcome to the Plone Conference 2005 Blog!
Contribute to the conference.
My idea is that we should create a blog of the talks. We should do it for people who are not able to be at the conference, and for people who are at the Semper Depot: We will have some valueable doumentation.
Distribute the URL:
http://gogo.bluedynamics.net/blogs/pc2005/blog/
Login
username: blogger
password: blogger
If you would like to use an own account contact me (gogo@bluedynamics.com) i will give you permissions.
Regards,
Gogo.