Silverstripe: as a platform
June 10th, 2008
At Xebidy we use Silverstripe almost exclusively as a platform to build upon. Not just Bootstrap (our custom extensions) but also the Sapphire framework to build the more advanced parts of the website we build. The Sapphire framework is at the most basic level an MVC framework for PHP5 with a number of additions to service the Silverstripe CMS. I’m writing here a breakdown of what I see as strengths and weaknesses of the platform. Before you read on please take these 2 points into consideration, I really do like working with it and I have a lot of time invested into the platform and this is my opinion and not that of my employer.
I would love to hear everyone’s opinion on this so drop me an email or leave a comment.
-
Abstraction of layers
Over the past few releases there has been talk on the Silverstripe forums, their trac and the mailing list of trying to move the CMS code away from the core of the MVC framework so normal non-CMS based applications don’t need to rely on it. While it is a little frustrating currently over the past couple of releases this has progressively gotten better and I believe that this can be achieved in the near future. The specific example of this is ContentController which I would suggest should be refactored out into a SiteTree_Controller and ContentController.
-
Extensions/Decorators
This is probably what I love the most about this platform and I think the guys over at Silverstripe should be applauded for this. They have built an awesome framework wherein each Class can be extended quite simply. The beauty of this is in it’s simplicity for the developer and it really allows for extensible applications to be built. It definitely has a few bugs in it which can be quite tricky to track down but generally it behaves exactly how you expect it to. My biggest suggestion for Silverstripe is to push this as a strength of the platform because it really is very cool and extremely functional.
-
Template Engine
Most people that are new to the the platform are opposed to Silverstripe having it’s own templating system. It definitely has it’s pros and cons. Firstly it is not a fully blown parser, relying on a number of regexes to parse it’s syntax. I run into this problem quite regularly and end up nesting control blocks or creating methods on objects that in my opinion should be handled in the presentation layer. The second problem I have with it is it’s lack of a context stack - this means you can’t access something in the previous nested control block or even access a variable (not really variables) in the “global” context.
Don’t get me wrong, it’s not all bad and I don’t believe that there is anything in this that can’t be fixed (I started writing a new parser for it quite some time ago). On the flip-side the way the templating engine matches the Model of the application is a really elegant solution and I don’t believe the template engine should be removed. A cool but definitely complex improvement for this would be to make it more pluggable and allow extensions to expand the language.
-
Documentation
Generally the documentation on the project is very good. I think it could be improved with some more articles about the lower levels of the framework and have them highlighted on the blog rather than the rather boring marketing that is currently posted on it. Similarly the PHPDoc documentation on the framework is generally awesome and really helps with the code completion within Eclipse but this can definitely be taken from good to excellent by having protected and public variables types being documented. (As an aside I would love a way to document all the magic variables that are created by Framworks such as this.)
-
Communication
The Silverstripe project is coming from a different position than many open source projects in that it was released as open source and that company continues to drive the majority of the development. This is great and I definitely appreciate it. Many of the decisions made about the framework and it’s directions are made behind closed doors. This prevents any buy in from external developers. A great example of this was recently a decision was clearly made by the Silverstripe guys and then presented to the dev list for ‘opinions’. This work has been going on quietly on 2 branches with nary a word on how the progress is going. Similarly the 2.2.2 release has recently been completed and in the lead-up there was very little communication regarding the plans and goals of the release.
Aaron Cooper said:
Hi Michael, good overview, but I think you obviously know SS on a much finer level than myself. I am still building my first site using it.
It was love at first sight for me, especially when I ran through all the tutes and saw how easy it was to extend the system AND the CMS administration (”Thankyou Jesus” were my exact words)
Being in this subsection of users (the ones who can’t or don’t have time to delve into the core), there is one major concern I have for the SS project that grows daily, and I think it really needs to be addressed if it is to succeed to the level of Drupal or Joomla.
I feel that this concern directly relates to the structure of the development. And relates closely to item 5 on your list. Communication.
Silverstripe is a company, they build websites like you and I. They have shared this great CMS and IP that they have shared with every man and his dog.
Now, being a developer myself, I can’t imagine getting my bread-and-butter, maintaining a CMS product (An open source product), documenting it, and supporting it. It’s a huge expense, and Silverstripe can’t be blamed for this concern, yet it is a problem none-the-less.
For this reason, support - both on the forums and in documentation - is fairly lax. In the case of the forums, I think I have had responses to maybe 20% of the questions I raise. There simply doesn’t seem to be much in the way of seniority on the forums, no gurus except for Willr (one of the developers), who tends to come on daily but can only do so much alone.
The thing that is most concerning is that the majority of these questions are of the sort that are dead simple to answer if you know a system well. (like functions and methods). E.G One of my own questions was relating to the currencyField object. This field defaults to ‘$’, but how do I go about making it handle GBP? No answer to this has forced me to use a decimal instead, and hard code the symbols in the page class.
I think this is a flaw with the infrastructure model of a commercial development house maintaining an Open Source project. It’s very different to the likes of Drupal and Joomla.
And again, you can’t blame Silverstripe (the company) for this. It’s not like I expect their Devs to be on the forums answering questions. But given the growth a web development company experiences, I don’t really see the support situation getting all that much better.
Cheers
Aaron
Ingo Schommer said:
Hey Michael, thanks for the great write-up - as mentioned in the mailinglist, we’re working on addressing some of your concerns.
Aaron, I think you’re seeing the situation with having a commercial entity behind an open-source product a bit too negative - its basically a “fast-forward” factor behind a young product that lots of good ideas out there don’t have. Sure, the Silverstripe community has to grow to become self-sustainable - but if you see us in the context of a roughly 2-year-old random opensource-product, we’ve come quite a long way
Adam said:
Hi, all good points, it is a great CMS when compared to others out there and I made the decision to move our projects onto this framework this Summer. Aarons points re support on the forums remains my prime concern too and all his points re the structure of that support would be echoed by me Ingo I’m afraid.
Willr is an absolute gem of an asset to the project but he can only do so much and compared to other open source projects with a similar short history the forum, in general, lacks a certain impetus and general busy dig out atmosphere. Recently I’ve posted a fair few comments and reported some bugs I’ve found, but have received very little response from other users or the team and the time difference makes the IRC channel and the Friday morning Pow Wows unusable for me, which is a shame.
We all agree it’s a great framework and has real potential as well as extremely good of a web dev company to share it’s IP in this way Ingo. But I am now going to have to employ you guys in the Silverstripe team to finish one project I have in order to complete the job successfully. Hopefully some good will come out of it in the shape of another extension that the SS community can tap into, but with better forum response and more verbose ‘how to’ tutorials I might not have needed to go that route.