plone

You are currently browsing articles tagged plone.

One of the first things you have to keep in mind when considering to get this book is the target audience. If you’re a hard-core developer who keeps Proffessional Plone Development under your pillow, this book might be a bit too “soft” for you. It’s targeted to integrators with little experience in Plone who want to learn about how to perform certain tasks, from publishing an usable events calendar to create an on-line form for visitors’ comments.

Both the author, Erik Rose, and the technical reviewers are well known and respected in the community. I’ve chatted more than once with two of the reviewers, Steve McMahon and Denys Mishunov, and I know they’re quite skillful and competent, so you can expect the book to be correct and well-written.

I must admit that, at first, I was a bit annoyed with the step-by-step recipe-style of the book. Being a Physics student, I’m used to read texts where the main points of the theory are explained, but the step-by-step procedure is often left as an exercise to the reader. Having to follow closely a list of steps makes me feel like a script-kiddie: somebody who executes a series of steps without actually understanding what is she/he really doing.

However, Erik has taken care of providing a lot of contextual explanation about the steps, with comments about the different options you have and why would you prefer to choose one or another. Moreover, the just-follow-these-steps approach is not so heavily used after the two first chapters.

Although the title of the book suggests that people in the educational context are its only target public, you can learn a lot from its suggested approaches even if you aren’t into education. Being very, very practical, it covers a freaking impressive list of tasks/features: making academic courses available on-line, a directory of personnel, setting-up a blog and a forum, publishing audio and video, creating forms easily, theming a site and managing a production system.

I wouldn’t have covered the theming and the sysadmin stuff, since it’s quite technical and there are already (or are coming) good book references on these subjects, including the Plone 3 Theming by Veda Williamson, Practical Plone 3, or the upcoming Plone 3.3 Site Administration by the popular Alex Clark. By the way, Alex, please tell Packt that this title is not attractive at all marketingly-speaking — people will think that the book only applies to 3.3!

Unlike other books, which are quite bare-Plone centered, a lot of interesting add-on products are documented, more or less extensively: FacultyStaffDirectory (of which Erik is an active contributor and therefore even provides tips about future development!), p4a.Calendar, Scrawl, QuillsEnabled, PloneBoard, collective.flowplayer, p4a.video, p4a.audio, PloneFormGen, z3c.jbot and CacheFu, among others.

Erik doesn’t simply provide general technical manager advice, but also tells you about good practices for content editors based on his previous experience and known pitfalls. What is even more impressive, he sometimes points you to some tickets in Trac about open issues! While this would be more suitable for on-line documentation, it reflects the active involvement and time Erik has spent on investigating what he’s writing about. Good work, Erik!

The book is full of evangelism, specially in the first chapter, where it comes in loads. While it shows that Erik (and the reviewers?) is really passionate about Plone, I guess that who bought this book is looking for info about how to use the product, not marketing stuff, and perhaps these pages could have seen better use with some images, more extensive explanation of a certain feature, or just removed and the price of the book lowered. But this is only the opinion of someone who’s already convinced of the coolness of Plone. Erik also takes the opportunity to expose his political view about the issues with buildout, installation and packaging.

The writing style is clear and always fun. Sentences like “Who can resist puppies? They are heart-meltingly cute and loads of fun, but it’s easy to forget, when their wet little noses are in your face, that they come with responsibility. Likewise, add-ons are free to install and use, but they also bring hidden costs.” make you smile and remind you that some people in the Plone community have a good sense of humour and are crazy enough to publish this kind of stuff in a technical book. :)

Kudos to Erik — while I was certainly biased about reading a book for non-developers and just for Education, you managed to make me learn new stuff and enjoy doing so!

I’d like to thank Packt Publishing for providing me a free review copy of the e-book for my reading pleasure. The 2nd chapter, Calendaring, is available from their site free of charge, in the case you want to take a peek before considering to get the book.

Related articles

Tags: , ,

