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

Martin Olsson mnemo at minimum.se
Sat Jan 23 11:58:07 EST 2010

I didn't read the original post, but I hope you read and
considered these:


Also please partition preferences etc so that multi machine
cloud synchronization becomes easy.


Michael Hutchinson 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.

More information about the Monodevelop-devel-list mailing list