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.
Plone today vs what we aspire to
Thanks for the reply on this - it is a huge question for the community and I appreciate the feedback.
I have heard a lot of confusion about Plone 3.0 themeing/skinning. I think the newness of Plone 3.0, along with the fact that major changes in the platform occurred since the last release, make this a challenging transition time.
Additionally, I should point out that there has been a *lot* of discussion on the stack itself, and the challenges that have developed due to its increasing complexity (zope 2, zope 3, etc)...check out Philip's and Leonard's talks). It is something on the minds of the community.
And that leads into one final point - the core values of Plone aren't necessarily what we find most prominently today in the product. I wanted to bring this up because we *haven't* yet articulated the core of what Plone is...and we need to. Otherwise how are we ever going to figure out where we are going with the product?
Thanks again for the comments.
-chris
Core community
One thing strikes me here as an example of core values : those of the free software movement. I find myself rather soft even if I'm all alone pushing on FOSS in my current employment environment compared to what someone like FSF founder Richard Stallman had to go through 20 some odd years ago. We are at a point in time where it is *easy* to foster FOSS with niceties like OO, Plone, GNU/Linux that compete head to head with proprietary counterparts. I sometimes try to imagine what it was like at the very beginning of the FSF epoch, when *nothing* existed, not even communities. To me, copyleft is just a nice way of coining the concept of free community development and the core values of the FSF, embodied in the 4 principles of the GPL, amount to me as only one core value : community.
I would have never been able to show off Plone here had I had to pay for a license or use some 30-day (limited) trial version of the software. Over the last four years, I had fruitful contacts with a variety of folks in the Ploniverse, ranging from geomatics (PrimaGIS/Python Cartographic Library) to the use of Plone in educational settings and through a number of other dimensions the exact number of which I forget, without which I would have probably failed in adapting Plone fast enough for management to notice. Plone is a community with code (python, ZPT, css, etc.) being a by-product of that community. I need the community as much as I need to feel part of it.
I know this post of mine won't help you Chris in determining what Plone is in order to determine where to go with it. It just echoes how I feel about Plone and what I think it's core value is.
Cheers,
Yves
Approachable?
There are many out there who are NOT programmers but are excellent designers and making it harder for us to customize Plone sites.. well.. is disappointing. Fortunately Plone had me at "hello world!" and like Hazmat's tshirt.."Plone.. why can't I quit you" I'm hooked.. I just wish more thought had been put into keeping us in the loop as far as theming was concerned. I'll stay on the bandwagon for Plone .. this isn't a dealbreaker.. but please.. when you say approachable.. let's include the creatives who make Plone "look" good (it is already the best developed CMS)
Returning to my new Plone 3.0 book (thank you Martin!) and delving in to learn all I can about Zopeskel and Plone3_theme.. etc.