Working Against the Grain
With any tool there is a natural fit for that tool. We've all seen this in all manner of parts of our lives. Using a butter knife to unscrew the back of a kids toy to add new batteries, using a shoe as a hammer... I'm sure we could all name some. This is not to say that there are not tools that have a wide variety of uses, but one has to be aware of what the limitations of the tool are and make a judgement as to whether they are the best tool for the job. Often this can come down to a number of factors: price, suitability, availability, training are but a few. If I am in need of cutting a small piece of wood and I have a Swiss Army Knife in my pocket then I might use that to do the job, even if it is not as suited to the task as the tenon saw I have in the garage. It is just handy. I'd love to have a pillar drill in my garage but I can't really justify the cost and space for one, so I'll use a corded hand drill... OK so it won't be as convenient or as quick, but it is what I have to hand. If on the other hand I was going to be building a large piece of furniture or making a number of items then I might deem it worthwhile to go and invest in a pillar drill, or table saw, or whatever tool it is that would make my life easier and the job quicker, more accurate and probably safer.
So where am I going with this? Other than venting my current desire to go to a hardware tool shop? There was a blog post a couple of days ago on Plone vs. Wordpress by a guy called Paul Kaiser from a company called WPMU. In his post he basically attempts to discourage people from using Plone and instead use Wordpress. There are a number of great comments on the blog post from people in the Plone community pointing out the inaccuracies and flaws in his post. In particular, Karl Horek posted a response on his own blog entitled "Confirmation Bias in Software Comparisons". I love Karl's posts as he comes from a background in Ecology and Biology and has some great insights into software from an evolutionary perspective. One thing that most of the comments and Karl's post all seem to be saying is "Use the right tool for the job". I too have commented on Paul's blog post from my experience of both Plone and (to a much lesser extent) Wordpress.
One of the areas both Netsight as a company and the Plone community as a whole have grown, evolved and matured over the 10+ years of its existence is working out what Plone is and isn't a good fit for. Yes, Plone is a very flexible tool and yes you can use it for a variety of content management scenarios. Yes you can use it for a public website or for a company intranet. Yes you can use it for a 1-person business site or for a 100,000 user site. However over the years Plone has been working out its niche. As has Netsight as a company. Some people say that if all you have is a hammer, everything looks like a nail. What I'm trying to say is that if you need nails hammering in then come to us as we are damn good with hammers. We are not too bad with drills and saws too, but hammers are where we really shine. If you want a screw driving then we'll point you towards someone who is better at screwdrivers. If you really ask us to we'll bang a screw in with a hammer, but we'd much rather (for both our sakes) you used the right tool for the job. Why? Well in 2 years time when you want to remove that screw that we hammered in then you might have a hard time getting the screwdriver to mate with the mangled screwhead. That might not be obvious at the time, but it WILL happen at some point in the future.
So enough with the tool analogies, lets bring this back to something more specific. Let me tell you a story of a customer of ours. I won't name them as they have a relationship to maintain with other suppliers. A couple of years before they came to us they had a website developed for them on top of Wordpress. The site was a site for their business selling information. You had an account with them and could go to their website and search for a company and get back information on that company. The way the site was developed each company record was an article in Wordpress. This might have seemed a reasonable thing at the start of the project, the developers could just use a tool they knew and re/(ab)use the blog functionality to build an information database. As further and further requirements came about the developers struggled to implement them on top of Wordpress. The client got frustrated and looked for someone else to re-build them something more fit for purpose and found us.
We started to build their site on top of Pyramid, a Python framework that shares a lot of the same underlying technologies as Plone. Partway through the development the client came to us asking us to speed up development. The reasoning? They discovered that the original Wordpress site had RSS syndication still enabled. So whilst the developers had protected a number of custom PHP pages they had developed with logins, the original RSS feed pages still existed and allowed a nice machine readable access to ALL of their content. All of the content that their business was based on. All of the content that they employed dozens of staff to research and collate. Google had found this and indexed the entire lot. If you typed their name into google and the company name you wanted you got the data back without having to subscribe. Ironically this offered a much better search mechanism than what they actually had in Wordpress to start with!
We had architected the new Pyramid based site with sound foundations and proper information architecture right from the start. There was one and only one way to access the company data from the database, and that path was protected with security and subscription assertions. Once you had passed that code path and the system was satisfied that you had access rights to that data then you could do what you wanted with it, display it as HTML, XML, PDF etc. We also had unit tests to test the security, and use Jenkins the continuous integration testing system to run the tests every time code was checked in. This way we could be confident in both the functionality and the security of the code over time and that no regressions were being introduced.
Now you could have built that system securely on top of Wordpress to start with and maybe you can blame the developers of not knowing what they were doing with their implementation. Perhaps more experienced developers would have done a better job. But the fact remains they would have been fighting against the natural tendencies of the software. They would have been working against the grain. And all of you who have slipped and injured themselves when using the wrong tool for the job know what that is like.
Now where is my screwdriver.... I have some paint tins to open....
EDIT: Oh, and if you want a really good overview of what sort of things the Plone community think Plone is best suited for and how it compares to other products and where it is going, check out the Plone Roadmap.