Silverstripe and the Sapphire framework
I had heard about the Silverstripe project a few years ago, when I was looking for alternatives to Drupal/Joomla! to build small and medium sized websites. I was looking for a framework that could be easily extended, and with object oriented code, and Silverstripe looked good. However, I decided to just focus on pure frameworks and started working on CakePHP and Zend Framework instead, so Silverstripe slipped out of my mind. Until now.
After an interesting job interview for an agency in London that develops websites on Silverstripe I decided to take a look again at their CMS and the associated framework, Sapphire. While I wasn’t looking the project has really grow and I really like the look of it so far. Some of the things I like so far are the ORM features, giving you great control over the database structure and the templating system.
The ORM system allows your application to define your database, updating and altering it when necessary from within the application. Even if I assume fine tunning will be necessary on a high load application, it makes starting up much quicker and keeps the database and the application in sync without much effort. You need to use a specific syntax to define it, though, which means database design software cannot be used.
The template system is also very flexible, and encourages you to write the logic in the controllers and follow an MVC architecture like cakePHP or Zend. This and the fact that the architecture also encourages you strongly to divide your code in modules makes your code structured and easy to reuse.
However, the problem I’ve found is the lack of technical documentation, at least officially on their site. There’s lots of easy tutorials and shiny presentations with all the features, but so far trying to get a structured documentation such as the Bakery for cakePHP or the Zend Framework one is proving difficult. It may be that I’m looking at the wrong places, or that the fact that they have published their own book (SilverStripe: The Complete Guide to CMS Development (Wiley)) makes helpfiles a low priority. Don’t get me wrong, the CMS features are extremely easy to use and I am sure anybody can be posting content in no time with minimal reading. But I was looking for info about how to develop a site from the ground up, where the CMS functionalities are just a nice extra.
I also would love to hear more about its performance, since so far I’ve only seen people using it for small websites and not fully fledged web applications with heavy load. That makes me wonder if I am better off just using cakePHP and developing the interface myself for this particular project, and leave Silverstripe for content based small sites that I’d build with Wordpress otherwise.