Building a Castle: Part 1, an Introduction
At Wildcard on and off over the past year we've been working on building a distribution of Plone.
The main goal of this distribution is to implement features on Plone that we've wanted done over the years. These features are tight integrations and UI opinions that Wildcard has seen the need to implement for our customers to see our solution as competitive.
We've named the Plone CMS distribution: Castle CMS.
Since this is an introduction post, I'll list some of the features that we've implemented to give you an idea of where we went with it. In future posts, I'll go into some of the details.
Feature list overview:
- Everything is Mosiac: Use mosaic to write all your content.
- Everything is a Tile: In going the Mosaic route, we went all in with tiles. No more viewlets, no more portlets.
- Enhanced UI: New toolbar, new modals, better related items widget, better image widget with cropping.
- Amazon S3 Integrations: Automatically move large files to S3 and support for archiving old content to S3.
- Focal point: Focal point support gives designers the ability to provide many image sizes without expecting their content editors to crop the images to the various target sizes. Content managers just need to select the area on the uploaded image that should be the focal point and the image will be focused automatically to that and cropped around that point on various sizes.
- Responsive images: Scale up images to the most appropriate image size depending on the screen size of the device viewing the image. In addition, loading the larger image is only done once the image is scrolled to.
- Repositories: Instead of making users have to think about where they need to add images on their site, we've implemented file and image repositories.
- ElasticSearch: ElasticSearch support OOTB. This provides powerful search opportunities and improved performance.
- Search features: Castle implements search pinning and advanced scoring based off of popularity and social media impact.
- Recycling Bin: Users feel more safe using a recycling bin and this prevents potential issues when trying to use ZODB transaction undo.
- Asynchronous Actions: Some tasks should be done asynchronously. With Castle, we've moved many actions into asynchronous functions. This even includes cases where you're trying to copy or delete a large number of items.
- Analytics: Google Analytics API integration to get quick info on the popularity of pages.
- Previews: Modal to quickly inspect the page you're working on with various screen sizes.
- View as: Ability to view the site as another user. This is an administrator feature to help in debugging sharing issues.
- Document Viewer: Integration with collective.documentviewer for all uploaded files.
- Tiles!: Support for many different tiles: Audio, Video, Calendar, Document Viewer, Facebook, Twitter, Pinterest, Gallery, Slider, Navigation, Query Listing, Sharing, Search, Maps and more.
- jbot and fragments: Our themes have built-in support for jbot and fragments and it works TTW.
- Audit Log: Get details on what each user on the site has done and be able to export reports on those actions.
- Sessions: Active session management. Allows users to inspect what other active sessions they have and end other sessions. Allow managers to inspect what users are currently active on the site.
- Quality check: Let users know if they forgot the summary text or are publishing content that is linked to provide images or content.
- Redis Integration: Redis is used extensively for caching, session management and async.
- Image de-duplication: Detect duplicate images.
- Login/Lockout support: Track login attempts and lockout a user with too many failed attempts.
- Cloudflare: We've gone all in with Cloudflare integration for our CDN.
- HTML5 Video: Auto convert video to HTML5 compatible format.
- Design Menu: Quickly select layout to use on a particular page or folder.
- and much more: Castle is meant to be a complete solution. We provide replication RO/RW, CDN and various API integrations to give a complete software solution.
With Castle we also made some decisions that some may wonder about. I'll put them out in the open now and begin to explain the reasons for it.
- No more default pages: This has always been very confusing for users and with Mosaic, there really is no reason to have it anymore. The one exception is the home page where it is still used. Otherwise, there is no UI to be able to manage default pages.
- No more diazo: We still have the theme editor. However, with Mosaic site and content layouts, there really is no reason to have diazo anymore in our opinion and it just added a layer of complexity that was unnecessary.
Wildcard is committed to Plone and open source. We will be open sourcing all the Plone related components.
We'd also like to see some of these features land in Plone core after they get community buy-in.
Image widget with focal point selector:
New related items widget(notice how you can add content from the related items widget?):
Content browser(used in related items and other areas):
New add content modal:
In the wild:
I'm planning to write blog posts describing various features of Castle CMS.