Why does Plone theming hurt so good

It’s Wednesday morning and I haven’t even had my coffee yet and the second thought in my mind is my Plone filled day ahead (the first thought being is there anymore Frosted Flakes left and did the kids eat it all).

There are days, like today, where I wonder to myself why, after nearly 9 years, I’m still building Plone sites. Plone is still hard, but it is getting easier, or so I’m told. Am I a masochist maybe? Is the strength and pull of the Plone community so strong that even though my common sense says run, run far away and never look back, I still sit here day after day creating Plone themes? Maybe it IS Stockholm syndrome after all. I’ve been at the mercy of Plone’s multiple changes and increasingly more difficult theming story for a long time. Granted, I stay on top of “what is coming next” and know much of this ‘pain’ will go away with Plone 4. Or will it?

After all I am a designer, not a programmer. And yet I spend 99% of my time in code. Don’t even get me started on viewlet modification! Plone has so many awesome features, my clients love Plone because I love Plone. My clients see through my eyes, voice and actions that Plone is the right tool for their project. It is, really. Why does it hurt so much to make it pretty! Why do I love that it hurts so much? What am I going to do with myself when Plone has reached the point where theming is easy!? I can’t bear the thought.

I have tried to leave, to pull myself away from this project that has such a hold on me. It’s not easy. Plone is just so charming when you do what it tells you to do. Cross Plone and you’ll see, it can throw a nasty little traceback at you without giving it a second thought. Oh Plone what shall I do, I know I should leave you but I can’t. Plone you make me crazy, but you know what, I wouldn’t have it any other way.

/* heading to the kitchen for coffee and mumbling something about interfaces and zcml */

Top 3 ways to encourage adoption of your Open Source project

Today in one of my favorite irc channels a heated discussion broke out about submission of “patches” to this particular Open Source project. As a huge fan and long time evangelist for said project I was shocked. When you love something you tend to be blind to it’s faults (mostly) and as I’m not a developer I wasn’t privy to the issues this gentleman was experiencing. The conversation got me thinking about the way that “outsiders” to a project community might view issues we feel are inconsequential (or unimportant).

So how does an Open Source project deal with all the “needs” of it’s community and still move forward with it’s own plans for world domination?

Listen to the average user

The average, everyday user is the one that will help keep your project alive and kicking. If you don’t have users, you don’t have a project, pure and simple. That isn’t to say that every single complaint is cause for rewriting code or changing planned features.  Complaints and concerns from your userbase are a good sign, your project is being used in an active way. Learn how to separate, “I’m complaining because I’m lazy and don’t want to learn more than I have to” from “I’m complaining because I really love your project but this issue is a major deterrent”.

One thing I’ve found with developers who have worked on a code base for a long time is that they reach a point where they know it so well that they are oblivious to the types of issues a user who is working with the project for the first time experiences. The developer already knows what comes next, or what to expect, the new user does not. Common responses to new user questions: “Oh that’s easy, just do A, and then B and then C, and if that doesn’t work you can do C first and wait 20 minutes and do B, ok?”  To the average user, that is not easy, that is complicated and so they go to another project that just says, hey, do A and then B, and tada you have your result. Don’t make assumptions about the average user. Listen and absorb and if (after you’ve heard their concerns) you still feel it’s not important, let them know why and give them a good reason. End users are just as important as developers and integrators in shaping the overall project and it’s future.

Encourage criticism (as well as praise)

The art of dealing with criticism without harboring hurt feelings is tough when you’ve spent hours upon hours upon days upon weeks working on your project. Much like the mother who bristles at a well-meant comment about their child, developers feel a connection to their project and criticism feels like a lack of appreciation for all the hard work. In reality, constructive criticism can provide project developers with guidance and an objective look at your project. Granted there are times when asking for input just doesn’t make sense, namely things like, “I need to give this python class a unique name, what do you think?”.

Be honest

It’s the quality of the user, not the quantity that counts. Though for some projects the number of users seems to be more important. Don’t try and draw users in that don’t need what you have to offer. If your project is meant for large enterprise installations and requires a healthy investment of time just to get it up and running in a meaningful way, then say so. Don’t lead the user into the misconception that your project will solve all their problems with no effort if in fact they need to expend some effort to produce results.

I’m a much happier camper if the project tells me, “hey, new user, you are going to have to spend time reading this manual and this won’t be easy for you if you don’t know A, B or C” then I can decide if the project is worth my time and extra effort.

