We’re proud to announce that SilverStripe 4.0.0-beta1 has been released. Get it from our download page and let us know your thoughts!
Since we’re now in beta, documented developer APIs can be considered stable. You won’t need to rewrite your PHP code again until after 4.0 is stable. With the stable release planned for later this year, we are encouraging everyone to use this beta release for new projects, and begin upgrading existing ones (check our upgrading guide).
With SilverStripe 4 we’re focused on modernising how content is published and the overall user experience, backed by some modern front-end technologies. We’ve written a lot about this release in the last year (check out Chris Joe’s overview talk). Let’s summarise where we’ve gotten to.
For content authors
Since our last alpha release, we’ve further simplified the CMS UI to work in smaller screens, including an expandable mobile menu which leaves more room for editing interfaces on mobile screens. There’s still a lot more to do for a fully mobile-optimised CMS, but the current state allows for quick edits on the go.
The new ‘campaigns’ feature lets teams collaborate better by simultaneously managing content from the same project and publishing all changes all at once. It is becoming more useful as we gain insights from authors. You can now see the relationship between items included in your campaigns and why they’re included.
We’ve also streamlined the “Insert Link” dialog, and separated out the different modes (url, page, email, anchor, file) into their own dialogs to reduce clutter. Linking to a page also got easier through a streamlined React-based page selector control. Developers can use this new form field (TreeDropdownField) in other React-based interfaces around the CMS.
There’s a lot of standardisation happening through PHP’s Framework Interoperability Group, and we’re excited to support the PSR-11 dependency injection container specification.
We’ve also worked hard to support generic HTTP middleware, which enables developers to reuse PHP functionality from the wider PHP ecosystem. For example, you could authenticate your SilverStripe API controllers with the same libraries you’d use for Laravel. Note that you’ll need an adapter for the underlying PSR-7 HTTP message format. Read Phil Sturgeon’s “Why care about PHP middleware?” for more details.
In the past, influencing the boot process of SilverStripe apps involved some black magic around the main.php entry point and its procedural logic. This is now encapsulated in Kernel/Application objects, and the boot process can be customised by reusing a few lines of code. This refactoring also makes it far easier to add behaviour very early in the request processing, such as denying requests due to rate limitations or creating fast “not found” responses. This is also the earliest place where you can apply the new HTTP middleware concept.
Nobody likes errors, but when they happen to our visitors we want to make them as friendly as possible. SilverStripe solved this by creating standard error pages in the CMS where content authors can tailor error messages and suggested next steps. We’ve moved this feature into a new silverstripe/errorpage module to allow developers to opt out and create their own behaviours. For example, large sites could opt for a statically cached and simplified template, which triggers search results related to the keyworks in the URL.
We’re betting big on ReactJS in the SilverStripe CMS interface (why?), but don’t want to compromise on the flexibility of customising the interface behaviour to your authors needs. This turned out to be a tough challenge that took the Open Sourcerers team over a year of discussions to crack. Following the principles of dependency injection, we’ve created ways to transform React components, Redux state and Redux Forms behaviour by wrapping your logic around the core functionality. Unlike the stable PHP APIs in beta1, this API is still under development, so feedback is welcome!
Frontend developers looking to customise the CMS user experience will appreciate our use of the Bootstrap, ReactJS and CSS Flexbox. You can read more about this in the alpha2 and alpha3 announcements.
What else has been happening?
There are always more changes. You’re welcome to check out the full list of enhancements and bugfixes (requires login) in this release’s milestone on Github.
What we’re focusing on next?
This release freezes any changes to the SilverStripe 4 API. We’ll be shifting our attention towards bug fixing and polishing of the UI for a stable release later this year (check our roadmap). You can help us shape further roadmap planning through our User Research Panel.