GSoC/GCI Archive
Google Summer of Code 2012


Web Page:

Mailing List:

Innovation. Open Source. Make it easier and more fun to build and maintain sophisticated websites. Change the world.

SilverStripe Ltd is an organisation responsible for creating the open source SilverStripe CMS and framework, and provides the commercial support and professional services that serve to fund the project. The organisation is based in New Zealand, Germany, and Australia, with a world wide open source community. Our open source project, SilverStripe, is written in clean, object oriented PHP and works with MySQL, PostgreSQL, SQL Server, and runs on Linux, Mac, and Windows. It is used to build websites that have beautiful user experiences across different devices, and that have powerful content and technical needs. Out of the box, SilverStripe CMS provides a robust but very user friendly website management system that can be customised by developers. Our software has been used to power websites for Barack Obama, major corporations, government, and non profit organisations, and hundreds of thousands of smaller websites. The SilverStripe organization is committed to furthering open source and open standards, which fuel the free, open, and interoperable web and directly improves the world we live in.


  • Content Personalization and Targeting Module This module allows users to personalize their content easily. Users define audience types with DSL and users can use audience types in the template to personalize their content. Users can define audience type by location, in-bound keyword, in-site activity(keyword search, history), os, browser, device, etc. As far as I know, this module would become the first module that provides content personalization and targeting feature for a major CMS.
  • Improve Behaviour Testing Framework and Test Suite SilverStripe has a decent coverage of unit tests, but these tests test mostly backend and don't examine the CMS/framework from the user perspective. The goal of the project is to introduce acceptance tests (simulate user behaviour in the system to check most common actions).
  • Improve Developer Ergonomics SilverStripe has a set of features to support developers. However, these features depend on manually adding GET parameters to the URL. The goal of this proposal is to make the tools available at a central, easy to find location in form of a developer toolbar. In addition to this, I will modify the existing logging system, centralizing functionality in SS_Log. I will add a new log target that allows to log to the toolbar. Furthermore, I plan to add filtering and sorting capabilities to make the interesting information easier to find.
  • Improve Payment module The Payment module is an essential part of many SilverStripe e-commerce solutions. It is a powerful stand-alone module, which can be incorporated to SilverStripe websites to enable processing payment for any DataObject. However, despite being widely used, the Payment module is currently facing some limitations such as the lack of unit testing and unstandardized API. This project aims to address those limitations.
  • Improve Module and Widgets pages At present the content of modules and widgets download pages are not well maintained on community website of SilverStripe. Search form gives very few options. For submitting or updating any new module users need to fill a form. In the proposed version of system, users can simply submit URL of their module repository and the files would be fetched automatically. In this project Also we have to redesign search and detailed pages of module/widgets.
  • Module System Refactoring Currently there's no way to define dependencies, organise modules into subfolders or easily submit them to a central repository. With the recent surge in popularity of the composer/packagist pair, I think it would be great to take advantage of this really useful system rather than inventing our own Update the module system to one based on composer/packagist. This would allow module authors to define all the metadata for a module inside a JSON file (tags, requirements etc etc), and all the versioning would be inferred from source control. This means submitting a module would be as easy as submitting the URL to your repository.