The SilverStripe Initiative
Led by Daniil Kulchenko
The SilverStripe Initiative is a push to seek out and incorporate the most important features for addition into the SilverStripe codebase. We all know that SilverStripe is a very good CMS and framework. Now let's improve it!
GOALS
To improve SilverStripe, to seek out new features that increase the amount of users, without bloating the software. There is a perfect balance!
To increase the size of the SilverStripe community (you must realize that this type of growth is exponential, if people start to join the community, others will see the size of SS's user base and join as well).
To get more people involved with developing and contributing to SilverStripe. Let's use the Summer of Code to lure not just students, but everyone else as well!
To generate more SilverStripe documentation to help get users and developers alike on with SilverStripe.
IDEAS
These are my personal ideas on what can be done to improve SilverStripe. These are not requests, these are ideas on how we can all, including myself, do this together. Isn't that what open source is about? I might have listed things that are already implemented, so if I have, please correct me on that.
BTW, colors are as follows: RED means has not showed up in discussions yet. YELLOW means that it seems to be in production. GREEN means that a milestone has been set.
SILVERSTRIPE CORE
Get rid of the hardcoded-in stuff. How many times in the forums, in Trac, have we seen “we can't do that, it would involve changing it in all modules and everywhere”. That's not the way it should be. I mean, I'm not extremely familiar with SS's inner workings, but there has got to be a more flexible way. Some of the next ideas will rely on fixing this. It is important to be able to change something and not have to have to change it in everything that uses it.
Allow for custom URLs. Andrew Short has done great work with the nestedurls branch so far, and the work is being integrated in 2.4.0 alpha. It really makes a difference to be able to have more than one layer of URL. Now that that is behind us, let's move on to even further SEO. We should be able to have the URL of our choosing (/content/blah/foo/bar), without having to have a real /content or blah or foo or bar. As I see it, there's 2 ways to implement this: 1. Create a container page type, a page that does not really exist, and reports 404 like any nonexistant page, but is used for the URL and 2. Allow custom URL aliases as in Drupal in the Path module. Number 2 can be implemented by simply checking for the alias in the database before passing it off for normal processing. Number 1 is definitely easier to implement than 2, however.
Custom administrative URLs. What if I want a different URL than Security/login for my login page, something other than /admin, something other than ForumMemberProfile? I don't think http://silverstripe.org/ForumMemberProfile/whatever looks very good. How about /forum/profile/user? We should get to choose. There was a ticket about this somewhere, but I can't find it now.
Module activation/management. This shouldn't be too hard to implement. A simple module browser that lists all the modules, and allows you to activate/deactivate them. Simple, but important.
Separate folder for modules. Very simple. Instead of intermixing all the modules in with the rest of the folder at root, modules should just be in a separate folder. That actually sounds easier than keeping them in the same folder as everything else.
Theme browser/chooser. Also very simple. Have a way to change the theme without going into the configuration file, just by going to a “Themes” page. The users should really not have to go into config files to change stuff.
Administration area redesign. The tabbed design is nice, of course, but if you start installing plugins, it just stops working, and your display looks cluttered. The problem is, SS is designed in a very nice way where the page list is always on the left, which is very convenient. I can't think of a way to redesign this in such a way to keep this intact, because the designs of all the other CMSes do not work in this case. ModX's two layer menu would work here, so we could incorporate something like that.
Apply All button. Basically a way to make the published site the same as the draft size. If you've been making a lot of edits, and just want to change everything, publishes/edits/deletes/whatever, this would be nice.
INSTALLATION
Allow database prefixes (2.4.0 beta). I use one database for all of the software running on my server. This means that the database is bloated with tons of tables that I don't need. With a prefix, I can have more than one install of X software in one database. When I uninstall X software, I can get rid of it with one simple SQL command. I can see in a nice layout which tables belong to what. It would be great to be able to see the ability to select a table prefix upon installation. All major CMSes currently allow you to do so. See ticket #1944 (http://open.silverstripe.org/ticket/1944) for more info.
Individual modules, additional modules (wiki),
WISHFUL THINKING (SOMEDAY/MAYBE)
A built-in theme/plugin installer (WordPress style). Speaks for itself, but a way to upload a zip file and install a plugin, or to select it from the list which is pulled from silverstripe.org.
A SilverStripe open book. I might even help write this one, but a book in the Subversion book style, which is available freely online, and the community can help improve it, but is also available in print format for those who want it that way. The open book standard is great, and again, I could help write a SS book.
IMPLEMENTING
If the SS community pitches in, I bet we can implement this initiative by March 16, 2010, exactly a year from today. This is what I see SilverStripe 3.0 as being. According to Trac, and random forum discussions, a lot of this might get implemented by 2.4.0. Only time, and planning can tell. Some of these features are not as important as others, and the “Wishful Thinking” section might not get implemented at all, but with SoC coming up, we can work together and do this. I can't participate in SoC, I'm only 13, but I can donate part of my summer to volunteering on this. I've you've got suggestions to this document, additions, or corrections, post them on the forum, or edit the document yourself (the link is below). Together, we can improve SilverStripe.