I’ve spent some time this weekend updating the Plone Help Center product to work in Plone 4, specifically in Plone 4.0a2. Some reasons/excuses:

  • I had free time.
  • I love coding for fun.
  • I wanted to experience myself how easy/hard can be to updating a Plone 3 product to work in Plone 4.

The changelog will tell you about every change I performed, but a summary of the most important stuff is:

  • The attribute __implements__ of a class cannot be used anymore. Use zope.interface implements and implementsOnly instead.
  • Use mailhost.send instead of mailhost.secureSend. Learn how to upgrade your product accordingly (thanks alecm!).
  • Manually define all needed variables which were formerly globally defined in the famous main_template. This was the most time-consuming step, because I had to fix them one-by-one following a try-error approach. Thanks god PHC has automatic tests, which helped a lot there.
    Perhaps we could come up with a handy find-grep expression to be run in the root of your add-on package to identify all templates where you’re using global expressions (no longer available). find-grep hackers are welcome to comment this post. ;)

Related articles

Tags:

I just read on a tweet that the first alpha release of Plone 4 is already available for testing and I wasn’t able to resist the temptation. :P  As some people have already pointed out, Python 2.6 for Debian is only available from the experimental repository, and most of us prefer to stay testing or unstable at most. :)

Thanks god, there’s a buildout recipe (we should create a Linux distro based on buildout someday, alecm ;) to build Python from source in an isolated environment. Steps:

  1. svn co https://svn.plone.org/svn/collective/buildout/python/ buildout.python
  2. cd buildout.python; python bootstrap.py
  3. Edit buildout.cfg to fit your needs. You might want to comment out the references to the Python versions you don’t want to install.
  4. bin/buildout
  5. cd to-another-directory; paster create -t plone3_buildout plone4.
  6. Enter “4.0a1″ (without quotes) when asked about “Which Plone version to install”. Make sure you have the last version of ZopeSkel (2.14.1 while I’m writing this – easy_install -U ZopeSkel) or the generated buildout.cfg won’t be valid for Plone 4 otherwise. Thanks to MatthewWilkes for the pointer and of course for the ZopeSkel release. :)
  7. path-to-buildout.python/python-2.6/bin/python bootstrap.py
  8. bin/buildout. If you get tons of lines in your console output about fetching distribute, see this post by Reinout van Rees.
  9. You’ll need to install PIL to run Plone, so do either:
    1. python-2.6/bin/easy_install-2.6 http://dist.repoze.org/PIL-1.1.6.tar.gz, or
    2. Add PIL or PILwoTk to any of the eggs sections of your Plone 4 buildout and re-run bin/buildout.

If you stumble upon an error message similar to:

Downloading http://dist.repoze.org/PIL-1.1.6.tar.gz
Processing PIL-1.1.6.tar.gz
Running PIL-1.1.6/setup.py -q bdist_egg --dist-dir /tmp/easy_install-Fev48C/PIL-1.1.6/egg-dist-tmp-SNtCRu
In file included from decode.c:608:
libImaging/Zip.h:11:18: error: zlib.h: No such file or directory
In file included from decode.c:608:
libImaging/Zip.h:37: error: expected specifier-qualifier-list before ‘z_stream’
error: Setup script exited with error: command 'gcc' failed with exit status 1

try “aptitude install zlib1g-dev”. Thanks davisagli!

