[Monodevelop-devel] Feedback wanted: Settings and data storage locations

Rafael Teixeira monoman at gmail.com
Fri Jan 22 09:11:23 EST 2010

Just a comment on supportting mutliple versions of MD.

In Windows it is very common to have many versions of VisualStudio, as
they've made it hard to compile old solutions in a really compatible
way (they are changing the look of  things with VS2010 that, as newer
versions of MD, can compile targetting different versions of the
framework), but I still have 4 versions of VisualStudio in my
workstation (2003, 2005, 2008 and 2010 beta)  and 3 on our build
servers (no 2010 beta), and they open correctly their respective
solutions/projects and don't interfere with each other (In truth .sln
files are associated with a helper VisualStudio-Version auto-selector

Said that, I don't think MD needs to support multiple released
versions installed side-by-side, but it would be nice if a development
(or preview/beta release), could be installed to another prefix and
could take it in account to keep per-user data in a separate root:

For instance a development build installed to \usr\local prefix could
use \usr\local\home\$User\ or perhaps \home\$User\.local\
in linux. Or perhaps, all your suggested paths would use
MonoDevelopPreview instead of MonoDevelop, for non-release builds.

That would allow to also concoct tests for configuration migration
between versions of MD and of independently released addins, even
after your proposed wholesale migration.

Just my thoughts,

Rafael "Monoman" Teixeira
"To be creative means to be in love with life. You can be creative
only if you love life enough that you want to enhance its beauty, you
want to bring a little more music to it, a little more poetry to it, a
little more dance to it."

On Fri, Jan 22, 2010 at 3:25 AM, Michael Hutchinson
<m.j.hutchinson at gmail.com> wrote:
> Hi all,
> I'm seeking feedback on a proposal to change the locations in which
> MonoDevelop stores data. This affects all users, so please have your
> say!
> Historically MonoDevelop has stored all data, cache, settings, etc. in
> a subdirectory of
> Environment.GetFolderPath (Environment.SpecialFolder.ApplicationData).
> Typically on Linux/Mac this is /home/$USER/.config/MonoDevelop/ and on
> Windows Vista/7 it's C:\Users\$USER\AppData\Roaming\MonoDevelop\. The
> path has been accessible via PropertyService.ConfigPath, for addins to
> determine where to store their own data.
> There are a few problems here. Firstly, it's not clear to the user
> which data need to be backed up and which can be regenerated. It's not
> particularly well-structured if one ever needs to look in the
> directory and find things. On Windows, all data is in the roaming
> profile, which is inefficient with network logins. And on Mac, this
> doesn't match the standard ~/Library subdirectories for caches, prefs,
> etc.
> I therefore propose that we add more granular locations for different
> types of data. Since the migration will be a pain and we will have to
> review and set up migrations for all current uses, we may as well get
> it *right* first time so it only needs to be done once.
> * UserPreferencesPath: current preferences/settings
>  Lin: ~/.config/MonoDevelop/Preferences
>  Mac: ~/Library/Preferences/MonoDevelop/
>  Win: ~\AppData\Roaming\MonoDevelop\ Preferences
> * UserDataRoot: Root location for data files created or modifiable by
> the user, such as templates, snippets and color schemes.
>  Lin: ~/.config/MonoDevelop/
>  Mac: ~/Library/MonoDevelop/
>  Win: ~\AppData\Roaming\MonoDevelop\
> * UserCachePath: cached data that can be regenerated
>  Lin: ~/.share/local/MonoDevelop/Cache
>  Mac: ~/Library/Cache/MonoDevelop/
>  Win: ~\AppData\Local\MonoDevelop\Cache
> * UserLogsPath: MD log output and anything similar from addins
>  Lin: ~/.share/local/MonoDevelop/Logs
>  Mac: ~/Library/Logs/MonoDevelop/
>  Win: ~\AppData\Local\MonoDevelop\Logs
> * UserAddinsPath: addin registry and user-installed addins
>  Lin: ~/.share/local/MonoDevelop/Addins
>  Mac: ~/Library/Application Support/MonoDevelop/
>  Win: ~\AppData\Local\MonoDevelop\Addins
> In summary, the contents of UserPreferencesPath and UserDataRoot
> should be backed up.
> I also intend to add FileService.MigratePath (string
> oldRelativeConfigPath, string newFullPath, bool removeEmpty) call that
> can be used to migrate files and folders from an old path to a new
> path. This can be used to move files and directories to the new
> locations.
> There is also the question of whether some of these directories should
> be versioned so that multiple MD versions can be used in parallel on
> one user profile. I don't think it's worth the maintenance burden; in
> general we've only ever supported forward migrations properly. Perhaps
> we should have an error message if you try to run MD with too-new
> settings/data formats, or alter all the location properties to point
> to some dummy temp location so you can run the older version without
> corrupting your newer settings.
> You can see the current patch at http://monobin.com/__d215cffd5 if
> you're curious.
> --
> Michael Hutchinson
> http://mjhutchinson.com
> _______________________________________________
> Monodevelop-devel-list mailing list
> Monodevelop-devel-list at lists.ximian.com
> http://lists.ximian.com/mailman/listinfo/monodevelop-devel-list

More information about the Monodevelop-devel-list mailing list