Open Source project communities can often times develop their own “cliques” (remember those from high school) with a penchant for putting outsiders in a class all by themselves. These outsiders are your end-users, the people who adopt and promote your project. So they weren’t there when you launched your project, they didn’t attend the last sprint nor have they contributed to your code base. Even so, these particular individuals, end-users, are the key to success for your Open Source project.

A great article by Ryan Paul on Building Belonging is the secret to Open Source Success

In Open Source I trust: Top 5 projects for daily use

There are days when I marvel at how far I’ve come since 2001 when the extent of my web experience was Front Page and basic html. In 2001 I met my boyfriend and he introduced me to the wonders of Open Source. Need a word processor or spreadsheet prograqm? Try OpenOffice. How about a graphic manipulation program, Gimp is just as good as Photoshop he’d say. I was sceptical and it took me a long time to “get it” but today as I open up VirtualBox once more to work on a client site with my favorite text editor Kate it dawned on me that the utilization of Open Source on a daily basis has crept into my routine and I’m loving it.  Excuse me while I fire up Amarok here and I’ll tell you about my top 5.

Although I use more than 5 Open Source projects in my daily routine the following are the ones that get the most use and the most attention.

VirtualBox – In February 2008 I wrote this post about my foray into desktop virtualization. Since then VirtualBox has become a mainstay on all my computers and laptops. I use VirtualBox everyday for the following tasks:

  • A sandbox for trying out Linux Distros before I install. Satisfies my curiousity about up&coming distros without having to wait around for hardware resources to be available. See DistroWatch for Linux/FreeBSD Distros to try
  • Testing out new versions of Operating Systems. I tested out Windows 7 last week in a VirtualBox on my laptop without having to build a new machine to install the OS.
  • Trying out new Open Source projects before we dedicate hardware resources (especially content management systems).
  • Installing a commercial application (closed source) like QuickBooks on a VirtualBox for testing (test compatibility with your OS on a test instance without breaking your base OS)
  • Installing and testing bug trackers, server maintenance and SaaS ready applications. Examples of applications we have tested in VirtualBox include Mantis, vtiger and Nagios.

I tried all the desktop virtualization options available and I found VirtualBox to be the easiest to use and I’m still using it a year later.

Plone – Plone is a Content Management System built on the Zope Application Framework. Written primarily in Python (with a little C thrown in for good measure) this project has grown in value as the community has grown in strength. Plone was my first real involvement with an Open Source project and the Plone community is what keeps me involved. It’s open, helpful, charitable idealogy keeps me hooked. I spent 70% of my day working on client sites developed with Plone.

Firefox – As a web developer whose primary focus is look&feel the web developer toolbar in Firefox has become invaluable to me. Firebug is essential to my daily tasks, I just couldn’t imagine trying to track down a css issue or a javascript issue without Firebug. Firefox has become my primary browser and the only time I open IE is to check a client site for cross browser issues. Although Google’s Chrome browser is much lighter I only use Chrome for non-work browsing because Firefox has so many great third-party tools that help me do my job everyday.

TweetDeck – I have used TweetDeck on both Windows and my Ubuntu box. I’ve tried quite a few of the Twitter clients and Tweet Deck is the easiest and has the prettiest interface. I find it extremely intuitive and it helps me to organize tweets. I’m looking forward to even more features and functionality as TweetDeck matures.

Ubuntu – Although we have been using Debian for years on our client servers (as well as virtualization) I wanted something on my desktop that was easy to use. Ubuntu with KDE (I install kde from source, but you can get KDE on Ubuntu by downloading Kubuntu) is a great combination.  You can make your desktop OS your own through customization. Ubuntu doesn’t use as many hardware resources as Windows and it’s free.  I’m not going to lie to you, I ran into some issues with the video card and some audio/speaker issues but there are forums and tons of tons of tutorials on troubleshooting Ubuntu. I work with Ubuntu everyday in some capacity and find it’s a quality distribution and easier to pick up than most of the other distributions.

So there you have it, my top 5 Open Source projects, VirtualBox, Plone, Firefox, TweetDeck and Ubuntu. Other projects that I use on a weekly basis, Gimp, Amarok and Open Office.

If you haven’t tried Linux yet, download VirtualBox onto your Windows (or Mac), grab an iso from DistroWatch and you should be only minutes away from experiencing the joys of Open Source!