Entries For: October 2007
October 12, 2007
Christopher Johnson: What is Plone?
Plone is a lot of things to a lot of people. But, at heart, it has a core identity. This is familiar to those who read the plone-dev list, but if you are out of touch with the heartbeat of the community or overwhelmed by the information there, you won't be able to find the core values of Plone written in one place. I was kinda appointed to do so today via "Plone is Democracy"...so here goes a first draft for community review!
Many of us are familiar with the One Laptop Per Child project, which is making technology and information more accessible. Eben Moglen talked about this at his keynote at the 2006 Plone Conference (link to video, youtube version). What struck me as most powerful about the project was the clear, concise design principles. From the principles, you know exactly what the project is, and without any of those things, it would not still be OLPC.
At the Moglen talk, I asked about what Plone's design principles are. The question was more for the community, and a lot of people seem interested in the question (and it's answer!) over the last year...yet nothing happened. So, a year later, I started an informal survey at the Naples conference.
With the idea of making a draft of what Plone's core design principles are, I have been asking people around the conference, including core developers, board members, integrators, end users, new developers,...though there is obviously a diversity that we would expect from our community, I am trying to synthesize here the responses, with the intent of submitting the words of the community back to the community for review :)
And with no further ado...my attempt at articulating Plone core values:
1. Easy to use (to add/edit content)!
Responses: Easy to use (highest hits of any), usability (high number of hits), intuitive
This is the bread and butter of Plone, the part that every one of us experiences when we see it and use it, and the fundamental part of . Plone's commitment to usability since the beginning is apparent in the product and the community, and it is core to Plone to make it easy to use for content management.
2. Approachable
Responses: sensible defaults, easy to get, easy to deploy, easy to download and install, opportunity/potential, giving technical people (though not necessarily developers) a great system that they can gradually get more into the customizing with a steady and approachable learning curve.
This principle is about making it easy for people to get into Plone and get hooked on how cool it is, and then be brought through a manageable learning curve as they do more of their own custom implementations. It means out of the box, the settings make sense and that we empower people with tools that give them lots of potential. It also means that smart scripters (even without Plone development experience) can get into doing custom work also.
3. "Developer Nectar", ie Built to Last, quality framework
Responses: Safe customizations, smart adaptability, easy to extend, extensible, easy to develop, user centric, use case driven, best practices, web standards, accessibility, good error messages, cross platform, test-driven, solid development, open source, scalable (up and down), passion for the technology (doing things the right way, even if it is a new technology).
Moving on from those getting into the customizations, there is the more serious development work in Plone, which is solidly built on best practices (web standards, accessibility, development process, test-driven, etc). This is about helping developers learn about and adhere to good practices, as they get deeper in the system, by having defined processes and practices. It is also about using cool technologies that keep developers interested and having fun. Finally, it means that we provide direction to the developers that originates in the way people want to use the system, captured as use cases.
4. Fun! Community!
Responses: fun, fun atmosphere, entertaining, community (one of the more popular responses, though without certainty that it applies to Plone the software, but knowing it is essential to survival and sustainability of Plone)
Some intertwined concepts here, that I am calling Fun & Community. First on the fun: this is about being fun to use and develop with, as well as being a thriving community with amazing people. The community is an obvious part of anyone who already participates. It is amazing, whether it is the "mindshare" or finding others working in your area, or just having a great time with passionate, bright people, Plone's community is a huge asset. Without it Plone wouldn't be Plone. The community also provides lots of support, which helps sustain it and make it more approachable.
So, that's the core. Definitely needs language refinement and maybe also refactoring, but I submit it for your review :)
There is one item I am on the fence about. It is something that is not core now, though important, and which, if it were to be core, would affect certain decisions and involve some tradeoffs. That item, is "collaboration" as a use case for Plone the software (there is tons in the community itself, which is not what I am referring to here). There are definitely some collaborative features in Plone, but most are through addons or configurations (a few new ones in 3.0, but still lacks several).
Conclusions
The idea of core values or design principles is that they are the things that never change, that, if removed, would take away the Ploneness. The core principles don't necessarily have to unequivically describe the current product. The fact that we don't already have these principles articulated means that it may not be true, but it should help us to enhance the product in the future.
This is being submitted for comment and review from the community. The idea is *not* (did you miss that? I said NOT) to make a long list. Core principles lists should be as small as possible; the goal is not a comprehensive list of things we like, but instead the smallest list of things we can't live without.
One note about timeliness...as announced at the conference in the State of Plone talk, there will be a Plone visioning/strategy meeting in Feb 2007 at the GooglePlex. I strongly believe that we need to identify the core principles[1] before we engage in visioning, so here's my small contribution to that.
From talking with others in this process, I got a lot of good, complementary ideas as well as clarification on this excercise. I want to thank Paul, Jon, Martin for supporting the inquiry process.
References:
[1] The book, Built to Last, is a classic presentation of the concept of core values as necessary for a company/organization/movement's longterm success. It defines these as the small collection of values that *never change*. These are the heart, stability of the institution.