Blog - News, interviews and lots more
SilverStripe 3.0 ReviewTweet
10 September 2012 | |
The eagerly awaited SilverStripe 3 has been available in a stable state for a while now, it's even had a minor release in the form or 3.0.1. But how does it shape up when compared to it's long established predecessor, SilverStripe 2?
Having now had time to really have a play with it and even do some project work with it there are 2 statements swirling around my head. 1: SilverStripe 3 is absolutely awesome and 2: We won't be using SilverStripe 3 for complex production sites just yet . Confused? Let me explain.
The CMS Interface
The most obvious change to SilverStripe is the User interface, and I am so glad (read relieved!) to say it is an absolute peach. Despite concerns about the demotion of the site tree leading to confusing workflows, the late changes ensured the tree is persistent and seamlessly transitions between full screen and page editing mode, allowing a more (believe it or not) fluid and focused work-flow than previously.
Another great introduction is full screen relation edit forms, no more popups in popups and confusing multi DOM editing. Now we can simply step through related objects editing as we go and using the breadcrumbs at the top of the CMS to navigate. As small a change as it seems, this is a game changer for us at Aab Web, really opening up the possibilities for both Model Admin and in-page Grid Fields to be used in ways that previously were messy and unintuitive.
The new Tab system is also great, far more intuitive with only 3 default tabs; Content, Settings and History (yes, History is now in a place you can actually explain over the phone!). Some may argue that there is now less space to create new Tabs, and that is true, but what they have done is encouraged you to be smarter with your form structure. A great example of this is the 'Metadata', which is now placed in an expanding ToggleCompositeField underneath the content editor. Using a combination of these expanding fields and a reduced number of top level tabs means you can still create just as many fields but in a way that will be easier to find and more intuitive to use for your clients.
Other bits worth a mention are improvements to the way URLSegments are now handled (no more alerts!!), the file upload fields with drag and drop uploading and in-page property editing which is super slick and very useful and of course the Grid Field which now makes Model Admin a far more accomplished interface.
I was surprised to find that when going back to 2.4, it felt like such a step back, the clunky interface is just so....dated. It was great in its day, but I am now really excited about the prospect of showing clients SS3, I can already hear the 'oooohs' and 'aahhhss' as they drop a file in or switch to and from preview mode.
Once you look past the cosmetic changes to the CMS, there is actually a much more significant change to SilverStripe 3. It is now a full blown, standalone application framework. Although initially this may not prove terribly interesting to many SS developers, in time this could be the thing which truly sets it apart from much of the competition. Not only is the 'Framework' (formerly known as Sapphire) now stand alone, but it has had major improvements which should now enable truly scalable sites. 'Can you use it to build Twitter?'. Well, it's certainly much more feasible than it was with Sapphire 2.4 and that in itself is a very exciting prospect.
For those who don't intend to use the framework on its own there is still plenty to be pleased about. The new DataObject collection methods are intuitive and lazy loading means they are efficient, although they will mean much existing code will need to be reworked. The templating system has also been completely re-written and now behaves exactly as you would expect and adds a list of great new features which will allow far more dynamic templates as well as even more intuitive for front-end developers to get to grips with. For me, just being able to use 'not' in an <% if %> is improvement enough!
Another new feature worthy of mention is the yml config files. Although I am yet to try them for myself, I am assured they will provide far more flexibility and improve performance. If this is true then it all sounds good to me, even if I do need to learn a new way to write my config.
And.....the Party Stoppers?
So at this point you're probably thinking it all sounds so great, why not use it for all projects? I wish I could say it was ready for that, in so many ways it would make projects easier and more exciting. Unfortunately there are a few bits which although likely simple to fix, mean we just can't hand it over to clients yet.
Take for example the site tree. It looks great, and on first inspection it also works great. But try moving pages around, deleting them, un-publishing and publishing and you start to get strange things happening, like child pages not showing up, or parent pages unable to expand to show their child pages. To be fair I was unable to reproduce this today, so perhaps I just hit a strange edge case previously.
Then there is the preview mode, which also seems to work well, until you move to another page on the site and press 'edit' at which point you are returned to a blank page in the CMS, or worse press the 'Pages' link and the edit button disappears. A similar thing happens when reverting a page to the previous version under the history tab.
More minor annoyances include the fact that the (awesome) file field doesn't collapse properly sometimes when loading a page making it confusing for users, and the fact that you can't put image thumbnails into the gridfield summary. And remember, DataObjectManager is not (and never will be) SS3 compatible, so for now we don't have a nice way to have multiple file uploads automatically followed by edit forms for each, a great feature for a gallery or document store.
Another issue is drag-and-drop sorting of Data Objects. This was super simple to add using the DataObjectManager in 2.4, but as that module is not compatible with SS3 (and never will be) it was a big surprise to find that it wasn't offered by the new Grid Field. There is a 3rd party module available here which does a reasonable job (albeit a little more conveluted than DOM), but not having it in the core really feels like a glaring ommision.
Although all of the above are stopping us using SS3 for production, they are all relatively simple fixes when compared to the amount of great work that has already been put in, so I don't anticipate it to be too long before they are fixed (in fact 3.0.2, currently in RC1 already addresses some of them).
I don't think there is any doubt in my mind that SilverStripe has taken an enormous leap forward with SS3. Using it gives me a great feeling that I am in front of a state of the art piece of software and developing with it makes we wonder how I put up with 2.4s 'quirks' for so long. The only problem is, it still feels like it's in beta.
As soon as we get a truly stable version (I suspect that will be 3.1.0) there really will be very little reason to look elsewhere for almost any client project. SilverStripe will do it all, elegantly, efficiently and above all else with style. Eat your heart out Wordpress.