At Six Feet Up, we have long been champions of Plone, the open-source content management system (CMS). Our journey with Plone has been extensive, encompassing development, training, hosting, and active participation in the Plone community. Over the course of the past 20 years, we have contributed add-ons like Lineage and EasySlideShow and had several team members serve on the Plone Foundation Board of Directors.
Despite our deep-rooted history with Plone, it’s clear that for many organizations, it’s time to transition to more feasible options.
Plone's journey from its inception to its current state is a tale of both innovation and increasing complexity.
In the early 2000s, Plone emerged as a notable player in the CMS landscape. It quickly gained traction among developers and organizations alike, offering a robust and free open-source solution that was both versatile and functional. The release of Plone 2.0 in March 2004 was particularly significant due to its simplicity and user-friendly interface, cementing Plone’s reputation as a leading CMS.
As the digital landscape evolved, so did Plone. The introduction of Plone 2.1 brought the Archetypes content type framework, adding a new layer of functionality. Plone 2.5 introduced the Zope Component Architecture (ZCA) and GenericSetup, further increasing the system's capabilities but also its complexity. By the time Plone 3 was released, the CMS had fully integrated the ZCA, complete with viewlets and a new portlet system. These enhancements made Plone more capable but also more complex, causing a gradual decline in its popularity as users grappled with the CMS’ growing intricacies.
Plone embarked on a series of modernization efforts starting in 2010. Plone 4 aimed to reduce the system's "bloat" and introduced support for Python 2.6/2.7, making it more streamlined. Plone 5.2 continued this trend by adding support for Python 3, WSGI, and a REST API, which were crucial for modern web development. The release of Plone 6 in 2022 marked a shift with the introduction of Volto, a React-based frontend that worked alongside the classic frontend. By adopting a modern framework like React, Plone aimed to attract new developers, enhance user experience, and provide flexible tools, aligning with the industry trend of decoupling frontends and backends for more agile development. Despite these efforts, Plone's high complexity continues to challenge the balance between innovation and usability.
Transitioning from a well-established platform like Plone is not a decision we take lightly. However, several challenges have emerged, making it less feasible for many organizations.
Plone is powerful and elegant with a great eye on usability, but the CMS’ extensive features have also made it difficult to use and maintain. While Plone excels in workflow management, complex sharing, and granular access permissions for groups with multiple teams, most users just need a simple web editor. For internal communication, tools like Slack and Teams have taken over knowledge sharing, reducing the need for sophisticated intranet solutions. Many users nowadays simply don't require the advanced features that Plone offers, and as a result, fewer people need Plone's solutions. The rise of simpler, more focused platforms has highlighted this gap, pushing Plone into a niche market where its unique strengths are needed, but not by the majority.
As Plone added more features, performance issues have risen, especially with larger sites and numerous logged-in users. The very features that make Plone powerful, like the personalization of roles and permissions, demand substantial compute capacity and memory. Optimizing and scaling Plone requires a level of expertise not every team possesses. We've seen Plone deliver exceptional performance on large, complex sites, but achieving this level of efficiency is no small feat. It involves careful planning, extensive testing, and ongoing adjustments to ensure that the system can handle high traffic and intensive processing demands. Teams that manage to navigate these challenges are rewarded with a high-performing CMS, but the journey to get there is often arduous and resource-intensive.
Plone's customization potential is vast, but it requires developers to navigate a complex web of technologies. Proficiency is needed in multiple skill sets including Python, Zope, the Zope Object Database, ZCML (an XML variant), the Zope Template Language, and either Diazo or Volto, depending on the frontend style chosen. Unlike many other systems, where skills might be siloed into distinct areas, Plone demands that developers often blend these technologies together to implement a single feature or fix a bug. This interplay of diverse technologies makes the development process especially challenging.
Upgrading Plone to newer versions can be cumbersome and costly. Developers frequently encounter compatibility issues, requiring substantial effort to migrate content and customizations. A team preparing for an upgrade will often find their carefully coded customizations failing due to changes in Plone’s underlying dependency packages. The frustration mounts as they realize that in-place database upgrades require meticulous and manual handling of minute problems that have accumulated over time. These issues, generally unseen during normal operations, will block a clean upgrade to the new version.
The other option is to set up a brand new Plone instance and go through a data migration process whereby all data is exported to a format like JSON and the export/import pipeline is meticulously crafted to prevent data loss. Unfortunately, this alone can take months, with the effort increasing based on content complexity. The time investment can be significant, leading organizations to weigh the benefits of upgrading against immediate operational demands and resource constraints.
Despite modernization efforts, Plone lacks user-friendly interfaces and integration options compared to newer CMSs. With fewer than 100 add-ons available for the latest version on the Python Package Index, users rely heavily on custom development, which can be both time-consuming and costly.
Plone’s out-of-the-box features frequently fall short of users' expectations for an intuitive and visually engaging interface. To achieve modern functionalities like content carousels, animated elements, or video backgrounds, custom development or third-party solutions are typically necessary.
While some popular integrations are available, many tools require custom add-ons. Development teams must not only create but also maintain these integrations, ensuring they remain functional and secure as both Plone and third-party services evolve.
Although Plone offers extensive documentation, it can be outdated or incomplete. And while the Plone community forum is active and helpful, resolving specific project issues through this medium can be time-consuming and inefficient. This presents a challenge for new users who might struggle to find the necessary support, resulting in longer development times and potential frustration.
Finding skilled Plone developers is increasingly difficult due to the small and geographically concentrated community. With an estimated global Plone developer base of under 5,000 and fewer than 500 attending the annual Plone conference, the talent pool is limited and primarily centered in Europe. Additionally, many Python developers consider Zope and Plone outdated technologies, further complicating recruitment efforts. As a result, organizations often struggle to find the right talent, causing delays and potential issues in keeping their Plone sites up to date and secure.
Assign points to your answers (low = 1 point, medium = 2 points, high = 3 points):
Risk Assessment: Your Plone setup is low-risk and manageable.
Recommendations: Continue using Plone, but regularly review for any changes. Stay informed about new technologies.
Risk Assessment: You face moderate risks with Plone, including some concerns about complexity and talent retention.
Recommendations: Evaluate alternatives or invest in simplifying your Plone environment. Regular risk assessments are crucial.
Risk Assessment: Your Plone setup is high-risk with significant concerns about security, complexity, and talent loss.
Recommendations: Consider transitioning to another platform. If not immediately feasible, simplify your Plone setup and enhance security measures.
Organizations often turn to Plone consultants like Six Feet Up to support their in-house teams, but achieving full self-sufficiency remains a significant challenge due to Plone's complexity, high performance demands, and the scarcity of skilled developers.
The obstacles listed above highlight the growing need for simpler, more adaptable platforms. Over the past five years, we've been guiding our Plone clients toward Python-based alternatives like Django and Wagtail. In 2024, we ourselves transitioned away from our 20-year-old Plone-based company website, embracing a new era of flexibility and efficiency.