How time flies. Our first 3.1.0 beta release was brought to you by Santa – last year. The easter bunny came empty handed, but we've been busy getting the final release into shape. Today we're proud to announce the next major milestone for SilverStripe, 3.1.0 stable. Nearly a hundred contributors have joined forces, pushing over 2000 commits. We encourage you to download 3.1.0 final, and review our changelog and upgrading guide.
The 3.0 release came in 2012 with a completely reimagined user interface. With 3.1, we wanted to focus on stability and more iterative improvements, with more knowledge on how users find their way around the new CMS. In SilverStripe 3.0 (like in most CMSes), you had to switch between the editing interface and a preview of the actual website. In 3.1, you can see the two side-by-side, provided you have a decent screen resolution. There are new options for previewing at different widths, and more useful controls for switching between draft and live content.
Image: Preview modes
Talking to many CMS users, we also found that they are commonly overwhelmed by the various buttons to affect a page, e.g. to save its content to draft. So we’ve moved the minor actions into a flyout, alongside some useful metadata about the page itself. There’s an API for that, so you can add your own minor actions as well. In addition, the CMS change detection now highlights if a page needs saving by changing the button style.
Image: Grouped buttons
Image: Highlighted buttons on unsaved changes
On the framework side, you can now set most configuration aspects via YAML files rather than through PHP code. That's an important measure to speed up requests (less autoloading), but also makes your project more maintainable through a declarative file format which can be parsed and amended easily through automated processes. Be sure to check out our upgrade guide on how to convert your static property declarations to fit this new format.
We’ve made some architectural changes to DataList and ArrayList, ensuring that they are consistently immutable, meaning they’ll always return copies rather than modifying themselves. This means that you can pass DataLists to other parts of your application without worrying that they will get modified, making code more modular and maintainable.
The UploadField form component has made it much easier in 3.0 to handle file lists like galleries or associated documents. With 3.1 it is now possible to upload a file before a record is saved, reducing the number of steps required by a user. A new setting to replace existing files (and related warnings) will simplify managing of larger file structures.
Our continued support for the Composer dependency manager has energized the module ecosystem: Its easier to install and manage a larger amount of modules now (see docs), and we see a trend towards smaller reusable modules which can be combined to something great. A good example of this is the GridField, a solid base in the framework with many module variations building on it. To support our module authors, we've launched addons.silverstripe.org which automatically gathers all modules with composer support – nearly 500 modules and themes are listed there already!
There's loads of detail changes, so we encourage you to go through our changelog for more information. Also, keep in mind that we've branched off the 3.1.0 release line early in July, in order to stabilize. Which means there's a couple of dozen commits merged into 3.1 which won't be part of 3.1.0, but likely go into 3.1.1 (see framework and cms diffs).
According to our release process, the 3.1.0 release marks the end of our 2.4 support, since we only support the last two major releases (3.1 and 3.0). We do however acknowledge the popularity of the 2.x release line, so will continue patching security issues on 2.4 until at least 31st of March 2014. If you haven't considered upgrading your older sites yet, now is the time.
We'd like to thank all of our contributors for their fantastic work, and all users of the CMS for their feedback and support in evolving our new CMS interface.