Something we're going to want to do in v2.1 is include some sort of facility for:
* Upgrading your version of SilverStripe
* Installing add-on modules
* Upgrading those add-on modules
A slightly unorthodox, but potentially very good, solution is to use Subversion. Basically, what we would do is leave all the .svn files in the published release, set to check out a particular "tag" of the code.
If people wanted to upgrade from v2.0 to v2.1, we could just call the appropriate "svn update" command. Similarly, for installing add-on modules, we could call the appropriate "svn checkout" command.
This approach has the following advantages:
* All the code for downloading releases and maintaining a repository of those releases comes out of the box, including incremental downloads.
* It will be very easy for people to switch to a "nightly build", as releases will come straight from our version tracker. This could help grow our testing community, and mean that people can access the "bleeding edge" features if they want them.
* If people make changes to core files on their system, upgrading won't overwrite them. This is a big pain with other open source systems I've used - you very often wind up need to tweak a file or two to get it working well in your environment.
What do people think?