E-commerce and Plone as web services
Plone conference 2010
Plone CMS or framework
Plone is a CMS not a framework and trying to shoehorn products as add ons is not always the best option. E-commerce are big and complex systems and not simple plugins.
Today we have EasyShop GetPaid and PCommerce which are installable into Plone. None of them is perfect and almost all of them are abandoned or have very little development. When they are installed they are hard to remove because your Plone CMS has become a product inventory, a order management and customer management system. Keeping this out of Plone will make your Plone experience much better.
Service Oriented Architecture
SOA has been around for a while and we use web services like Google Maps everyday. When you create or need new functions for your website think API - web service. This way you can use the best tool for the job or an existing tool like e-commerce system.
Benefits beside the best tool for the job is that your Plone site is easier to upgrade because the CMS is not polluted with a complex system. You also have the flexibility to exchange services when needed or choose to host some of them in the cloud.
E-commerce and theme as a service
When we looked for the e-commerce system we had the requirements that it should be python, it should have a good open source license and be actively developed. We could only find two python e-commerce systems, Lightning Fast Shop - LFS and Satchmo both based on Django. In our case study, Lavendeldockor we choose LFS because it was clean, small and fast. We also implemented the theme with XDV so we could reuse it for both Plone and LFS.
Plone conference 2010 presentation and further information
For more information you can watch the Plone conference presentation about External E-commerce and Plone play along or contact Sasha Vinčić at +46708 840 660 or online form.
Time-based publishing in Plone with higher security
Powerful Workflow Engine
Plone's powerful workflow system let you control security of each object in each state. With time-base publishing you want a new document to appear first when the effective date has been reached. In some cases you need to keep the document safe and protected from public before the effective date is reached. With Plone standard workflow the document that is in published state has already permissions which allows public to access it if they know the url even if it should be published in the future. In most cases this is enough since Plone will hide the document from searches and listings but in some cases it would be a disaster if someone accessed a document before the intended time, i.e stock market information.
Add an automatic transition to your workflow that is triggered if the publish date is in the future. Make it go from 'published' state to "Published (future)" which should have the same permissions as the Private state. Then use the zope built in cron like system to call a simple script that finds all content in 'Publshed (future)' state with publish date before now and publishes them.
This way you will avoid security by obscurity, i.e having accessible content laying around on your websites even though it should be protected.
Need help with Plone?
Contact Sasha Vinčić at +46708 840 660 or online form.
Do you want to know more about Plone?
Read in the Plone brochure (Swedish) or contact us.
Python based eCommerce System - technical comparison
GetPaid
License: ZPL
Technologies: Python 2.4, Plone 3.x (Plone 4 support in beta)
Extendability: Skin layers, portlets
Listed sites/users: 16
Can be run in Google App Engine: No (Plone/Zope is not compatible)
Complete solution, add-on for Plone.
Features: Donations, pay-to-publish, any content "buyable", discounts, UPS shipping (with real-time shipping charge calculation), good documentation, tests(!), getpaid products are available in a multitude of languages and all products are tagged with translatable text-ids.
EasyShop
License: GPL
Familiar technologies: Python 2.4, Plone 3.2.5
Extendability: Skin layers, portlets
Listed sites/users: A handful (most being migrated to LFS?)
Can be run in Google App Engine: No (Plone/Zope is not compatible)
Complete solution, add-on for Plone.
Lightning Fast Shop
License: BSD
Technologies: Python 2.6, jQuery, jQuery UI, TinyMCE, Django
Extendability: Product templates, portlets
Listed sites/users: 11 http://www.getlfs.com/live-shops
Can be run in Google App Engine: No (Python 2.6 can't be run)
Easy to set up, clean management interface, functional shop out of the box and well thought out design. Snappy performance!
Satchmo
License: BSD
Familiar technologies: Python, Django 1.2.1
Extendability: Very high
Listed sites/users: At least 67
Can be run in Google App Engine: No
Satchmo is a complete web shop like the rest. The admin interface works fine, is snappy but is a little bit cluttered and asks tons of questions.
Conclusion
All the tested solutions are functional out of the box. The two Plone based solutions have an advantage in having a tool chain that is familiar to us, but the Django based ones have better performance. LFS stands out because it also looks good out of the box
What is your experience?
Please send us comments and tell us your ecommerce experience. Which system is your favorite?
Links
Valentine Labs
Tweet Arena from Valentine Labs
For a long time, the HTML web standard has been standing still and innovation has mostly happened within proprietary plug-ins such as Flash. Today though, the future of the web is seen within the next generation HTML5 and CSS3 standards.
HTML5 and CSS3 is the new industry standard that leverages:
- Drag & drop
- Video
- Audio
- 2D and 3D
graphics and visualizations
- Transitions
- Games
To keep up with all of this, Valentine Labs was formed by our front-end expert Per Thulin. Per comes from a creative game development background with lots of experience in multimedia, graphics and visualization. In just a few weeks we have come up with some absolutely amazing projects:
- Valentine Notes - A CSS3 technology demo that mimics the UI and transitions of Apples iPhone Notes application.
- ScriptMate - An application for theater actors to create and rehearse scripts together.
- Timeline Project - Helps people reach their daily goals.
- Tweet Arena - A CCS (content combining
system) where the content is hosted on social media sites and web
services.
Is your web site ready for the future?
Contact Sasha Vinčić at +46708 840 660 or online form.Try our web applications
More on HTML5:
New cool web sites for Jeeves
The new public website of Jeeves
For the leading supplier of ERP systems - Jeeves Information Systems, only the leading CMS, Plone, is good enough. Valentine Web Systems have delivered two websites. The first is targeted at investors where it is important that press-releases are published on time and not available to the public before they are published. The other website is translated into 11 languages where each language represents the countries where Jeeves has got local partners. Each partner has a login and can maintain their content themselves. The front page content is fully controlled by the editors.
"In May 2010 we launched a new website which we have worked with very intensively since the beginning of this year. With the new website, we now have simple management of press releases, more multimedia plus a powerful and easy to use system for multilingual management for the local partner sites. During the whole development process cooperated closely with Valentine Web Systems who showed strong commitment and have been very helpful. Sasha and Per at Valentine have got enormous knowledge, are creative and will not give up until they find the best solution. They have the ability to combine their technical know-how with a good understanding of customer needs.
Thank you for a great job!"
Cecilia Kullberg
Jeeves Information Systems
Are you looking for a commited provider?
Contact Sasha Vinčić at +46708 840 660 or online form.
Do you want to know more about Plone?
Read in the Plone brochure (Swedish) or contact us.
Merry Christmas and Happy New year

Plone powers 50GB of environmental data, maps and figures
EEA figures
Recently we upgraded our customers website for large data handling. The main development of the product eea.datatservice was done by our colleagues at Eau de Web in Romania, and our part was to prepare Plone 2.5 to handle large data.
Back to the future - blobs in Plone
The first solution for external storage was iw.fss, but due the cluster setup on our production server, we went with the blob approach because it is more future proof since it is part of the upcoming Plone 4 and doesn't require any shared read/write storage for all instances compared to iw.fss.
We tried out the existing branch of blob support for Plone 2.5 but it was old and lacked functionality, so we had to cut a new branch to backport the latest plone.app.blob. While Andreas Z was working on it we where back-porting the code more or less day by day :) Today the blob support for Plone 2.5 allows files and images to be stored outside ZODB in blobs.
In eea.dataservice we have custom content types with large files and images where some are 18000x16000px! All these maps and figures are converted in to number of different formats. All the images are scaled in different sizes and everything is stored in blobs. To store scales in blobs we backported plone.app.imaging which is used in Plone 4.
Fast but small servers - can't cache everything
In our cluster that is running on blade servers with very little local storage, we have to consider what to cache and where. The large storage on these servers is mounted from SAN, which is a fast and secure storage. The blob storage is mounted on the machine that runs the ZEO and additional to that we have smaller blobcaches for the instances on each machine, 25GB/machine. Since we can't fit the whole blobstorage in cache we clean it manually with a cron. In the newer ZODB3 and Plone there is configuration for automatic cleanup but we can't use it with Plone 2.5. This manual cleaning outside Plone has raised an issue where an instance expects the blob in the cache but it's not there. This happens if the object referring to the blob is in the object cache of the instance. If it is not the problem never arise since the blob is reloaded from ZEO. We are now testing different configurations for the object cache size before we try to catch those exeptions and try to reload the blob from ZEO instead.
Open source
All code used for this website is open sourced and available in Plone or collective repositories and Eionet SVN for i.e eea.dataservice.
Plone grew with 50GB of data and 20% more traffic
www.eea.europa.eu the Plone 2.5 site is now getting 20% more traffic and with 50GB more data than before the migration. Next step will be to migrate the multimedia and other large content to blobs which will probably free almost 10GB from the Data.fs.
Want to know more?
Please contact Sasha Vinčić for more information. Contact details on the right.
Multilingual and high security at Plone Conference 2009
Plone Conference 2009
The grid for the open space was filled up with over 40 talks in just of couple minutes, that is more then the scheduled ones.
Valentine Web Systems team was represented by Per Thulin and me, Sasha Vinčić. I gave a talk about 'Managing multilingual sites' which I hope gave some enlightenment about use cases and pitfalls with multilingual sites. You can see the slides below and recording at ustream.tv.
Plone developers and integrators are as always busy working on interesting solutions. I understand why Microsoft's Jeff Tepper thought Plone is Sharepoints open source competitor. Plone may not be the most googled CMS but it is definitly the most secure and the biggest open source competitor to Sharepoint, Websphere and Documentum. Kees Hink and Kim Chee Leong told us how they hardened Plone to military strength. It was audited by Ernst & Young & Pine Digital Security granted certifiedsecure.eu certificate!
Valentine Web Systems provides multilingual and very secure portals built with Plone. If you want to know more, please contact us.
When we made internet history on Tjärö island
Tjärö is a small and idyllic island in the Karlshamn archipelago in the Swedish southern region of Blekinge. The island is own by the Swedish Tourism Foundation and is for example equipped with a youth hostel, a camping ground, a restaurant and conference facilities. In other words: Most of the things that are needed for an IT sprint with a big gang of happy geeks.
This was how the stage looked like when Tomas Wennström invited some of his friends to a meeting throughout August 21-23, where he expected 10 people at the most to show up. Well, he ended up facing a giant looking interest from people from everywhere to join the party. 286 persons from all the Nordic countries took the boat from Karlshamn to Tjärö to attend Sweden Social Web Camp 2009, as the sprint was called. Sasha Vinčić from Valentine Web Systems was one of them. Valentine Web Systems was, by the way, one of the sponsors of the event.
The main idea behind Sweden Social Web Camp (SSWC) was to give hard working internet geeks from different places a chance to join up and enjoy some nice time together. Just to get a voice and a face on some of them who nowadays turn up on Twitter and other social forums on internet was gold worth. The fact that people from Norway, Finland and Denmark also showed up gave the event a border crossing touch.
The sprint on Tjärö was not only about party and glamour but most of all a brainstorming society where everyone could share experiences and know how about Social Web. The scheduled sessions where the web people could share this valuable stuff with each other were very crowded. Dinner, brunch and peaceful moments by the camp fire were other opportunities for deep, thoughtful and friendly conversations
The aftertaste for every attendant of SSWC has been like enjoying a tasty candy bar. A sprint like this creates everlasting bounds of friendship and the words of joy and appreciation has been numerous after SSWC. Everyone agrees about the thought that this is far from a one hit wonder.
Says Tomas Wennström, the man behind SSWC: “I think we made internet history on Tjärö island.” You can´t describe it better than that.
Sprinting - Agile Development and Amazing Ways to Learn
Bristol Balloon Sprint 2009
Me, Sasha Vinčić(twitter), and Per Thulin(twitter) had an amazing time. This was Per's first sprint and he says it was everything he expected from what I have told him :) Over 20 people met up in Bristol to improve Plone CMS and have fun during the Balloon fiesta.
Performance testing and benchmarking
I worked with Tom Lazar, Alan Hoey and Matthew Wilkes on plone performance testing and benchmarking with funkload. We continued on the collective.funkload by Ross Patterson and added a recipe collective.recipe.funkload wich is a convinient recipe to add funkload to your buildout. With funkload you can then run tests, benchmark and create reports from the results to see how the performance changes. Andreas Zeidler showed me mr.ripley which takes a normal log in combined form and replays it against the domain url you tell it too. This can be used to test new configurations of same buildout or to warm up a site after restart so objects get cached. I then realized this can be used to create funkload tests and use them for benchmarking a site with real life traffic patterns. I added the proxy functionality to mr.ripley (not in svn as of writing) and run the replay through funkload recorder proxy and wola we have tests from real traffic.
TinyMCE replacing Kupu in Plone
Per worked with Ben Mason, James Guest and Owen Curtis-Quick on the TinyMCE track in order to improve the integration with Plone, especially with regard to inserting images. This involved both working out ways to provide available image size dimensions that have been configured to the specific content type, and making the user interface more consistent with the rest of Plone. TinyMCE is the content editor that will be used in future versions of Plone, and a big reason for that is that it produces clean and valid markup. Therefore, another important fix that was done was to add some missing attributes on the image tag being produced. Rob, the maintainer of Products.TinyMCE happily reports that all this work has been merged into trunk and thus will become part of the next release of Products.TinyMCE!
XHTML validation, transmogrifier, 64bit acquisition and much more
I just want to mention some other topics that were worked on during the sprint. XHTML validation through automatic testing, you can write tests to validate your markup. This is important for tools like Deliverance.
Hanno Schlichting worked on some deep stuff like fixing C code for acquisition on 64 bits machines. There was bugfixes for LinguaPlone and release of transmogrifier which is a powerful transformer. Formgen, override skin templates/scripts with view... and probably some things I have missed.
A great sprint organized by TeamRubber in Bristol!