The previous procedure should work… But it didn’t in my system. :(  I get an error in the buildout.python bin/buildout:

SystemError: ('Failed', 'patch -p0 < /somepath/buildout.python/parts/readline-patch/readline.patch')

I’ve already tweeted fschulze (who is presumably the author of the collective.buildout.python stuff, according to comments in the #plone IRC channel) about this issue. I hope it will get solved soon! :)

In the meanwhile, removing or commenting out the stuff about readline.patch in the collective.buildout.python buildout.cfg before running bin/buildout appears to be a valid workaround, at least for me.

Related articles

Tags: ,

I got bored of having to write “site:plone.org/documentation blabla” in the Firefox search box to use Google to look for documentation in Plone.org so I created a plugin following these instructions and using this generator.

Check it out!

Some tips:

  • Use Ctrl+K to get to the searchbar.
  • With the focus in the searchbar Alt+Up/Down lets you select what search engine you want to use.
  • While selecting an engine, typing a character makes you jump to the first search engine starting with this character. In our case, use ‘p’.

Related articles

Tags: , ,

What started as an utopic idea has now become real! Over the last Plone releases, the documentation had become sadly outdated, because the people writing code for the new features of the product were faster than the people writing the documentation for them.

During the last Plone Conference the Plone Documentation Team was revived. It was time to start doing things The Right Way (TM). Our idea was to bind the development to the documentation, studying PLIPs after being approved by the Framework Team and updating and extending the documentation base accordingly before the new product version is released.

And finally, we did it for 3.3! So congrats to everybody who’s participated! I hope that in the future more people will chime in and we will improve our workflow for updating and testing changes in the documentation. Some ideas:

  • We can’t publish (make visible to everybody) the documentation for the new version before the new version is released, because it will confuse people. Next PHC version will likely provide us Working Copy Support so we will be able to edit documentation “privately” while keeping the old (stable) version of a page public.
  • We have to coordinate better with the PLIP implementors to write, review and verify the documentation. Proposed workflow:
    1. Make a list of affected docs. This list will likely include only documents in the official documentation area.
    2. Make a copy of them and find someone to document the changes. With Working Copy Support, thiw will no longer be neccessary.
    3. Ask the implementer of each PLIP to review the introduced documentation changes. Test them against a beta or release candidate release.
    4. After the final release, copy the contents of the copied articles back to the live ones, and delete the copies. With Working Copy Support, promote the changes to the public page.

Happy ploning to everybody!

Related articles

Tags: ,

This list is not intended as a in-depth tutorial to learn how to create new content-types in Plone (if you are looking for that, please check the Archetypes Developer Manual), but as a checklist to ensure you’ve not forgot any step.

  1. Create the skeleton of the package using paster -t plone.
  2. Add the package to your buildout.cfg, including the eggs, develop and zcml sections.
  3. Define your type interfaces using zope.schema.
  4. Implement the interface using Archetypes.
    1. Define the content-type fields using Archetypes.atapi.Schema.
    2. Bridge the getters and setters to attributes using atapi.ATFieldProperty.
  5. Define the security policies for the class attributes throught <require /> directives into your configure.zcml.
  6. Register the neccessary resources (images, css, javascript) into your browser/configure.zcml file, throught <browser:resource /> directives.
  7. Implement the main view of the object.
    1. Register a <browser:page /> into the browser/configure.zcml file, referencing the view class and the content-type interface.
    2. Write the implementation of the referenced class above, using Products.Five.browser.pagetemplatefile.ViewPageTemplateFile and defining any internal methods that you’ll need into the rendered templates later.
    3. Write the associated template, using ZPT.
  8. Write the GenericSetup install code for the new content-type:
    1. Register a extension profile into your configure.zcml, using a <genericsetup:registerProfile /> directive.
    2. Register the type into the portal_types tool throught a types.xml file.
    3. Specify the details for each type into the types/your-type-name.xml file.
    4. Write the __init__.py package’s boilerplate code to initialize the content-type and create the factory functions.
    5. Write down your configuration data into a config.py file.
    6. Assign add permissions to desired roles throught rolemap.xml.
    7. Register the type factory in the factorytool.xml file.

Thanks to Martin Aspeli for such a great book!

Related articles

Tags: ,

Me comentan que el servidor del grupo de software libre de la UCM está pachucho y puede que caiga enfermo en breve, así que traspaso esta información aquí (usemos el blog para algo útil).

Motivación

  • La inmensa mayoría de las delegaciones de alumnos y asociaciones no tienen página web y permanecen parcial o totalmente ocultas en la Web. Los mecanismos que se suelen usar para dar a conocer las asociaciones y sus actividades suelen ser bastante rudimentarios: pegar carteles por toda la facultad, o por varias si se organiza algún evento importante, gastando un montón de papel y saturando aún más las sufridas paredes.
  • A pesar de tener una página web, incluso si está bien diseñada, existe el problema de que la información está descentralizada, es decir, que la gente de otras facultades no conoce la existencia de esa página o no les apetece estar entrando cada semana a ver si publican actividades nuevas.
  • Por otra parte, existe muchísima gente interesada en actividades de las que no se enteran debido a que los medios publicitarios utilizados para anunciarlos no son efectivos.

Propuesta de solución

  • Es necesario un portal web donde las asociaciones, delegaciones y cualquier estudiante (también los profesores, por qué no) puedan mostrar que existen y anunciar sus actividades fácilmente.
  • El portal tiene que tener un diseño atractivo y ser sencillo de utilizar, con editores WYSIWYG o sintaxis wiki.
  • Tiene que permitir leer la información en el navegador, por RSS o por email.
  • Lo más importante es que los usuarios puedan encontrar en el portal la información que les interesa, ni más, ni menos. Algunas ideas:
    • Sistema de etiquetas que permita al usuario suscribirse a unas determinadas etiquetas y punto.
    • Sistema de etiquetas y selector por medio de filtros. Esto sería mucho más granular, pero tiene problemas de rendimiento y puede ser más lioso. Por ejemplo, un usuario se podría suscribir a todos los eventos que se organicen en su facultad sobre política, pero sin contar los que sean los de otras facultades, es decir, filtros del tipo “etiqueta1 OR (etiqueta2 AND etiqueta3 NOT etiqueta4)”. ¡Se necesitan hackers!
  • Una vez que estuviese listo el portal para empezar a utilizarse, se le debería dar una publicidad considerable desde la Delegación Central y desde todas las asociaciones interesadas. Cuantas más asociaciones participen, más vendrán (la gente llama a la gente).

El verano pasado quedé con Federico García Mon Trotti (se escribe así, ¿no?) y le convencí de que Plone era el sistema que debíamos usar para una tarea de esta magnitud.

El programa de la nueva Delegación Central de la Complutense hace mucho incapié en tener una página web donde publicar información, así que supongo que este proyecto tiene que salir adelante tarde o temprano. Mi idea es que lo mejor es que empecemos con algo sencillo y simple (un wiki) y migremos a algo más pesado como Plone cuando veamos que lo necesitamos. ¿Opiniones?

Sí Álvaro, el joven padawan aprende de los maestros. ;-)

Related articles

Tags: , ,

El pasado martes 2 de diciembre tuvimos una reunión del grupo de editores de documentación de Plone (el llamado Editorial Board) en la que discutimos una serie de cambios propuestos para la documentación.

JoAnna publicará un resumen del encuentro próximamente ha publicado un resumen de las decisiones que se tomaron aquí, y también una serie de anotaciones y la transcripción de la charleta aquí. Mientras tanto Yo me he tomado la libertad de publicar el mío propio aquí, para el gusto de los motores de búsqueda.

En primer lugar, la documentación se dividirá en parte dos partes:

  • Una oficial, en la que se seguirán procesos de revisión, actualización y control de calidad dirigidos por los editores, pero que puede ser escrita por cualquier miembro de la comunidad de Plone.
  • Una abierta de estilo wiki, con páginas que cualquiera podrá editar sin pasar por el proceso de revisión de la documentación oficial. Se diferenciará claramente de la oficial y se encontrará en un subdominio del tipo algo.plone.org.

Por otra parte, se tiene la intención de usar Sphinx para la documentación de referencia de los módulos que componen Plone. Se llevará a cabo una experiencia piloto con algún módulo para ver qué tal funciona.

La documentación oficial se intentará organizar en manuales sobre cada tema (uso básico, theming, formularios, etc.), cada uno con una introducción rápida primero y luego una guía comprensiva sobre el tema. Se intentará encontrar un lugar en los manuales para toda documentación nueva que se escriba.

Se eliminará la división del Plone Help Center actual por tipo de contenido en la parte oficial, es decir, adiós a las URLs tipo plone.org/documentation/tutorial, plone.org/documentation/howto, etc.

Se intentará que los PLIPs incluyan información para facilitar la tarea de documentar los cambios que introducen. Estamos en contacto con el Framework Team para conseguirlo.

Se eliminarán los comentarios de los artículos oficiales de documentación. Los errores y mejoras de un artículo se registrarán y se administraran con el sistema Trac general de Plone, como bugs en la documentación.

Se eligieron tres cargos especiales en el equipo de documentación:

  • Veda Williamson, responsable de asuntos políticos y de presentación (theming principalmente).
  • Steve McMahon, responsable técnico y enlace con la Plone Foundation.
  • JoAnna Springsteen, pastora de nuestro rebaño de editores.

Esto es todo por el momento.

Por cierto, el plazo de presentación al puesto de editores de documentación de Plone aún está abierto. Quien esté interesada en colaborar, que me avise y nos ponemos en marcha.

Related articles

Tags: ,

Today is the World Plone Day and JoAnna suggested us to post about why do we love Plone, so here I go.

I became interested in Zope when I spotted a printed copy of The Zope Book in the Students’ Council premises of my faculty. I learned the basics of acquisition, object hierarcy and… DTML! Yes, that version of The Zope Book was so old it didn’t cover ZPT, and I build the whole website of my student’s association, Hypatia, using DTML and the ZMI.

Some months later I started contributing to the Alqua project, whose founders (Álvaro Tejero and Pablo Ruiz) were big fans of Zope and Plone and I helped migrating an plain-html site to a Plone one a year ago. That summer Álvaro attended to The Plone Conference 2007 at Naples, Italy and recommended two books to me: “Proffessional Plone Development”, by Martin Aspeli, and “Web Component Development with Zope 3″, by Philipp von Weiterhausen.

At first, these two books were too hard for me, specially PPD, and I left them in my shelves more than once thinking I would never understand the “extreme” complexity of Plone. I started learning Django and built my first real-world application: mini-litmus, a web-based QA tool for Mozilla-related products.

On July 2008 I started working for Zassh.com, a startup company, developing a sports-oriented social networking site built on Plone. There I realized that I weren’t a Plone newbie at all! Reading PPD and Philipp’s book turned out to be really helpful, and I hard-learned how to face real world Plone development issues, which were very different from what I expected. Plone is hard to tame!

Now I’ve become a documentation editor and I’m working to improve this well-known weak point of Plone. I’m e-meeting a lot of people from the community and looking forward to meet some of them personally at a sprint or conference.

Plone is a strong and mature CMS with features others have only dreamed with yet. New eggified products and modules are published every day in PyPI, exploring new concepts and design patterns. Paraphrasing Phillip J. Eby, “those who doesn’t study Plone are condemned to reinvent it”.

Happy ploning, community!

Related articles

Tags: ,

Last week I started working (earning money :-P) for Zassh.com, a dot-com company which develops a social networking website with the same name about sports. It looks like my future is bound to the social web… or perhaps the Internet is what is bound to the social web.

The site is powered by Plone, IMHO, the most powerful CMS available in the open source world today. My role inside the company as a Junior Programmer is to develop and code the different parts of the website. There’s a lot of work to do, and when I say a lot, I mean a lot. We’re currently finishing the code of the 2nd stage of the site, which will allow users to surf the site without signing up, rating photos, and much more features I don’t remember right now.

I’m really happy about working with a tool I like, and I feel I’m going to learn a lot from that. Happy ploning!

Related articles

Tags: , ,

« Older entries